RPC(Remote Procedure Call)远程过程调⽤,简单的理解是⼀个节点请求另⼀个节点提供的服 务
客户端(Client):服务调⽤⽅。
客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成⽹络消息, 再通过⽹络传输发送给服务端。
服务端存根(Server Stub):接收客户端发送过来的请求消息并进⾏解包,然后再调⽤本地服务进⾏ 处理。
服务端(Server):服务的真正提供者。
Network Service:底层传输,可以是 TCP 或 HTTP
服务寻址: 在RPC中,所有的函数都必须有一个自己Id,这个id在所有的进程中都是唯一的,客户端在发送请求的时候需要带上这个id,从而来确定客户端需要调用的函数
2.Dubbo结构 2.1基本结构dubbo只是RPC框架的一种,基于rpc远程请求方式,对于开发来讲简化了纯粹的RPC调用
provider: 服务提供方
consumer: 服务消费端
zk: 服务注册和发现的注册中心
monitor: 统计服务调用次数/时间的监控中心
1. 服务容器负责启动,加载,运⾏服务提供者。
2. 服务提供者在启动时,向注册中⼼注册⾃⼰提供的服务。
3. 服务消费者在启动时,向注册中⼼订阅⾃⼰所需的服务。
4. 注册中⼼返回服务提供者地址列表给消费者,如果有变更,注册中⼼将基于⻓连接推送变更数 据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选⼀台提供者进⾏调⽤,如果调⽤ 失败,再选另⼀台调⽤。
6. 服务消费者和提供者,在内存中累计调⽤次数和调⽤时间,定时每分钟发送⼀次统计数据到监 控中⼼。
2.2调用流程
监控中⼼宕掉不影响使⽤,只是丢失部分采样数据
数据库宕掉后,注册中⼼仍能通过缓存提供服务列表查询,但不能注册新服务
注册中⼼对等集群,任意⼀台宕掉后,将⾃动切换到另⼀台
注册中⼼全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者⽆状态,任意⼀台宕掉后,不影响使⽤
服务提供者全部宕掉后,服务消费者应⽤将⽆法使⽤,并⽆限次重连等待服务提供者恢复
3.Dubbo特性 3.1集群容错调用失败自动切换,retries设置重试次数
快速失败,只允许一次调用,失败立刻报错 一般用于insert记录
失败安全,出现异常直接忽略
失败自动恢复,定时重发
广播调用所有提供者,逐个调用,任何一台报错,直接报错
3.2负载均衡
Random LoadBalance
随机策略,按权重设置随机率
RoundRobin LoadBalance(默认)
轮询,按公约后的权重设置轮询比例
LeastActive LoadBalance
最少活跃调⽤数,相同活跃数的随机,活跃数指调⽤前后计数差。
ConsistentHash LoadBalance
⼀致性 Hash,相同参数的请求总是发到同⼀提供者。
当某⼀台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引 起剧烈变动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)