代码地址:springboot-dubbo
第8章 Dubbo入门到重构服务
8-1 架构演变过程
基于zookeeper的应用
分布式协调服务dubbo
分布式锁
基于服务的架构演变过程
单一应用(一个war包,一个数据库,放在一台服务器上)–> MVC分层
多个c和多个s –> 对s进行整合(Dubbo)
图例1:

图例2:

系统之间的调用方式
Webservice - wsdl(很老,算是被淘汰了)
httpclient
rpc通信(dubbo)/restful(springcloud)
8-2 dubbo 入门简介
- 官网 dubbo.io http://dubbo.apache.org/zh-cn/
- 国产(阿里巴巴)的优秀框架
- 京东、当当(dubbox)都在使用
- 最大程度解耦,降低系统耦合性
- 生产者/消费者模式
- zk注册中心,admin监控中心,协议支持
高性能Java RPC框架
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
调用关系说明
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
pom
1 | <dependency> |
单体到分层模式

利用maven进行项目拆分
8-3 duboo使用:生产者/消费者模式
使用springboot+dubbo实现生产者/消费者
maven聚合工程的结构:
1 | springboot-dubbo |
版本:
springboot 2.1.0.RELEASE
dubbo-spring-boot-starter 0.2.0
dubbo 2.6.2
核心代码:
dubbo-api
\service
1 | package machine.sbd.api.service; |
dubbo-producer
\pom
1 | <!-- dubbo starter--> |
\application.properties
1 | ## Dubbo 服务提供者配置 |
\servie.impl
1 | package machine.sbd.producer.service.impl; |
\启动服务
1 |
|
dubbo-consumer
\application.properties
1 | = 8081 |
\controller
1 |
|
\启动
启动
1 | - 启动zk |
8-4 dubbo使用:dubbo监控
- dubbo提供监控服务,启动运行后可对 服务提供方 以及 消费者进行监控,查看被调用次数、成功失败次数、并发数
- 下载dubbo源码并编译,提取 监控服务 的安装包 运行
编译dubbo源码
从2.6.1开始,将Dubbo Admin 单独抽取出来了,这里采用2.6.0版本
下载与项目对应版本的源码:https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.0
项目导入idea > maven pakage 打包dubbo-simple\dubbo-monitor-simple
生成dubbo-monitor-simple-2.6.0-assembly.tar.gz ,解压
修改conf\dubbo.properties
1 | =log4j,spring,registry,jetty |
运行bin\start.sh、访问http://localhost:8082/
运行provider 和 consumer
点击service,界面如下:

监控服务使用\测试
- 监控有延时,每分钟会修改一次
- 并发测试:ab -n 1000 -c 50 http://localhost:8081/user/add

图表:

8-5 关于版本
2012年停止更新,版本停留在2.5.3,5年后恢复更新
当当基于此(2.5.3),开发了dubbox
2017年开始重新更新
截止2018-11-24,更新到2.6.4,Dubbo Admin 正在重构







