RPC调用流程
RPC两个核心模块:通讯,序列化
序列化:为了传输
Netty网络传输
下图为Spring Cloud架构
dubbo中文 http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
HTTP SpringCloud(是一个生态)而dubbo是一个通信,Dubbo不会干掉springCloud
Apache Dubbo是一款高性能,轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
下图为dubbo架构
iniit表示初始化
async:异步
sync: 同步
只有invoke是同步的,其它全部是异步
notify:通知,布告 invoke:执行,调用,引用
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务
服务消费者(Consumer):调用远程服务的服务消费放,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法, 选一台提供者进行调用,如果调用失败,再选一台调用
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供则,在内存中累计调用次数和调用时间, 定时每分钟发送一次统计数据到监控中心
调用关系说明
(1)服务容器负责启动,加载,运行服务提供者
(2)服务提供者在启动时,向注册中心注册自己提供的服务
(3)服务消费者在启动时,向注册中心订阅自己所需的服务
(4) 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
(5)服务消费者,从提供地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
(6)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
注册中心参考工具
(1) Multicast注册中心
(2) Zookeeper注册中心
(3) Nacos注册中心
(4) Redis注册中心
(5) Simple注册中心
二安装zookeeper
cmd D:\zookeeper\apache-zookeeper-3.6.0-bin\bin
肯能遇到问题:闪退!
解决方案:编辑zkServer.cmd文件末尾添加pause,即如下内容
echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*
pause <---------------添加内容如下
endlocal
打开zookeeper服务器端口 zkServer.cmd
打开zookeeper客户端 zkCli.cmd
四 使用zkCli.cmd 进行测试
ls / :列出zookeeper跟下保存的所有节点
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 1] create -e /kuangshen 123
Created /kuangshen
[zk: localhost:2181(CONNECTED) 2] ls /
[dubbo, kuangshen, zookeeper]
[zk: localhost:2181(CONNECTED) 3]
[zk: localhost:2181(CONNECTED) 3] get /kuangshen
123
[zk: localhost:2181(CONNECTED) 4]
三安装dubbo admin
dubbo本身并不是一个服务软件。它其实就是jar包,能够帮你的Java程序连接到zookeeper, 并利用zookeeper消费,提供服务
但是我们为了让用户更好的管理众多的dubbo服务, 官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不安装也不会影响使用
1 下载dubbo-admin地址
https://github.com/apache/dubbo-admin/tree/master
2解压进入目录
下载文件为为dubbo-admin-master.zip,如果有修改,可以修改如下配置
D:\Environment\dubbo-admin-master\dubbo-admin\src\main\resources\application.properties
3在项目目录下打包dubbo-admin
cmd D:\Environment\dubbo-admin-master
D:\Environment\dubbo-admin-master>mvn clean package -Dmaven.test.skip=true
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] dubbo-admin ........................................ SUCCESS [ 26.544 s] [INFO] dubbo-ops .......................................... SUCCESS [ 0.033 s] [INFO] dubbo-monitor-simple ............................... SUCCESS [ 15.254 s] [INFO] dubbo-registry-simple .............................. SUCCESS [ 2.005 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 48.970 s [INFO] Finished at: 2020-03-25T12:25:22+08:00 [INFO] Final Memory: 52M/979M [INFO] ------------------------------------------------------------------------ D:\Environment\dubbo-admin-master> D:\Environment\dubbo-admin-master>cd dubbo-admin\target D:\Environment\dubbo-admin-master\dubbo-admin\target>dir 驱动器 D 中的卷是 新加卷 卷的序列号是 04EF-B31C 打包完成目标文件 D:\Environment\dubbo-admin-master\dubbo-admin\target 的目录 2020/03/25 12:25 <DIR> . 2020/03/25 12:25 <DIR> .. 2020/03/25 12:24 <DIR> classes 2020/03/25 12:25 31,739,794 dubbo-admin-0.0.1-SNAPSHOT.jar 2020/03/25 12:24 878,297 dubbo-admin-0.0.1-SNAPSHOT.jar.original 2020/03/25 12:24 <DIR> generated-sources 2020/03/25 12:24 <DIR> maven-archiver 2020/03/25 12:24 <DIR> maven-status 2 个文件 32,618,091 字节 6 个目录 158,328,262,656 可用字节 D:\Environment\dubbo-admin-master\dubbo-admin\target>java -jar dubbo-admin-0.0.1-SNAPSHOT.jar http://localhost:7001 root/root zookeeper: 注册中心 dubbo-admin: 是一个监控管理后台-查看我们注册了哪些服务,哪些服务被消费了 Dubbo: jar包