ZooKeeper Java客户端 Curator 连接docker上的zookeeper服务器--MyRPC_V5
·
Docker安装配置zookeeper服务器
使用了 Zookeeper 来存储服务的相关信息
//下载
docker pull zookeeper:3.5.8
// 运行
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.5.8
// 进入zookeeper的bash
docker exec -it $ContainerID /bin/bash
// 连接服务
cd bin
./zkCli.sh -server 127.0.0.1:2181
// 测试服务端
[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 1]
使用 ZooKeeper Java客户端 Curator ,对 ZooKeeper 进行增删改查等操作
<!--这个jar包应该依赖log4j,不引入log4j会有控制台会有warn,但不影响正常使用-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
定义zookeeper服务注册接口ServiceRegister。其两大基本功能
- 注册:保存服务与地址
- 查询:根据服务名查找地址
实现类
// curator 提供的zookeeper客户端
private CuratorFramework client;
// zookeeper根路径节点
private static final String ROOT_PATH = "MyRPC";
// 初始化zk客户端并与zk服务端建立链接
public ZkServiceRegister() {
// 通过 CuratorFrameworkFactory 创建CuratorFramework 对象,
// 然后再调用 CuratorFramework 对象的 start()方法即可!
}
@Override// 注册
public void register(String serviceName, InetSocketAddress socketAddress) {
// 把serviceName创建成永久节点CreateMode.PERSISTENT。
// 服务提供者下线时,不删服务名,只删地址
// 临时节点,服务器下线就删除节点
.withMode(CreateMode.EPHEMERAL)
}
@Override// 查询服务地址
public InetSocketAddress serviceDiscovery(String serviceName) {
client.getChildren()// 返回一个服务器的List
return 一个InetSocketAddress
}
客户端:改为从服务中心获取host和port
服务端:把自己的host和port给注册中心(serviceProvider)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)