Dubbo - 为什么要选择使用zookeeper做为注册中心?

时间:2024-03-16 21:02:13

Dubbo(可参考 - 具体就不在介绍了):
            https://blog.csdn.net/qq_42986107/article/details/85042243
 
Dubbo注册中心目前支持4种注册中心(管理服务): multicast , zookeeper , redis , simple !
策略成熟度:
Dubbo - 为什么要选择使用zookeeper做为注册中心?

一、Zookeeper注册中心?

1.zookeeper概述.

        官方(Dubbo注册中心)推荐使用 zookeeper注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
 
        Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境。

Dubbo - 为什么要选择使用zookeeper做为注册中心?
注册程序说明:
服务提供程序启动时:在目录下写入服务URL地址: /dubbo/com.foo.BarService/providers
服务使用者启动时:订阅/dubbo/com.foo.BarService/providers提供者的URL地址。
                                同时,写下消费者的URL地址/dubbo/com.foo.BarService/providers。
监控中心启动时:订阅/dubbo/com.foo.BarService所有提供商和消费者的URL地址。

 

2.为什么选择zookeeper做注册中心?

       Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听。这些特点决定了zk特别适合作为注册中心(数据发布/订阅)。

 

3.zookeeper的优势:

1.当提供程序意外停止时,注册表服务器可以自动删除其信息。
2.注册表服务器重新启动时,可以自动恢复所有注册数据和订阅请求。
3.会话过期后,可以自动恢复所有注册数据和订阅请求。

 

4.如何使用zookeeper?

在提供者和使用者中添加zookeeper客户端依赖关系:

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.3.3</version>
</dependency>

二、Redis注册中心?

1.Redis概述?

               Redis是一个高效的Key-Value存储服务器,通过心跳的方式检测脏数据,服务器时间必须相同,并且对服务器有一定压力。

2.redis的数据结构:

使用Redis的Key/Map结构存储数据。
       主Key为服务名和类型。
       Map中的Key为URL地址。
       Map中的Value为过期时间

3.redis存在的问题?

redis是通过发布订阅模式完成消息的通知 但是存在几个问题:

1.服务的非自然下线需要监护中心来维护
2.redis做注册中心服务器时间必需同步,否则出现时间不对被强制过期(删除key)!
3.zookeeper支持监听,redis不支持,因此需要客户端启动多个线程进行订阅监听,对服务器有一定压力!