欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dubbo基于Zookeeper实现分布式服务

程序员文章站 2022-05-07 14:29:54
...

Dubbo基于Zookeeper实现分布式服务

   点关注不迷路,欢迎再访!		

一、dubbo是什么?

既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用。下图为例:

Dubbo基于Zookeeper实现分布式服务
以前什么的都在一个服务器上,调用方法直接就自然而然调用了,没啥问题。现在因为需求增多拆分了这么多个,部署在不同的服务器上,那是不是相对以前都在一个服务器上,现在分布式后,web层调用service层的服务变成了远程调用?那怎样像以前那样都在一个服务器上自然而然调用方法呢?dubbo来解决。这就是下面dubbo的好处。

二、Dubbo的好处?

  • 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  • 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
  • 服务提供者和服务消费者只需要知道注册中心即可,它们之间打交道需通过注册中心这个第三方,只要是注册中心中已经注册的服务,我们均可以使用,实现了服务提供者和服务消费者间的解耦。

三、dubbo架构图

讲解架构图之前,我们先普及下几个概念。

Provider(生产者): 暴露服务的服务提供方。
Consumer(消费者): 调用远程服务的服务消费方。

如图,我们可以简单理解为web1234是消费者,service1234是生产者。
Dubbo基于Zookeeper实现分布式服务
你看着晕不晕?晕不晕?晕不晕?反正我是晕了,万一分布式得更多呢?,所以我们需要Registry(注册中心): 服务注册与发现的注册中心。

dubbo推荐的是zookeeper。什么是zookeeper?
zookeeper是用于分布式中一致性处理的框架。其实就是个框架,是一致性处理用的。简单的讲,zookeeper就是起到中介作用,卖楼的(生产者)把楼盘信息放在中介(注册中心)那里,想买楼的(消费者)去中介那里获得楼盘资源清单。于是,我们的图变成了这样:
Dubbo基于Zookeeper实现分布式服务
是不是好很多了?还不够, 我们还需要个监控中心(干嘛用的?当然是监控用的,调用失败怎么办?挂了怎么办?): Monitor: 统计服务的调用次调和调用时间的监控中心。

最终dubbo架构,如图(从0开始看起):
Dubbo基于Zookeeper实现分布式服务

0. 服务容器负责启动,加载,运行服务提供者。

1. 服务提供者(生产者)在启动时,向注册中心注册自己提供的服务。

2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

相关标签: Dubbo