在分布式多节点集群架构系统内部,在节点之间进行RPC保护的目标如下:
(1)避免整个系统出现级联失败而雪崩,这是非常重要的目标。在RPC调用过程中,需要防止由单个服务的故障而耗尽整个服务集群的线程资源,避免分布式环境里大量级联失败。
(2)RPC调用能够相互隔离。为每一个目标服务维护着一个线程池(或信号量),即使其中某个目标服务的调用资源被耗尽,也不会影响对其他服务的RPC调用。当目标服务的线程池(或信号量)被耗尽时,拒绝RPC调用。
(3)能够快速地降级和恢复。当RPC目标服务故障时,能够快速和优雅地降级;当RPC目标服务失效后又恢复正常时,快速恢复。
(4)能够对RPC调用提供接近实时的监控和警报。监控信息包括请求成功、请求失败、请求超时和线程拒绝。如果对特定服务RPC调用的错误百分比超过阈值,后续的RPC调用就会自动失败,一段时间内停止对该服务的所有请求。