初步理解 Dubbo 与 Zookeeper

个人博客网:https://wushaopei.github.io/    (你想要这里多有)

一、dubbo 与 zookeeper 的本质及其关系?

Dubbo是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。

Zookeeper用来注册服务和进行负载均衡,哪一个服务有哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。

Dubbo和zookeeper的关系: dubbo会将注册中心进行抽象,使得它可以连接不同的存储媒介给注册中心提供服务,有zk、memcached、redis等。

二、关于Dubbo的服务调用原理:

  1. Dubbo在调用服务不成功时,默认会重试2次。可根据需求进行配置重试次数。

  2. 由于Dubbo的路由机制,会把超时的请求路由到其他机器上,而不是本机尝试,所以dubbo的重试机器也能一定程度的保证服务的质量。

  3. 注意:不合理的配置重试次数,当失败时会进行重试多次,可能在某个时间点出现性能问题,调用方再连续重复调用。此时系统请求变为正常值的retries倍,系统压力会大增,容易引起服务雪崩,需要根据业务情况规划好如何进行异常处理,合适进行重试。

三、Dubbo注册中心的介绍:

  • Dubbo的注册中心有好多种,包括Multicast、Zookeeper、Redis、Simple等。Dubbo官方推荐使用Zookeeper注册中心,我所使用过的也只是Zookeeper注册中心。
  • 如果说,为什么要使用 Zookeeper,那么我认为官方推荐是主要的原因,其次,是 Zookeeper 的技术栈的优越性。

简单介绍下 Zookeeper :

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper 的内部结构:

  • 是层次化的目录结构;每个节点叫znode,并且有一个唯一的路径标识;节点znode可以包含数据和子节点;客户端应用可以在节点上设置监视器。

由上图,可看出dubbo服务在zookeeper注册中心的物理序列。

详细的会有另一篇文章介绍。。。。。

四、Dubbo 的默认协议与配置

默认配置:

一般项目中,默认推荐使用 dubbo 协议;

自定义配置:

dubbo中可进行多协议配置:

配置方式如下:

<!-- 多协议配置 -->

     <dubbo:protocol name="dubbo" port="20880" />

      <dubbo:protocol name="rmi" port="20980" />

五、 Dubbo 的服务调用与升级

【1】生产者服务变化是消费者怎么去调用?

使用长连接;所谓长连接就是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。

使用watch机制监听服务端的变化。

【2】关于服务涉及到的升级是怎么进行处理的?

启动一个小应用,来执行Shell,那么这个应用一直以RMI方式监听来自Java应用的命令,根据相应的命令执行脚本。这样的话,用这个java进程去调用Shell命令杀死tomcat,并重启,以此达到系统升级的目的就不会有问题了。

六、dubbo服务开发流程,运行流程?zookeeper注册中心的作用?

使用流程:

第一步:要在系统中使用dubbo应该先搭建一个注册中心,一般推荐使用zookeeper。

第二步:有了注册中心然后是发布服务,发布服务需要使用spring容器和dubbo标签来发布服务。并且发布服务时需要指定注册中心的位置。

第三步:服务发布之后就是调用服务。一般调用服务也是使用spring容器和dubbo标签来引用服务,这样就可以在客户端的容器中生成一个服务的代理对象,在action或者Controller中直接调用service的方法即可。

  • Zookeeper注册中心的作用主要就是注册和发现服务的作用。类似于房产中介的作用,在系统中并不参与服务的调用及数据的传输。

七、 如何实现远程通信?

  1. Webservice:效率不高基于soap协议。项目中不推荐使用。
  2. 使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。
  3. 使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DubboZookeeper是两个不同的开源项目,但是它们可以一起使用来构建分布式系统。Dubbo是一个高性能的Java RPC框架,它可以帮助开发人员快速构建分布式应用程序。而Zookeeper是一个分布式协调服务,它可以帮助开发人员管理分布式系统中的节点和配置信息。在Dubbo中,Zookeeper通常用于服务注册和发现,Dubbo会将服务提供者的信息注册到Zookeeper中,消费者可以通过Zookeeper来发现可用的服务提供者。因此,DubboZookeeper是密切相关的,它们一起构成了一个完整的分布式系统。 ### 回答2: DubboZookeeper是两个分别由阿里巴巴和Apache基金会开发的分布式系统框架和服务发现框架,它们之间有密切的关系。 Dubbo提供了一种高度可扩展的RPC框架实现,它允许开发人员通过配置和编程的方式快速构建一个分布式服务架构,而Zookeeper则是一种高性能的分布式协调服务框架,主要用于分布式系统中服务的注册、配置、消息发布与订阅等功能,帮助开发人员实现服务之间的高效通信。 Dubbo通过使用Zookeeper来实现服务的注册和发现,这是Dubbo在服务发现方面的核心技术。Dubbo的服务提供端在启动时会将自己的服务信息(包括IP地址、端口号、服务接口、超时时间等)注册到Zookeeper上,并将服务提供端自己的地址加入服务提供者列表中。服务消费端也可以通过Zookeeper发现服务提供者地址列表,然后在本地进行远程服务调用。 在使用DubboZookeeper进行服务注册和发现时,Dubbo框架会利用Zookeeper的监听机制来实现服务的动态注册和删除。当服务提供者注册到Zookeeper时,Dubbo会在Zookeeper节点上创建对应的服务节点;当服务提供者关闭时,Dubbo也会自动从Zookeeper节点上删除对应的服务节点,从而实现了服务的动态发现和改变。 总之,DubboZookeeper之间的关系是密不可分的,在Dubbo中使用Zookeeper作为服务的注册中心能帮助我们维护服务之间的关系,更好地管理分布式系统中服务的发现与治理。 ### 回答3: DubboZookeeper是两个分布式应用程序开发中非常常用的开源框架。它们之间的关系非常密切,下面我将从以下几个方面分别进行阐述。 1. 服务注册和发现 DubboZookeeper的关系最主要的体现就是服务注册和发现的功能。在Dubbo框架中,每个服务都需要注册到Zookeeper上面,这样才能够被其他服务发现和调用。Zookeeper通过提供一个分布式文件系统,可以让各个服务之间进行相互协调和通信。DubboZookeeper的这种组合,在分布式服务治理、高可用和负载均衡等方面都有很好的实现。 2. 配置中心 Dubbo对于配置的管理一直都非常的注重,因此它也提供了一个配置中心的功能。Dubbo中的配置中心就是通过Zookeeper来实现的。通过将Dubbo的各个节点注册到Zookeeper上面,可以让Dubbo在动态获取配置时更加方便。同时,可以方便地进行配置的修改、下发和推送。 3. 集群管理 在Dubbo的集群管理中,也离不开Zookeeper的支持。Dubbo对于集群的管理主要包括负载均衡、容错和容灾等一系列机制。这样可以更好地保证服务的稳定性和可靠性。 总的来说,DubboZookeeper的关系非常密切,二者之间的结合为分布式应用程序开发带来了很大的便利。Dubbo通过将服务注册到Zookeeper中,实现了服务的管理和调用;而Zookeeper则提供了强大的文件系统支持,让Dubbo在服务治理、配置中心和集群管理等方面取得了很好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值