服务调用链的主要诱因和简略对比

优采云 发布时间: 2020-08-18 15:20

  服务调用链的主要诱因和简略对比

  调用链主要诱因数据搜集部份

  主要用于多元化的数据搜集,为数据剖析做打算。要求易用好用侵入尽量小(开发工作量),并且在极端情况下(如搜集组件不可用)不能对业务有任何影响。可以见到此部份的开发量是巨大的,尤其是须要集成Nginx上下游、基础组件多样、技术栈多样的情况下。

  数据剖析部份

  主要有实时剖析与线下剖析。一般,实时剖析的价值更大一些,主要产出如秒级别的调用量、平均响应时间、TP值等。另外,调用链(Trace)需要储存全量数据,一些高并发大埋点的恳求,会有性能问题。

  监控报案

  此部份借助数据剖析的产出,通过邮件短信等方式,通知订阅人关注。监控报案平台应尽量向devops平台靠拢,包括自主化服务平台。

  

  实现方法剖析

  根据搜集方法可分为日志搜集方法和程序实现方法

  日志搜集方法

  

  日志搜集方法与传统的ELK链路差不多。主要通过日志组件,打印出符合规范的日志格式。Flume守护进程会读取、过滤这种日志,将数据Sink到kafka集群中。会接收一份全量数据(调用链须要)到ES中供查询剖析;同时接收一份日志使用Spark或Strom形式剖析出须要的数据,存结果。

  主要开发量集中在日志组件和各个模块的组合调试中。另外,由于须要在每台宿主机上安装配置flume-agent,此模式依赖建立的运维体系,可使用jenkens或则ansible集成支持。

  手动埋点方法

  

  这种方法采用业务端直推的方式,将数据直接汇集到kafka中。客户端通常会开一个堆上的缓冲区,将有单独的线程定时上报缓冲区数据。数据落地到kafka后,后续的处理类似。

  为了支持易用性,需要较多的开发工作和可用性设计不会由于Trace组件或则Kafka的不可用导致服务的不可用。

  此种方法的主要益处是,功能是以jar包形式提供的,如有重大bug或则改动,所有服务都必须重新发布。

  监控报案对比

  我们大体对比了不同封装层次的三个代表,以便对调用链产品有个大体理解

  

  总结cat

  优点:功能强悍,监控全面,而且数据展示全面,更易于之后问题剖析。

  缺点:需要在代码中埋点,对代码侵入性很大。对于美团内部框架依赖严重。

  sleuth + zipkin

  优点:是spring cloud的组件,基于spring boot框架,接入简单,不需要埋点,分析的方法是通过日志剖析,而且可以对接多种第三方储存进行储存和剖析。

  缺点:功能单一,只通过进行http调用的跟踪。页面数据展示比较简单,只有调用链路的相关信息, 没有整体数据的对比。sleuth只对restTemplate,zuul转发,spring cloud stream的消息中间件这三种调用方法进行添加监控信息,其他方法不支持,所以更适用于spring cloud环境。

  pinpoint

  优点:采用javaagent字节码提高技术,对业务代码入侵很少,业务只须要在启动时降低javaagent参数即可

  缺点:

  1.功能限于链路跟踪,对于其他业务监控指标支持不足

  2.维护技术难度较高,内部是字节码提高技术,问题排查须要较高的技术水平

  3.同第二点,自定义扩充开发难度也较高。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线