Dubbo04【Zookeeper存储数据的数据信息】
Dubbo04【Zookeeper存储数据的数据信息】
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
数据存储结构
dubbo中的相关数据在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="" />,可订阅服务的所有分组和所有版本的提供者
具体结构说明
zookeeper中存储的dubbo数据分三级
序号 |
节点 |
说明 |
---|---|---|
1 |
根节点 |
dubbo |
2 |
一级子节点 |
提供服务的服务名 |
3 |
二级子节点 |
固定的四个子节点:分别为:consumers、configurators、routers、providers |
Consumers
存储服务消费者信息
属性 |
描述 |
---|---|
application |
应用名 |
category |
类型 |
check |
检查 |
dubbo |
dubbo版本 |
interface |
接口名称 |
methods |
接口方法名 |
pid |
进程号 |
side |
消费端或服务端 |
timestamp |
时间戳 |
Providers
存储服务提供者
[zk: localhost:2181(CONNECTED) 10] ls /dubbo/com.bobo.service.UserService/providers
[dubbo%3A%2F%2F192.168.88.1%3A20880%2Fcom.bobo.service.UserService%3Fanyhost%3Dtrue%26application%3DdubboProvider%26dubbo%3D2.5.3%26group%3Ddubbo%26interface%3Dcom.bobo.service.Us
erService%26methods%3DsayHello%2CtestPojo%26pid%3D21088%26revision%3D1.0.0%26side%3Dprovider%26timeout%3D3000%26timestamp%3D1553650370588%26version%3D1.0.0]
属性 |
描述 |
---|---|
anyhost |
true |
application |
应用名 |
dubbo |
dubbo版本 |
interface |
接口名称 |
methods |
接口方法名 |
pid |
进程号 |
side |
消费端或服务端 |
timestamp |
时间戳 |
Routers
路由规则
/dubbo/com.example.dubbo.service.CityService/routers/route://0.0.0.0/com.example.dubbo.service.CityService?category=routers&dynamic=false&enabled=true&force=false&name=cityservice&priority=10&router=condition&rule=method+=+findCityByName+&+consumer.host+=+192.168.198.1+=>+provider.port+=+20881+&+provider.port+!=+20880&runtime=false
属性 |
描述 |
---|---|
Category |
类型 |
Dynamic |
是否动态调整,false表示需要手动调整 |
Enabled |
是否启动 |
Force |
是否强制,false表示,如果没有匹配到则调用其它可调用的服务 |
Name |
路由名称 |
Priority |
优先级 |
Router |
condition符合条件则路由 |
访问控制:禁止某ip访问
/dubbo/com.example.dubbo.service.CityService/routers/route://0.0.0.0/com.example.dubbo.service.CityService?category=routers&dynamic=false&enabled=true&force=true&name=com.example.dubbo.service.CityService+blackwhitelist&priority=0&router=condition&rule=consumer.host=192.168.198.1=>false&runtime=false
属性 |
描述 |
---|---|
Category |
类型 |
Dynamic |
是否动态调整,false表示需要手动调整 |
Enabled |
是否启动 |
Force |
是否强制,false表示,如果没有匹配到则调用其它可调用的服务 |
Name |
路由名称 |
Priority |
优先级 |
Router |
路由规则IP为192.168.198.1的消费者禁止访问 |
Configrators
负载均衡和权重信息 负载均衡
/dubbo/com.example.dubbo.service.CityService/configurators/override://0.0.0.0/com.example.dubbo.service.CityService?category=configurators&dynamic=false&enabled=true&loadbalance=random
属性 |
描述 |
---|---|
Category |
类型 |
Dynamic |
是否动态调整,false表示需要手动调整 |
Enabled |
是否启动 |
Loadbalance |
负载均衡策略 |
权重
/dubbo/com.example.dubbo.service.CityService/configurators/override://192.168.198.1:20880/com.example.dubbo.service.CityService?category=configurators&dynamic=false&enabled=true&weight=200
属性 |
描述 |
---|---|
Category |
类型 |
Dynamic |
是否动态调整,false表示需要手动调整 |
Enabled |
是否启动 |
Weight |
权重 |
一:负载均衡
什么叫负载均衡?
简单的说,负载均衡就是可以把请求过来的http请求,分配到不同的tomcat上,来缓解只有一个tomcat的压力。对于很大的项目,都是分模块开发的,比如:一个项目中的用户模块可以单独拿出来放到一个tomcat上。每一个模块都可以放到一个服务器上。到了后期的时候,一个模块也很庞大了,放到一个服务器上也会有压力,这个时候,就引入了分布式服务的概念了。比如,把订单模块的service层分离,使用duboo来进行远程的调用。dubbo的作用就是调用远程的服务就像调用本地的服务一样。
二:dubbo和zookpeer的关系:
Dubbo建议使用zookeeper作为服务的注册中心
1.Zookeeper的作用:
Zookeeper的作用就是充当这个服务注册中心的,并且能负载均衡,作为服务方要提供服务就来ZP这个注册,消费方想获取服务就来ZP这获取服务,消费方是通过IP地址和服务器的对应关系来获取服务的。ZP通过心跳机制可以检测挂掉的机器,并把挂掉的机器的信息从服务列表中删除。
2.dubbo的作用:
是一个管理中间层的工具,他是一个框架,里面可以装你想装的服务,然后连接到一个分布式的注册中心,这个注册中心可以是Zookeeper,也可以是Memcached,Redis等。它把注册中心进行的抽象,可以连接不同的传输媒介在注册中心来提供和获取服务。
3.Zookeeper负载均衡的实现
单注册中心的承载能力是有限的,在流量达到一定的时候就需要分流,负载均衡就是为了分流而存在的,一个Zookeeper配合相应的web应用就可以很容易的达到负载均衡;光负载均衡还不够,节点之间的数据还没进行同步,Zookeeper天然就具有这样的功能。命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动 的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。 其他特性还有Mast选举,分布式锁等。
---------------------
作者:CAFEBABE丶
来源:CSDN
原文:https://blog.csdn.net/qq_34144916/article/details/80849401
版权声明:本文为博主原创文章,转载请附上博文链接!