Distributed-zookeeper-切换数据库连接

ConnectDb

public class ConnectDb {
    private static String url = null;
    private static String driverClass = null;
    private static String username = null;
    private static String password = null;

    public static Connection getConnection(String url, String driverClass, String username, String password)
            throws Exception {

        Class.forName(driverClass);

        Connection connection = DriverManager.getConnection(url, username, password);

        return connection;
    }

    public static void main(String[] args) throws Exception {

        String zkServers = "192.168.198.100:2181"; // ip:端口,多台机器之间用逗号(,)隔开

        System.out.println("main1111111");
        final ZkClient zkClient = new ZkClient(zkServers, 1000000, 500000);
        System.out.println("main2222222");

        if (!zkClient.exists("/db")) {

            zkClient.createPersistent("/db");
            zkClient.createPersistent("/db/url", "jdbc:mysql://10.95.101.110:8888/offer_0");
            zkClient.createPersistent("/db/driverClass", "com.mysql.jdbc.Driver");
            zkClient.createPersistent("/db/username", "root");
            zkClient.createPersistent("/db/password", "vmpQl@caigou888");
        }
        System.out.println("main333333333");
        url = zkClient.readData("/db/url");
        driverClass = zkClient.readData("/db/driverClass");
        username = zkClient.readData("/db/username");
        password = zkClient.readData("/db/password");
        System.out.println("url=" + url + "&driverClass=" + driverClass);

        Connection connection = getConnection(url, driverClass, username, password);

        System.out.println(connection + "=111111111");

        // 监控/db节点
        zkClient.subscribeDataChanges("/db/url", new IZkDataListener() {
            // 当/db/url节点被删除时触发
            public void handleDataDeleted(String arg0) throws Exception {
                System.out.println("subscribeDataChanges=222222222");
            }

            // 当/db/url节点被修改时触发
            public void handleDataChange(String arg0, Object arg1) throws Exception {
                url = zkClient.readData("/db/url");
                driverClass = zkClient.readData("/db/driverClass");
                username = zkClient.readData("/db/username");
                password = zkClient.readData("/db/password");

                System.out.println("=333333");
                Connection connection = getConnection(url, driverClass, username, password);
                System.out.println(connection + "=4444444");
            }
        });

        // 与server保持连接
        while (true) {
            TimeUnit.SECONDS.sleep(5);
        }
    }

}

ZKModify

public class ZkModify {

    public static void main(String[] args) {

        String zkServers = "192.168.198.101:2181";
        ZkClient zkClient = new ZkClient(zkServers, 10000, 5000);

//        zkClient.deleteRecursive("/db");
        zkClient.delete("/db/url");

//        zkClient.writeData("/db/driverClass", "com.mysql.jdbc.Driver");
//        zkClient.writeData("/db/username", "root");
//        zkClient.writeData("/db/password", "321456");
//        zkClient.writeData("/db/url", "jdbc:mysql://10.95.101.110:8888/offer_02");

    }
}

猜你喜欢

转载自blog.csdn.net/yulong1026/article/details/80992210