当前位置: 首页 > 工具软件 > gRPC-DLang > 使用案例 >

grpc学习2

戚飞虎
2023-12-01
接着上文,  整理一下几个高可用的设计方案。

ClusterInvoker失败的几种策略

  • Failover 失败自动切换
    一个远程调用失败,它就立马换另一个,当然是有重试次数的。
  • Failfast 快速失败
    只会进行一次远程调用,如果失败后立即抛出异常,也就是快速失败,它适合于不支持幂等的一些调用。
  • Failsafe
    失败安全的 cluster,也就是调用出错仅仅就日志记录一下,然后返回了一个空结果,适用于写入审计日志等操作。
  • Failback
    在调用失败后,记录下来这次调用,然后返回一个空结果给服务消费者,并且会通过定时任务对失败的调用进行重调。
    适合执行消息通知等最大努力场景。
  • Forking
    在运行时把所有 invoker 都通过线程池进行并发调用,只要有一个服务提供者成功返回了结果,doInvoke 方法就会立即结束运行。
    适合用在对实时性要求比较高读操作。
  • Broadcast
    在运行时把所有 invoker 逐个调用,然后在最后判断如果有一个调用抛错的话,就抛出异常。
    适合通知所有提供者更新缓存或日志等本地资源信息的场景。

clusterInovker负载均衡–LoadBalanc

  • RandomLoadBalance
  • 加权随机
  • LeastActiveLoadBalance,最少活跃数负载均衡
    活跃数都是从 0 加起来的,来一个请求活跃数+1,一个请求处理完成活跃数-1,所以活跃数少也能变相的体现处理的快。
  • ConsistentHashLoadBalance
  • 一致性 Hash 负载均衡算法
    服务器的 IP 等信息生成一个 hash 值,将这个值投射到圆环上作为一个节点,然后当 key 来查找的时候顺时针查找第一个大于等于这个 key 的 hash 值的节点。
    一般而言还会引入虚拟节点,使得数据更加的分散,避免数据倾斜压垮某个节点
  • TreeMap
  • RoundRobinLoadBalance
    加权轮询负载均衡个别服务器性能比较好,所以想轮询的多一些。
 类似资料: