我想了解如何检测失败的服务(以快速/可靠的方式),即服务是所有5xx响应的根是什么?
让我试着详细说明一下。让我们假设我们有300+微服务,它们只有通过GET请求的同步http交互,没有任何数据修改(为了简单起见,我们假设它)。每个客户请求可以转换为调用~10个不同的微服务,而且它可以是一个请求的“调用链”,即API Gateway调用3个不同的微服务,每个微服务调用1-5个以上,每个1-5个调用1-5个以上等等。
我们密切监视每个微服务上的5xx错误,并对这些错误做出反应。
现在,其中一个微服务出现故障。它似乎处于“调用链”的末尾,这意味着依赖它的其他微服务也将开始返回5xx。
是的,有断路器,是的,它们变成“触发/打开”,而不是调用下游服务,它们也立即返回错误(在大多数情况下,我们不能返回一个好的回退,如空响应)。
因此,我们可以看到相对较大的微服务返回5xx。就像30-40个微服务返回5xx一样,我们看到30-40个触发/断开断路器。
如何快速检测失败的微服务,这是所有邪恶的根源?有没有人遇到过这个问题?
问候
发布于 2019-12-24 14:28:39
您将需要实现一个分布式跟踪解决方案来跟踪具有全局ID的源事务处理。此全局标识符的名称通常称为关联ID,它由创建请求的第一个服务生成,并传播到共同完成请求的所有其他微服务。
看看OpenTracing,满足您的实现需求。它为您提供了一些库,用于添加在分布式环境中识别故障微服务所需的工具。
但是,如果您确实有300个微服务都使用同步calls...maybe,那么是时候考虑使用异步通信来消除同步通信中固有的时间耦合了。
https://stackoverflow.com/questions/59457949
复制相似问题