上次讲到当dubbo不使用注册中心会出现的问题。这次讲解使用zookeeper作为注册中心的使用。
1.首先重点应该是理解zookeeper是什么?
zk就是台服务器,里边的代码主要实现,以树形结构存储数据。先把数据存储在内存中,定时把数据存储到磁盘中。
2.zookeeper集群?
一般zk本身就是一个集群,不然所有配置信息都在zk中,一但宕机,所有对应的服务都不能使用了。如图: zk中这5台服务器(Server)数据是存在一致性的(使用Zab协议,Zab协议是一个分布式的一致性算法),无论下边那个客户(client)访问那个服务都是一样的。当其中一台Server宕机后,zk执行选举机制(三种),选出新leader。
3.zk支持多应用公用?
不同应用在zk上存储数据是互不影响的,例如电脑中不同应用的数据放在不同的文件目录下。zk也是会创建一个新节点。
4.dubbo使用zk作为注册中心
上篇已经介绍过,不使用注册中心的配置。使用zk时,只需要更改provider.xml和customer.xml配置 provider.xml:
<!--<dubbo:registry address="N/A"/>-->
//使用zk集群,用,分隔
<dubbo:registry protocol="zookeeper" address="192.168.11.129:2181,192.168.11.137:2181,192.168.11.138:2
customer.xml:
//去掉url直联方式
<dubbo:reference interface="com.test.DemoService" id="demoServiceImpl"/>
这样:信息就注册到zk中了。消费者访问zk集群,会先通过负载均衡访问到其中一台server,然后会将服务列表缓存到本地,如果服务部署在多个服务器中,会使用负载均衡获取某一个服务信息(ip、端口号等)。然后进行tcp连接,调用远程服务器接口。 总结: 1.zk作为注册中心存在:数据存储在内存中(高性能)、可搭建集群(高可用)、支持事件监听等多种好处。 2.现在越来越多使用nacos作为注册中心。 3.zk还可以用做分布式锁
|