dubbo 笔记
1. dubbo 是一款高性能的 java RPC (远程服务调用)框架。
2. RPC 框架的性能关键是“序列化”和“网络通信”,dubbo 采用二进制序列化、使用 Socket 而不是 Http 进行网络通信
3. dubbo 的架构
简单解释:服务提供者 、服务消费者 在注册中心进行注册,注册的同时告知注册中心,我提供什么服务,我需要什么服务。注册中心,会将相应服务提供者的地址信息给到消费者,消费者再找到提供者享受服务。
monitor 是监视器,对服务的调用次数和时间进行一个统计。提供者和消费者都会定时发送统计数据给监控中心。
生活举例:淘宝:提供者就是商家,而消费者就是顾客,注册中心则为淘宝平台,监控中心是淘宝数据统计人员(或者理解为网警?)
使用注册中心:
我使用的是 zookeeper 是一个树型的目录服务
默认端口 2181 20880
– 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
– 当注册中心重启时,能自动恢复注册数据,以及订阅请求
– 当会话过期时,能自动恢复注册数据,以及订阅请求
– 当设置 `<dubbo:registry check=”false” />` 时,记录失败注册和订阅请求,后台定时重试
– 可通过 `<dubbo:registry username=”admin” password=”1234″ />` 设置 zookeeper 登录信息
– 可通过 `<dubbo:registry group=”dubbo” />` 设置 zookeeper 的根节点,不设置将使用无根树
– 支持 `*` 号通配符 `<dubbo:reference group=”*” version=”*” />`,可订阅服务的所有分组和所有版本的提供者
Dubbo 的负载均衡(内置4种)
1. RandomLoadBlance 随机 负载均衡,也就是随机选择(dubbo默认的负载均衡策略)
2. RoundRobinLoadBlance 轮询 负载均衡
3. LeastActivelLoadBlance 最少活跃调用数,相同活跃数的随机。 也就是能者多劳(相同的服务,肯定是选择最快的),让慢的 提供者收到更少的请求,因为慢的提供者调用前后的计数差更大
4.ConsistentHashLoadBlance 一致性哈希负载均衡,相同的请求总是落在同一台机器上。(它干熟了,这个活就找他)
check 属性
默认 check = true ,dubbo 会在启动时检查依赖的服务是否可用,不可用则抛出异常,阻止spring初始化完成,可用更早的发现问题