Metadata:分析阿里巴巴的微服务依赖图和性能

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

该论文研究了阿里巴巴集群中的大规模微服务部署,发现微服务图在运行时是动态的,调用图的大小遵循重尾分布。研究提供了提高微服务运行时性能的实用技巧,并开发了一个随机模型来模拟微服务调用图依赖关系。结果表明,微服务调用率与CPU利用率和Java年轻代垃圾回收高度相关,但与内存利用率无关。因此,需要更高效的资源调度器来平衡不同主机之间的CPU利用率。

🎯

关键要点

  • 该论文研究了阿里巴巴集群中部署的大规模微服务,分析了7天内20,000多个微服务的行为。
  • 微服务图在运行时是动态的,大多数图形像树一样分散生长。
  • 调用图的大小遵循重尾分布,约10%的调用图由40多个微服务阶段组成。
  • 最大的调用图可以包含数百到数千个微服务,50%的微服务是Memcached。
  • 调用图变得更深时,查询的缓存未命中率迅速增加,未命中时查询将发送到数据库服务。
  • 超过10%的微服务对的乘积>=5,表明许多微服务对具有强耦合依赖关系。
  • 微服务调用率与CPU利用率和Java年轻代垃圾回收高度相关,但与内存利用率无关。
  • 大多数容器的内存利用率在运行时几乎稳定,方差小于10%。
  • 主机CPU利用率较高时,响应时间可能大幅缩短,超过40%时RT平均下降20%以上。
  • 结果表明,在线微服务对CPU干扰敏感,需要更高效的资源调度器来平衡CPU利用率。
  • 跟踪显示,每分钟跨主机的CPU利用率差异可达20%,有机会更好地平衡批处理工作负载。
➡️

继续阅读