客户端路由选择
rpcx面向的是大规模的集群服务,所以同一个服务可能会部署多个节点,这些节点可能在同一个数据中心,也可能在不同的数据中心。对于客户端来说,它的一次调用必然要选择一个节点建立连接并调用,这个选择算法就是路由选择。
rpcx支持多种路由选择算法:
- RandomSelect: 随机选择
- RoundRobin: 轮转的方式
- WeightedRoundRobin: 基于权重的平滑的选择
- ConsistentHash: 快速一致哈希
WeightedRoundRobin是参考Nginx实现的基于权重的轮转的算法,既可以实现权重,也会将请求较为平均的发送给各个服务器。
ConsistentHash选择算法需要用户定义一个Hash算法,客户端根据这个Hash算法计算应该选择哪个服务器, rpcx提供了JumpConsistentHash算法,它可以根据请求参数选择服务器,相同的参数会选择相同的服务器,当然你也可以定制自己的Hash算法以实现不同的业务逻辑。