Dubbo + Zookeeper介绍


一、Dubbo

1.1 什么是Dubbo?

Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架。

它提供了三大核心能力:

面向接口的远程方法调用

智能容错和负载均衡

服务自动注册和发现

dubbo官网

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有条不紊的演进。

在Dubbo的官网文档有这样一张图:

传统网站架构向分布式架构过渡

该图显示了传统应用网站架构是如何向分布式架构过渡的

1.2 Dubbo 架构

服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。

服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消
费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

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

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

1.3 调用关系说明

调用关系说明

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

| 服务提供者在启动时,向注册中心注册自己提供的服务。

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

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

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

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

1.4 Dubbo说明

dobbo本身并不是一个软件。

它其实就是一个jar包,能够帮你的java程序连接到zookeeper注册中心,并利用zookeeper消费以及提供服务

但是为了让用户更好的管理和监控众多的dubbo服务,dubbo官方提供了一个可视化的监控程序—dubbo admin,不过这个监控程序不按照也不会影响dubbo的使用。

二、Zookeeper

2.1 什么是zookeeper?

​ 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

上面的解释有点抽象,简单来说 zookeeper=文件系统+监听通知机制

2.2 zookeeper的功能

1、文件系统

Zookeeper维护一个类似文件系统的数据结构:

img

每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

有四种类型的znode:

  • PERSISTENT-持久化目录节点

    客户端与zookeeper断开连接后,该节点依旧存在

  • PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点

    客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号

  • EPHEMERAL-临时目录节点

    客户端与zookeeper断开连接后,该节点被删除

  • EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点

    客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

2、监听通知机制

客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。

2.3 分布式应用配置管理举例

假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到系统中。

分布式应用举例

参考文献:

1、https://blog.csdn.net/java_66666/article/details/81015302?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163886867716780271586538%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163886867716780271586538&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81015302.first_rank_v2_pc_rank_v29&utm_term=zookeeper&spm=1018.2226.3001.4187

2、https://blog.csdn.net/qq_41819988/article/details/109606328?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%8B%82%E7%A5%9E%E8%AF%B4zookeep%20%E7%AC%94%E8%AE%B0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-109606328.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187


文章作者: JYong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 JYong !
评论
  目录
动态线条背景