Apache Dubbo & 服务注册中心Zookeeper

1.Dubbo简介

Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成

什么是RPC?

通信的两种方式:http,rpc

RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据

对应的是本地过程调用:在一台电脑上,A方法调用B方法

需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用的过程

 RPC是一个泛化的概念,严格来说一切远程调用手段都属于RPC范畴。各种开发语言都有自己的RPC框架。Java中RPC框架比较多,广泛使用的有RMI,Hessian,Dubbo等

Dubbo提供了三大核心能力面向接口的远程方法调用智能容错和负载均衡,以及服务自动注册和发现

RPC两个核心模块:通讯和序列化(方便数据传输)

序列化:数据传输需要转换,网络传输中,发送方先序列化,接收方在反序列化得出结果。 序列化的作用就是把对象转换成字节数组可以传输和持久化

关于RPC形象的解释:https://zhuanlan.zhihu.com/p/36427583

2.Dubbo架构

Dubbo就是RPC框架

Dubbo架构图如下:

节点角色说明

节点 角色名称
 Provider  暴露服务的服务提供方
 Consumer  调用远程服务的服务消费方
 Registry 服务注册与发现的注册中心 
 Monitor 统计服务的调用次数和调用时间的监控中心 
 Container 服务运行容器 

虚线是异步访问,实线都是同步访问

蓝色虚线:在启动时完成的功能

红色虚线(实线)都是程序运行过程中执行的功能

调用关系说明:

  1. 服务器负责启动,加载,运行服务提供者
  2. 服务提供者在启动时,向注册中心注册自己提供的服务
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

3.服务注册中心(Registry)

Dubbo官方推荐使用Zookeeper作为服务注册中心

3.1 Zookeeper介绍

Zookeeper是Apache Hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务注册中心,工业强度较高,可用于生产环境,并推荐使用

为了便于理解Zookeeper的树形目录服务,我们先来看一下我们的电脑文件系统(也是一个树形目录结构):

  我的电脑可以分为多个盘符(如C、D、E),每个盘符下可以创建多个目录,每个目录下面可以创建文件,也可以创建子目录,最终构成一个树形结构。通过这种树形结构的目录,我们可以将文件分门别类的进行存放,方便我们后期查找。而且磁盘上的每个文件都有一个唯一的访问路径,例如:C:Windowscompanyhello.txt

 流程说明:

服务提供者(Provider)启动时:向/dubbo/com.foo.BarService/providers目录下写入自己的URL地址

服务消费者(Consumer)启动时:订阅/dubbo/com.foo.BarService/providers目录下写入自己的URL地址。并向/dubbo/com.foo.BarService/consumers目录下写入自己的URL地址

监控中心(Monitor)启动时:订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者的URL地址

3.2 Windows下安装zookeeper

(1)下载zookeeper:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/,我们下载3.4.14,解压zookeeper

(2)运行/bin/zkServer.cmd,初次运行会报错,没有zoo.cfg配置文件

可能会遇到的问题:闪退!

解决方案:编辑zkServer.cmd文件末尾添加pause。这样运行出错就不会退出,会提示错误信息,方便找到原因

提示没有zoo.cfg文件

可以看到当前文件夹中确实没有zoo.cfg文件

复制zoo_sample.cfg文件,改名成zoo.cfg

之后,再点击zkServer.cmd就可以正常运行了

 再点击客户端的zkCli.cmd,客户端就出现

 

3.3 Windows下安装dubbo-admin

dubbo本身并不是一个服务软件,它其实是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费,提供服务

但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不安装也不影响

【查看我们注册了哪些服务,哪些服务被消费了】

3.3.1 安装步骤

1.下载dubbo-admin

地址:https://github.com/apache/dubbo-admin/tree/master

2. 解压进入目录

指定注册中心地址

如果之前zookeeper的地址、端口号2181被改了,就在这里把地址、端口号改一下,即修改dubbo-admin-masterdubbo-adminsrcmain esourcesapplication.properties

server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest

dubbo.registry.address=zookeeper://127.0.0.1:2181

3.在项目目录下打包dubbo-admin

构建:

 mvn clean package -Dmaven.test.skip=true

生成jar包

4.启动

执行dubbo-admin/target下的dubbo-admin-0.0.1-SNAPSHOT.jar

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

【注意:zookeeper的服务一定要打开】

先运行zookeeper,注册中心是dubbo必须的一部分,必须配置zookeeper的admin.serverPort不为8080,否则会导致dubbo-admin启动不了

5.成功之后

访问http://localhost:7001/,用户名root  密码 root

 

 https://github.com/apache/dubbo-admin/blob/develop/README_ZH.md

原文地址:https://www.cnblogs.com/GumpYan/p/14330345.html