Dubbo+Zookeeper集群案例
2020-06-09 16:01:32来源:博客园 阅读 ()
Dubbo+Zookeeper集群案例
一.开源分布式服务框架
1.Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:①面向接口的远程方法调用;②智能容错和负载均衡;③服务自动注册和发现。2.结构图
节点角色说明:
Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次数和调用时间的监控中心。 Container: 服务运行容器。调用关系说明
0服务容器负责启动,加载,运行服务提供者provider。 1服务提供者provider在启动时,(通过连接服务器的client)向注册中心注册自己可以提供的服务。(其实就是注册一些provider自己的ip:port以及对自己提供的服务的描述,比如能干什么!) 2服务消费者consumer在启动时,向注册中心订阅自己所需的服务。并注册自己的ip:port等信息。 3注册中心返回服务提供者provider地址列表给消费者consumer,如果有变更,注册中心将基于长连接推送变更数据给消费者consumer。 4服务消费者consumer,从注册中心返回的提供者provider地址列表中,基于软负载均衡算法,选一台提供者provider进行调用,如果调用失败,再选另一台调用。 5服务消费者consumer和提供者provider,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心monitor。 Dubbo 架构具有以下几个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性。二.Dubbo作用
dubbo其实就是一个中间层管理工具,他是一个框架,里面可以装你想装的服务,一般注册中心大多用zookeeper,当然除了zookeeper,还要Redis等也可以做注册中心。三.Dubbo+Zookeeper(注册中心使用Zookeeper),Zookeeper其实是树状结构。
1.可以把register理解成房产中介,provider是卖房的人,张三想卖掉自己在秦淮区的学区房,李四想卖掉自己在栖霞区的学区房,consumer王五是想在栖霞区买学区房给自己孩子上学,王五去中介咨询后,中介返回给王五的需求 满足者是李四,王五从中介那得到李四的电话,自己打电话找李四买房。
比如Provider注册的是 192.168.1.(描述121是吃饭,122睡觉,123打游戏,124健身四种不同的服务) 2-0、 、dubbo--这是dubbo在ZooKeeper上创建的根节点 /dubbo 2-1 、 Dubbo在Zookeeper上注册的节点目录:假设接口名称是:com.bob.dubbo.service.CityDubboService。 这是服务节点,代表了Dubbo的一个服务 /dubbo/com.bob.dubbo.service.CityDubboService 2-2 、 Dubbo启动时,Consumer和Provider都会把自身的URL格式化为字符串,然后注册到zookeeper相应节点下,作为一个临时节点,当连断开时,节点被删除。 这是服务提供者的根节点,其子节点代表了每一个服务真正的提供者/dubbo/com.bob.dubbo.service.CityDubboService/providers 这是服务消费者的根节点,其子节点代表每一个服务真正的消费者;/dubbo/com.bob.dubbo.service.CityDubboService/consumers 2-3、 Consumer在启动时,不仅仅会注册自身到 …/consumers/目录下,同时还会订阅…/providers目录下所有子节点,具体的看你订阅具体是哪一个节点(比如订阅健身这些服务),实时获取其上Provider的URL字符串信息。register返回给Consumer这个ip--192.168.1.124,Consumer拿着这个iP直接去找Provider调用这项服务--健身。 2-4 、监控中心启动时订阅com.bob.dubbo.service.CityDubboService目录下的所有提供者和消费者URL。
四.Dubbo——Zookeeper补充:
支持以下功能:
当提供者出现断电等异常停机时,注册中心能自动删除提供者信息 当注册中心重启时,能自动恢复注册数据,以及订阅请求 当会话过期时,能自动恢复注册数据,以及订阅请求 当设置<dubbo:registry check="false" />时,记录失败注册和订阅请求,后台定时重试 可通过设置<dubbo:registry username="admin" password="124" />设置zookeeper 登录信息 可通过<dubbo:registry group="dubbo" />设置 zookeeper 的根节点,不设置将使用无 根树 支持 * 号通配符 <dubbo:redistry group="*" version="*" />,可订阅服务的所有分组 和所有版本的提供者 补充: 消费者从ZK获取provider地址列表后,会在本地缓存一份。当ZK注册中心所有节点全部宕掉之后,消费者可以使用本地缓存的服务列表和provider进行通信。 ZK的意义在于为consumer和provider提供服务地址的发布/订阅服务,让消费者及时感知最新的服务列表,consumer真正调用provider是通过某种通信协议直接调用,并不依赖ZK。 所以当zookeeper宕机之后,不会影响消费者调用服务提供者,影响的是zookeeper宕机之后如果提供者有变动,增加或者减少,zk无法把变更通知推送给consumer,consumer会因为感知不到变更时间,不去拉取最新的服务列表,导致本地缓存的服务列表有可能过时的。完结,个人理解,如有偏差,请大家指正,谢谢!
2020-06-09 10:58:28
原文链接:https://www.cnblogs.com/tenghw/p/13071220.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java--反射(框架设计的灵魂)案例 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
- 【从单体架构到分布式架构】(二)请求增多,单点变集群(1) 2020-06-07
- SpringBoot定时任务如何正确运用?案例详解 2020-06-05
- Java Spring注入一个接口的多个实现类在map里如何实现?案 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash