Dubbo 是一个RPC远程调用框架
服务端上线,将服务提供者注册到注册中心,并通过代理的方式提供真正的调用
客户端上线,从注册中心获取服务提供列表,聚合成一个Invoker(可执行代理),通过一定的负载均衡算法选择其中一个提供者进行调用,并且提供了各种调用失败策略
框架运用了SPI扩展机制,并提供了各种配置,底层通信框架用的是netty
线程池模型:https://www.cnblogs.com/java-zhao/p/7822766.html
负载均衡策略:
RandomLoadBalance:随机加权
RoundRobinLoadBalance:轮询
ConsistentHashLoadBalance:一致性hash,客户端请求始终落到某个服务端
LeastActiveLoadBalance:最近活动数(最少调用)
集群容错(高可用)策略:
FailoverCluster:失败转移,当出现失败,重试其它服务器,通常用于读操作,但重试会带来更长延迟
FailbackCluster:失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作
FailsafeCluster:失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作
FailfastCluster:快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作。
网友评论