从0开始学微服务
胡忠想
微博技术专家
立即订阅
16239 人已学习
课程目录
已完结 42 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 微服务,从放弃到入门
免费
模块一 入门微服务 (10讲)
01 | 到底什么是微服务?
02 | 从单体应用走向服务化
03 | 初探微服务架构
04 | 如何发布和引用服务?
05 | 如何注册和发现服务?
06 | 如何实现RPC远程服务调用?
07 | 如何监控微服务调用?
08 | 如何追踪微服务调用?
09 | 微服务治理的手段有哪些?
10 | Dubbo框架里的微服务组件
模块二 落地微服务 (14讲)
11 | 服务发布和引用的实践
12 | 如何将注册中心落地?
13 | 开源服务注册中心如何选型?
14 | 开源RPC框架如何选型?
15 | 如何搭建一个可靠的监控系统?
16 | 如何搭建一套适合你的服务追踪系统?
17 | 如何识别服务节点是否存活?
18 | 如何使用负载均衡算法?
19 | 如何使用服务路由?
20 | 服务端出现故障时该如何应对?
21 | 服务调用失败时有哪些处理手段?
22 | 如何管理服务配置?
23 | 如何搭建微服务治理平台?
24 | 微服务架构该如何落地?
模块三 进阶微服务 (8讲)
25 | 微服务为什么要容器化?
26 | 微服务容器化运维:镜像仓库和资源调度
27 | 微服务容器化运维:容器调度和服务编排
28 | 微服务容器化运维:微博容器运维平台DCP
29 | 微服务如何实现DevOps?
30 | 如何做好微服务容量规划?
31 | 微服务多机房部署实践
32 | 微服务混合云部署实践
模块四 展望微服务 (4讲)
33 | 下一代微服务架构Service Mesh
34 | Istio:Service Mesh的代表产品
35 | 微博Service Mesh实践之路(上)
36 | 微博Service Mesh实践之路(下)
阿忠伯的特别放送 (4讲)
阿忠伯的特别放送 | 答疑解惑01
阿忠伯的特别放送 | 答疑解惑02
微博技术解密(上) | 微博信息流是如何实现的?
微博技术解密(下)| 微博存储的那些事儿
结束语 (1讲)
结束语 | 微服务,从入门到精通
从0开始学微服务
登录|注册

16 | 如何搭建一套适合你的服务追踪系统?

胡忠想 2018-09-27
专栏第 8 期我给你讲了服务追踪系统的原理以及实现,简单回顾一下服务追踪系统的实现,主要包括三个部分。
埋点数据收集,负责在服务端进行埋点,来收集服务调用的上下文数据。
实时数据处理,负责对收集到的链路信息,按照 traceId 和 spanId 进行串联和存储。
数据链路展示,把处理后的服务调用数据,按照调用链的形式展示出来。
如果要自己从 0 开始实现一个服务追踪系统,针对以上三个部分你都必须有相应的解决方案。首先你需要在业务代码的框架层开发调用拦截程序,在调用的前后收集相关信息,把信息传输给到一个统一的处理中心。然后处理中心需要实时处理收集到链路信息,并按照 traceId 和 spanId 进行串联,处理完以后再存到合适的存储中。最后还要能把存储中存储的信息,以调用链路图或者调用拓扑图的形式对外展示。
可以想象这个技术难度以及开发工作量都不小,对于大部分中小业务团队来说,都十分具有挑战。不过幸运的是,业界已经有不少开源的服务追踪系统实现,并且应用范围也已经十分广泛,对大部分的中小业务团队来说,足以满足对服务追踪系统的需求。
业界比较有名的服务追踪系统实现有阿里的鹰眼、Twitter 开源的 OpenZipkin,还有 Naver 开源的 Pinpoint,它们都是受 Google 发布的 Dapper 论文启发而实现的。其中阿里的鹰眼解决方案没有开源,而且由于阿里需要处理数据量比较大,所以鹰眼的定位相对定制化,不一定适合中小规模的业务团队,感兴趣的同学可以点击本期文章末尾“拓展阅读”进行学习。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学微服务》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(23)

  • 拉欧
    http效率低,但是无需做额外的工作,mq吞吐量更大,但是需要部署,所以视数据量而定,如果数据量小,http就可以,数据量大,就要用到mq
    2018-09-27
    12
  • aoe
    我的回答来自《Spring微服务实战》
    1、使用Spring Cloud可以很方便的集成Zipkin,详见“第9章 使用Spring Cloud Sleuth 和 Zipkin进行分布式跟踪》
    2、从功能角度来看,不管使用HTTP、RabbitMQ、Kafka,Zipkin的行为没有任何差异。通过使用HTTP追踪,Zipkin使用异步线程发送性能数据。另外使用RabbitMQ或Kafka来收集跟踪数据的主要优势是,如果Zipkin服务器关闭,任何发送给Zipkin的跟踪信息都将”排队“,直到Zipkin能够收集数据。(238页)
    2018-10-06
    7
  • 凌天
    跟大众点评的cat区别呢
    2019-05-04
    3
  • arebya
    在项目中我们也对比过zipkin和pinpoint,个人认为还要考虑以下几方面:
    1、定制成本 两者都需要对中间件进行定制化的开发,zipkin开源社区更活跃些,遇到的问题也比较容易解决。pinpoint自身支持了很多的plugin,如果想要二次开发,需要了解它的扩展机制,代码上来说会稍微复杂。
    2、维护成本 pinpoint需要维护单独的hbase集群(当然hdfs也少不了)
    3、规范 pinpoint是自己走的一套,没有遵守opentracing标准规范,zipkin已有相应实现

    作者回复: 嗯,从开源社区角度考虑,openzipkin要比pinpoint更符合

    2018-10-10
    3
  • 木匠
    pinpoint支持cloud吗

    作者回复: cloud是指啥?

    2018-10-31
    2
  • andyXH
    基于不同场景选择不一样。本来刚看到问题,本人觉得第一想法就是MQ比较适合。但是使用MQ 需要搭建相应的消息系统。这就相对引入一些复杂度。对于前期项目刚开始,可以使用http,能快速对接上追踪系统。而随着后期项目渐入稳定,然后 http 的调用相对而言,效率偏低,如果并发十分大,可能会影响项目原本的稳定性。这个时候就可以考虑使用MQ,提高吞吐量。
     哈哈 说个题外话,总感觉要在代合耦合这种代码,就感觉十分不舒服。:(
    2018-09-28
    2
  • focus 根
    我是做Android音视频开发的 现在想往后台和微服务方向转 想问问作者有什么看法呢
    2018-09-28
    2
  • 金hb.Ryan 冷空氣駕到
    留言支持mq但我觉得可能http侵入更低,http层后面可以接入kafka等.
    我们内部其实也做了类似dapper做参考的链路系统,有个问题1如何考虑采样率的实现,2pinpoint每个层都trace一下会不会有性能问题?
    2018-09-28
    1
  • herome
    美团的OCTO 很不错
    2018-09-28
    1
  • 黄朋飞
    消息队列更合适一些,原因1 服务某一段时间耗时增加不至于影响现有服务的调用。2 采用消息队列可以有效控制消费舒服,对于缓解存储端压力是个不错的选择。3 消息队列吞吐量更强
    2018-09-27
    1
  • doubleRabbit
    kafka合适些,它原本定位于日志领域,为了解决数据一致性不那么高,而并发量,可扩展性要求高的场景,现在已聚焦与分布式的流式平台,监控类的业务合适。
    2018-09-27
    1
  • 萧箫萧
    对于微服务架构模式下,主业务应用和后端子业务应用通过nginx网关代理,这种情况下 如何在nginx上对接pinpoint链路追踪呢?
    2019-06-25
  • godtrue
    感谢,没直接用过,涨涨见识,感觉开源对于软件技术的发展不可限量。
    2019-06-15
  • 亚林
    异步mq更好,不会对原来对被追踪的业务请求产生多余影响
    2019-05-28
  • 帽子丨影
    还是没明白服务b如何拿到服务a生成的trance id
    2019-05-06
  • 川杰
    老师,看了本章后,我有一个地方不理解;假设场景,微服务A调用微服务B,那么服务B是怎么知道服务A生成的id呢?如果是调用服务时当参数传过去的,那岂不是等于侵入了业务代码了吗?有没有不侵入业务代码的方法?
    2019-04-10
    1
  • 西兹兹
    pinpoint 性能是个硬伤
    2019-01-07
    1
  • 波波安
    我觉得采用异步通信的方式好一些。
    1、同步http发送方式对业务代码性能影响大。
    2、消息队列的消息可以被不同的消费组处理。数据处理更灵活。
    3、消息队列本身也有一定的消息存储和缓冲的能力。当采集进程短时间有问题时,不会导致数据的丢失,等恢复正常后可以继续消费。
    2018-10-14
  • ____CC
    pinpoint支持dubbo、thrift这类非http的调用吗
    2018-10-08
  • 文敦复
    openzipkin应该就是集成在springcloud中的吧?
    2018-10-06
收起评论
23
返回
顶部