分布式--dubbo笔记
Dubbo是一种分布式服务框架。 Webservice也是一种服务框架,但是webservice并不是分布式的服务框架,他需要结合F5实现负载均衡。因此,dubbo除了可以提供服务之外,还可以实现软负载均衡。它还提供了两个功能Monitor 监控中心和调用中心。这两个是可选的,需要单独配置。
Dubbo的计数架构图如下:
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次数和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明:
1. 服务容器负责启动,加载,运行服务提供者。
2. 服务提供者在启动时,向注册中心注册自己提供的服务。
3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
dubbo 负载均衡
4种策略:缺省默认为random随机调用
1.随机random
按权重设置随机概率,调用量越大分布越均匀
2.轮循 RoundRobin
按公约后的权重设置轮循比率
3.最少活跃调用数 LeastActive
相同活跃数的随机,活跃数指调用前后计数差
4.一致性hash ConsistenHash
一致性Hash,相同参数的请求总是发到同一提供者
<dubbo:service interface="..." loadbalance="roundrobin" />
<dubbo:reference interface="..." loadbalance="roundrobin" />
<dubbo:service interface="..." >
<dubbo:method name="..." loadbalance="roundrobin"/>
</dubbo:service>
线程池:
ThreadPool
fixed固定大小线程池,启动时建立线程,不关闭,一直持有
cached:缓存线程池,空闲一分钟自动删除,需要时重建
limited:可伸缩线程池,但池中的线程数只会增长不会收缩.(为避免收缩时突然来了大流量引起的性能问题)
配置如:
<dubbo:protocal name="dubbo" dispatcher="all" threadpool="fixed" thread="100" />
配置标签:
<dubbo:provider/>
<dubbo:protocal/>
直连服务提供者 多个地址用分号隔开
<dubbo:reference interface="wusc.edu.facade.user.service.PmsUserFacade" id="pmsUserFacade" check="false" url="dubbo://localhost:20890"/>
只订阅(不提供服务)
<dubbo:registry address="10.20.153.10:9090" register="false" />
或者 :
<dubbo:registry address="10.20.153.10:9090?register=false" />
只注册
<dubbo:registry id="hzRegustry" address="10.20.153.10:9090" />
<dubbo:registry id="qdRegustry" address="10.20.141.150:9090" subscribe="false" />
或者
<dubbo:registry id="hzRegustry" address="10.20.153.10:9090" />
<dubbo:registry id="qdRegustry" address="10.20.141.150:9090?subscribe=false" />