【Distributed System】Dubbo 入门

Posted by 西维蜀黍 on 2019-07-10, Last Modified on 2021-09-21

Dubbo

  • 服务,就是远程server启动一个服务,来处理client的调用。
  • 调用服务,顾名思义,一般使用rpc,简单方便,通过代理调用,跟调用普通对象方法一样。
  • 协议,client调用服务,实际上就是client与server之间的一次通讯,协议就是定义通讯的标准,以便双方可以正常的发送/接受/组织/识别数据数据等,包含如传输的子协议,序列化的技术等等。
  • 服务识别,就是说client要知道服务在台机器上,这样client才能调用服务。单机服务直接写死一个ip+port就行了,但是分布式服务,还需要支持动态扩容的话,就得需要一种机制来时刻给client通知最新的服务分布在哪些机器上。一般使用单独注册中心来管理与通知这些服务分布情况。
  • 均衡负载,就是说服务一般由多个server来提供,要将请求均摊到各个server中,一般是在client端实现的,是结合2调用服务 + 4服务识别来实现的。
  • 总结:最简单的理解就是 dubbo = rpc + 注册中心

dubbo为什么需要和zookeeper结合使用,zookeeper在dubbo体系中起到什么作用?

dubbo是一个prc远程服务调用框架,需要一个注册中心去管理每个服务的集群。zookeeper在dubbo中扮演一个注册中心的角色(当然也可以不选择zookeeper),zookeeper用来注册服务和进行负载均衡。

哪一个服务由哪一个机器来提供,必须让调用者知道。也就是ip地址和服务名对应关系。也可以把这种对应关系通过硬编码的方式加在调用者的业务中,但是一旦提供的服务挂掉调用者无法知晓。zookeeper通过心跳机制来检测并将挂掉的机器从列表中删除。可以在不更改代码的情况下通过添加机器来解决高并发。

Reference