ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.et</groupId>
<artifactId>zookeeper</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- Oracle驱动包 -->
<dependency>
<groupId>org.richard</groupId>
<artifactId>my-jar</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>H:\Oracle\ojdbc6.jar</systemPath>
</dependency>
<!-- MySQL驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependencies>
</project>
将数据库连接四要素交由zookeeper管理
package zookeeper;
import org.I0Itec.zkclient.ZkClient;
public class Update {
public static void main(String[] args) {
//连接zookeeper
String url = "localhost:2181";
ZkClient zk = new ZkClient(url,10000,10000);
/*spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver*/
zk.writeData("/persistent/db/url","jdbc:mysql://localhost/test");
zk.writeData("/persistent/db/username","root");
zk.writeData("/persistent/db/password","123456");
zk.writeData("/persistent/db/driverClassName","com.mysql.jdbc.Driver");
}
}
多台机器从zookeeper配置中心获取配置统一的配置信息
public class DBConnection {
static Connection con;
static {
/*spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
zk.createPersistent("/persistent/db/url");
zk.createPersistent("/persistent/db/username");
zk.createPersistent("/persistent/db/password");
zk.createPersistent("/persistent/db/driverClassName");
*/
//连接zookeeper
String zkurl = "localhost:2181";
ZkClient zk = new ZkClient(zkurl,10000,10000);
String url = zk.readData("/persistent/db/url");
String username = zk.readData("/persistent/db/username");
String password = zk.readData("/persistent/db/password");
String driverClassName = zk.readData("/persistent/db/driverClassName");
System.out.println(url);
System.out.println(username);
try {
Class.forName(driverClassName);
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(1);
}
}