Skip to content
LinShunKang edited this page Nov 22, 2019 · 8 revisions

随着笔者所在公司的发展,应用服务的规模不断扩大,原有的垂直应用架构已无法满足产品的发展,几十个工程师在一个项目里并行开发不同的功能,开发效率不断降低,于是公司开始全面推进服务化进程,把团队内的大部分工程师主要精力全部都集中到服务化中。 服务化可以让每个工程师仅在自己负责的子项目中进行开发,提高了开发的效率,但是服务化同时也带来了其他问题:

  • 无法知道每个服务的运行情况,例如,某一台服务它目前的 QPS 是多少?它的平均延迟是多少,99% 的延迟是多少,99.9% 的延迟又是多少?
  • 某一个接口响应时间慢,如何定位是哪个方法引起的?
  • 每个服务的负载是否均衡?
  • 当服务出现抖动时,如何判断是 DB、Cache 还是下游服务引起的?
  • DB 和 Cache 响应延迟是多少?
  • 如何评估服务的容量,随着服务的调用量越来越大,这个服务需要多少机器来支撑?什么时候应该加机器?

笔者所在公司是利用 Dubbo 作为 RPC 框架,Dubbo 提供了 SimpleDubboMonitor 作为服务的监控工具,但是 SimpleDubboMonitor 有以下几个缺点:

  • 只提供了 QPS、Sum、Avg、Max 等监控指标
  • 监控指标是以集群的方式展示,无法知道每个 Provider 的运行情况

同时,目前已有的监控工具要么过于重量级,要么没有我想要的性能指标,不能满足我的 监控需求,为此,我需要一个工具来帮助我们监控服务的运行情况以及快速定位问题。