Vertica7 Native Connection Load Balance
Posted yjbjingcha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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端的设置就这么多,以下看看客户端须要哪些步骤。
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;
以上是关于Vertica7 Native Connection Load Balance的主要内容,如果未能解决你的问题,请参考以下文章
GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion ‘G_IS_DBUS_CONNECTION (connectio
GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion ‘G_IS_DBUS_CONNECTION (connectio
GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion ‘G_IS_DBUS_CONNECTION (connectio
GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion ‘G_IS_DBUS_CONNECTION (connectio
mysqlHikariCP不断打印WARN日志Failed to validate connection JDBC4Connectio Possibly consider using a shor