服务注册 Zookeeper

服务注册 Zookeeper

1、配置并启用 Zookeeper

# application.yml
dubbo
 registry
   address: zookeeper://localhost:2181
# dubbo.properties
dubbo.registry.address=zookeeper://localhost:2181
<dubbo:registry address="zookeeper://localhost:2181" />

address 是启用 zookeeper 注册中心唯一必须指定的属性,而在生产环境下,address 通常被指定为集群地址,如

address=zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181

protocol 与 address 分开配置的模式也可以,如

<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />

2、高级配置

1、认证服务

如果 Zookeeper 开启认证,Dubbo 支持指定 username、password 的方式传入身份标识。

# application.yml
dubbo
 registry
   address: zookeeper://localhost:2181
   username: hello
   password: 1234

2、分组隔离

通过指定 group 属性,可以在同一个 Zookeeper 集群内实现微服务地址的逻辑隔离。比如可以在一套集群内隔离出多套开发环境,在地址发现层面实现隔离。

# application.yml
dubbo
 registry
   address: zookeeper://localhost:2181
   group: daily1

3、配置过期时间

配置连接、会话过期时间

# application.yml
dubbo
 registry
   address: zookeeper://localhost:2181
   timeout: 30 * 1000* # 连接超时时间,默认 30s
   session: 60 * 1000* # 会话超时时间,默认 60s

配置大全:

注册中心配置。

对应的配置类: org.apache.dubbo.config.RegistryConfig。同时如果有多个不同的注册中心,可以声明多个 <dubbo:registry> 标签,并在 <dubbo:service><dubbo:reference>registry 属性指定使用的注册中心。

属性 对应URL参数 类型 是否必填 缺省值 作用 描述 兼容性
id string 可选 配置关联 注册中心引用BeanId,可以在<dubbo:service registry=“”>或<dubbo:reference registry=“”>中引用此ID 1.0.16以上版本
address host:port string 必填 服务发现 注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心,请配置多个dubbo:registry标签 1.0.16以上版本
protocol string 可选 dubbo 服务发现 注册中心地址协议,支持dubbo, multicast, zookeeper, redis, consul(2.7.1), sofa(2.7.2), etcd(2.7.2), nacos(2.7.2)等协议 2.0.0以上版本
port int 可选 9090 服务发现 注册中心缺省端口,当address没有带端口时使用此端口做为缺省值 2.0.0以上版本
username string 可选 服务治理 登录注册中心用户名,如果注册中心不需要验证可不填 2.0.0以上版本
password string 可选 服务治理 登录注册中心密码,如果注册中心不需要验证可不填 2.0.0以上版本
transport registry.transporter string 可选 netty 性能调优 网络传输方式,可选mina,netty 2.0.0以上版本
timeout registry.timeout int 可选 5000 性能调优 注册中心请求超时时间(毫秒) 2.0.0以上版本
session registry.session int 可选 60000 性能调优 注册中心会话超时时间(毫秒),用于检测提供者非正常断线后的脏数据,比如用心跳检测的实现,此时间就是心跳间隔,不同注册中心实现不一样。 2.1.0以上版本
zone zone string 可选 服务治理 注册表所属区域,通常用于流量隔离 2.7.5以上版本
file registry.file string 可选 服务治理 使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储 2.0.0以上版本
wait registry.wait int 可选 0 性能调优 停止时等待通知完成时间(毫秒) 2.0.0以上版本
check check boolean 可选 true 服务治理 注册中心不存在时,是否报错 2.0.0以上版本
register register boolean 可选 true 服务治理 是否向此注册中心注册服务,如果设为false,将只订阅,不注册 2.0.5以上版本
subscribe subscribe boolean 可选 true 服务治理 是否向此注册中心订阅服务,如果设为false,将只注册,不订阅 2.0.5以上版本
dynamic dynamic boolean 可选 true 服务治理 服务是否动态注册,如果设为false,注册后将显示为disable状态,需人工启用,并且服务提供者停止时,也不会自动取消注册,需人工禁用。 2.0.5以上版本
group group string 可选 dubbo 服务治理 服务注册分组,跨组的服务不会相互影响,也无法相互调用,适用于环境隔离。 2.0.5以上版本
version version string 可选 服务发现 服务版本 1.0.0以上版本
simplified simplified boolean 可选 false 服务治理 注册到注册中心的URL是否采用精简模式的(与低版本兼容) 2.7.0以上版本
extra-keys extraKeys string 可选 服务治理 在simplified=true时,extraKeys允许你在默认参数外将额外的key放到URL中,格式:“interface,key1,key2”。 2.7.0以上版本
useAsConfigCenter boolean 可选 服务治理 该注册中心是否作为配置中心使用 2.7.5以上版本
useAsMetadataCenter boolean 可选 服务治理 该注册中心是否作为元数据中心使用 2.7.5以上版本
accepts accepts string 可选 服务治理 该注册中心接收rpc协议列表,多协议用逗号隔开,例如dubbo,rest 2.7.5以上版本
preferred preferred boolean 可选 服务治理 是否作为首选注册中心。当订阅多注册中心时,如果设为true,该注册中心作为首选 2.7.5以上版本
weight weight int 可选 性能调优 注册流量权重。使用多注册中心时,可通过该值调整注册流量的分布,当设置首选注册中心时该值不生效 2.7.5以上版本
registerMode register-mode string 可选 all 服务治理 控制地址注册行为,应用级服务发现迁移用。 * instance 只注册应用级地址; * interface 只注册接口级地址; * all(默认) 同时注册应用级和接口级地址; 3.0.0以上版本
enableEmptyProtection enable-empty-protection boolean 可选 true 服务治理 是否全局启用消费端的空地址列表保护,开启后注册中心的空地址推送将被忽略,默认 true 3.0.0以上版本
parameters Map<string, string> 可选 服务治理 扩展预留,可扩展定义任意参数,所有扩展参数都将原样反映在 URL 配置上 2.0.0以上版本

3、Zookeeper 节点结构

在这里插入图片描述

流程:

  • 服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址。
  • 服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
  • 监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。

支持以下功能:

  • 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
  • 当注册中心重启时,能自动恢复注册数据,以及订阅请求
  • 当会话过期时,能自动恢复注册数据,以及订阅请求
  • 当设置 <dubbo:registry check="false" /> 时,记录失败注册和订阅请求,后台定时重试
  • 可通过 <dubbo:registry username="admin" password="1234" /> 设置 zookeeper 登录信息
  • 可通过 <dubbo:registry group="dubbo" /> 设置 zookeeper 的根节点,不配置将使用默认的根节点。
  • 支持 * 号通配符 <dubbo:reference group="*" version="*" />,可订阅服务的所有分组和所有版本的提供者

4、注册中心的实质

注册中心实质上是一个集中存储和管理服务元数据信息的组件。它在Dubbo框架中扮演着重要角色,用于实现服务的注册、发现和通知。

具体来说,注册中心是一个独立的服务,它维护着一个服务目录,记录了可用的服务提供者的地址、协议、调用方式等信息。服务提供者在启动时,会向注册中心注册自己提供的服务,并定期发送心跳保持连接。而服务消费者则可以通过注册中心查询和订阅自己所需的服务,获取可用的服务提供者列表。

注册中心的实质可以是多种不同的实现,Dubbo框架支持多种注册中心,如Zookeeper、Redis、Multicast、Simple等。不同的注册中心实现方式可能有所差异,但其核心功能都是提供服务的注册、发现和通知功能。

所需的服务,获取可用的服务提供者列表。

注册中心的实质可以是多种不同的实现,Dubbo框架支持多种注册中心,如Zookeeper、Redis、Multicast、Simple等。不同的注册中心实现方式可能有所差异,但其核心功能都是提供服务的注册、发现和通知功能。

总而言之,注册中心的实质是一个集中管理服务元数据信息的组件,它提供了服务的注册和发现功能,帮助服务提供者和消费者之间实现解耦和动态扩展,从而构建一个高可用、弹性和可伸缩的分布式服务架构。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 08:22:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 08:22:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 08:22:05       82 阅读
  4. Python语言-面向对象

    2024-04-08 08:22:05       91 阅读

热门阅读

  1. 2024.4.7力扣刷题记录-数组篇刷题记录2

    2024-04-08 08:22:05       36 阅读
  2. 蓝桥杯常用模板

    2024-04-08 08:22:05       31 阅读
  3. 设计模式:生活中的迭代器模式

    2024-04-08 08:22:05       33 阅读
  4. [iOS]进程-线程-队列-任务

    2024-04-08 08:22:05       29 阅读
  5. Vue 打包自动清理缓存

    2024-04-08 08:22:05       35 阅读
  6. 清明节作业

    2024-04-08 08:22:05       37 阅读
  7. Python列表排序

    2024-04-08 08:22:05       36 阅读
  8. 面试题Spring、SpringMVC、SpringBoot、SpringCloud

    2024-04-08 08:22:05       43 阅读
  9. ASTM F2613-19儿童折叠椅和凳子安全标准

    2024-04-08 08:22:05       36 阅读
  10. NLP学习路线总结

    2024-04-08 08:22:05       38 阅读
  11. Hive SchemaTool 命令详解

    2024-04-08 08:22:05       42 阅读