知识卡片
微服务的调用链越长,性能损耗和故障定位成本越高
内容
微服务间靠网络调用(HTTP/RPC),单次调用平均耗时约50毫秒,一次请求若经过6次调用,仅网络开销就有300毫秒,很多高性能场景难以接受。故障定位同样被拉长:一次异常往往要从最上游服务逐层排查,没有链路追踪工具时定位耗时可能是几个小时,多个服务同时故障更是雪上加霜。发散:这说明”拆分”带来的收益(单服务更简单、可独立扩展)必须拿真实的网络延迟和排障成本去对冲,不能只看拆分后单服务变简单这一面。
参考来源
- 位置:《从0开始学架构》第39章《34|深入理解微服务架构:银弹or焦油坑?》(源文件:_epub-src/OEBPS/Text/part0038_split_002.html)
- 结论依据:原文明确"一般线上的业务接口之间的调用,平均响应时间大约为50毫秒,如果用户的一起请求需要经过6次微服务调用,则性能消耗就是300毫秒",并以级联故障案例说明"最开始是用户报错……我们可能要花半个小时甚至1个小时才能发现是Service B返回错误导致的……最后可能花费了几个小时才能定位到是Service C的数据库慢查询导致了错误"。
- 原始内容:一般线上的业务接口之间的调用,平均响应时间大约为50毫秒,如果用户的一起请求需要经过6次微服务调用,则性能消耗就是300毫秒……最后可能花费了几个小时才能定位到是Service C的数据库慢查询导致了错误。