xmind 文件下载:
** 禁止转载!**
#内容概述
架构演变
-
单一应用架构
-
垂直应用架构
-
分布式服务架构
-
流动计算架构
配置
-
dubbo:service/:服务配置
-
dubbo:reference/:引用配置
-
dubbo:protocol/:协议配置
-
dubbo:application/:应用配置
-
dubbo:module/:模块配置
-
dubbo:registry/:注册中心配置
-
dubbo:monitor/:监控中心配置
-
dubbo:provider/:提供方的缺省值
-
dubbo:consumer/:消费方缺省配置
-
dubbo:method/:方法配置
-
dubbo:argument/:用于指定方法参数配置
架构
角色
-
Provider: 暴露服务的服务提供方
-
Consumer: 调用远程服务的服务消费方
-
Registry: 服务注册与发现的注册中心
-
Monitor: 统计服务的调用次调和调用时间的监控中心
-
Container: 服务运行容器
流程说明
-
服务容器负责启动,加载,运行服务提供者
-
服务提供者在启动时,向注册中心注册自己提供的服务
-
服务消费者在启动时,向注册中心订阅自己所需的服务
-
注册中心返回服务提供者地址列表给消费者
-
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用
-
服务消费者和提供者定时每分钟发送一次统计数据到监控中心
连通性
-
注册中心负责服务地址的注册与查找
-
监控中心负责统计各服务调用次数,调用时间等
-
服务提供者向注册中心注册其提供的服务
-
服务消费者向注册中心获取服务提供者地址列表
-
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
-
注册中心通过长连接感知服务提供者的存在
-
注册中心和监控中心全部宕机 消费者在本地缓存了提供者列表
-
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
集群容错
- Failover Cluster(故障转移)
- Failfast Cluster(快速失败)
- Failsafe Cluster(失败安全)
- Failback Cluster(失败自动恢复)
- Forking Cluster(并行调用多个服务器)
- Broadcast Cluster(广播调用所有提供者)
负载均衡
- Random LoadBalance
- RoundRobin LoadBalance
- LeastActive LoadBalance
- ConsistentHash LoadBalance
线程模型
<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />
Dispatcher
- all、
- direct、
- message、
- executio、
- connection
ThreadPool
- fixed
- cache
- limited
特性
-
这里是列表文本 绕过注册中心直接调用生产者
-
只订阅
-
只注册
-
静态服务
-
不同服务可使用不同协议。如rmi、dubbo协议等
-
多注册中心
-
服务分组
-
多版本
-
在低压力时间段,先升级一半提供者为新版本
-
再将所有消费者升级为新版本
-
然后将剩下的一半提供者升级为新版本
-
分组聚合
-
支持JSR303参数验证
-
结果缓存
-
lru:基于最近最少使用原则删除多余缓存,保持最热的数据被缓存
-
threadlocal:当前线程缓存
-
jcache:与JSR107集成,可以桥接各种缓存实现
-
隐式传参
-
并发控制,限制执行某方法的线程数量
-
连接控制,限制服务器端接受的连接不能超过某值
-
令牌验证