zoukankan      html  css  js  c++  java
  • Vertica7 Native Connection Load Balance

    原文链接:Vertica7 Native Connection Load Balance


    在Vertica7曾经的版本号中,Vertica是通过Linux的Virtual IP来实现连接的负载均衡的,可是在Vertica7x中,Vertica本身提供了连接的负载均衡功能,这个功能用起来也是很方便的。以下就来看看怎么使用这个功能。


    1. 首先安装N个Vertica7的节点。然后用数据库管理员的身份执行以下的命令来让Vertica使用这个功能

    SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');

    假设须要disable这个功能,能够通过以下的命令
    SELECT SET_LOAD_BALANCE_POLICY('NONE');

    假设须要查看当前是否enable了这个功能能够使用以下的命令查看
    SELECT GET_LOAD_BALANCE_POLICY();

    server端的设置就这么多,以下看看客户端须要哪些步骤。



    2. 首先必须使用vertica7的JDBC驱动,能够从Vertica的官方站点上下载。

    3. 写个測试程序来測试连接,例如以下
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
     
    public class VerticaTest {
        private static String USERNAME = "<user>";
        private static String PASSWORD = "<password>";
        private static String URL = "jdbc:vertica://<ip>:5433/<db>";
         
        public static void main(String[] args) throws Exception {
            Class.forName("com.vertica.jdbc.Driver");
            Properties props = new Properties();
            props.put("user", USERNAME);
            props.put("password", PASSWORD);
            props.put("ConnectionLoadBalance", 1);
            for (int x = 1; x <= 10; x++) {
                try {
                    Connection conn = DriverManager.getConnection(URL, props);
                    Statement stmt = conn.createStatement();
                    ResultSet rs = stmt.executeQuery("SELECT node_name FROM v_monitor.current_session;");
                    rs.next();
                    System.out.println("Connected to node " + rs.getString(1).trim());
                    conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }

    这里特别注意以下一句,这一句设置了一个连接属性告诉Vertica的JDBC驱动使用负载均衡功能。

    props.put("ConnectionLoadBalance", 1);

    这里特别说一下,假设server上没有enable负载均衡功能,那么这个属性也不会影响正常的功能。仅仅只是不使用负载均衡功能罢了。


    另外也能够通过设置url属性来实现。例如以下:

    "jdbc:vertica://<ip>:5433/<db>?ConnectionLoadBalance=1"


    4. 測试
    执行这段代码,能够看到每次连接到的Vertica节点都会依照顺序变动。

    另外也能够通过以下的sql来查询当前全部连接的情况。

    select node_name, client_hostname from sessions;




  • 相关阅读:
    delphi shr和shl的作用
    delphi socket 编程 使用多线程
    mysql 移除服务,并在cmd下切换目录
    delphi 结构体和TList的用法
    delphi 使用工控机控件 iThreadTimes 出现问题, 导致主程序创建页面的时候, 阻塞消息, 不能正常执行。
    Unicode 和 UTF-8 的区别
    Python 模块 re (Regular Expression)
    Python的函数式编程
    反向解析与PTR(Pointer Record)
    simhash算法
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6782859.html
Copyright © 2011-2022 走看看