跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 微服务分布式对接口调用,你们是怎么追踪链路的?
未分類
30 12 月 2020

微服务分布式对接口调用,你们是怎么追踪链路的?

微服务分布式对接口调用,你们是怎么追踪链路的?

資深大佬 : cking 0

示例服务器:
A-business-service: A 业务系统实现服务(业务实现方法)
A-base-service: A 基层系统实现服务(链接 Mysql)
B-business-service: B 业务系统实现服务(业务实现方法)
B-base-service: B 基层系统实现服务(链接 Mysql)
A 可以调用 A/B 的基础 但是 A 不能调用 B 业务层
…..
现在的是这样的 有一串代码
public void example(){
…..
aBusiness.aBase();
aBsuiness.bBase();
…..
}
然后在 A 调用 B 基础的时候报错了 看日志 是 B-base 报错的 然后但是我们不知道是 A-business 的调用还是 B-business 的调用…

现在的有一个想法就是用一个服务固定的 source 字段去标记 然后传递到基础服务的接口中…(管理觉得加入分布式链路追踪太麻烦了) 我的想法是用 ZipKin 之类的开源框架

V 友们也可以推荐一下好用的框架或者 Idea. Thx

大佬有話說 (38)

  • 資深大佬 : wolfie

    前两天刚看到的
    https://mp.weixin.qq.com/s/t_xjkegwijGJKHD-tS0PoA

  • 資深大佬 : demobin

    request.getRemoteAddr()

  • 主 資深大佬 : cking

    @demobin 用过了 但是我们的服务 有时候两三个服务在一个机子上面….

  • 資深大佬 : monkeyWie

    skywalking esapm 可以看看

  • 資深大佬 : unixeno

    第一个发起者生成一个 logid,后面的 rpc 一路传下去

  • 資深大佬 : limuyan44

    我几年前搞这个当时只有个 dubbo,啥配套的都没上,最简单的就是链路加个 id 就完事了,java 来搞改改 rpc 框架和日志模板用不了几行代码,还不影响现有的代码,查日志看 id 就行了。

  • 資深大佬 : joesonw

    java 全家桶的话就 skywalking 嘛. 不然就 opentracing 那一套, 存储可以用 jaeger.

  • 主 資深大佬 : cking

    @monkeyWie
    @unixeno
    @joesonw
    感谢大家回复 公司给时间慢慢看 嘿嘿 摸鱼+1

  • 資深大佬 : vindurriel

    复议 5 debug 的话透传 request id 就行 用不着实施链路追踪系统

  • 資深大佬 : imycc

    在 nginx 或者网关入口生成一个 traceid (如果有就不生成),改造一下业务的日志模块,打印这个 ID 。日志传到 es,剩下就自行发挥

  • 資深大佬 : InkAndBanner

    zipkin

  • 資深大佬 : gmywq0392

    谷歌有论文。

  • 資深大佬 : xuanbg

    网关拦截验证鉴权的同时生成一个 requestId,放在请求头一路传到底。然后 kibana 就能根据这个 requestId 找出一串日志来。

  • 資深大佬 : lychs1998

    网关生成一个 ID,然后日志里全会附带这个 ID,调用链就都出来了。

  • 資深大佬 : qfdk

    apm 吧 这个简单

  • 資深大佬 : qfdk

    @imycc 都有 es 了 用他家 apm 就好了, 挂个 agent 起来 给每条数据都有个 transactionId 还有个 traceId. 这样需要某些特定 log 的 改下 file beat 穿出去就好了

  • 資深大佬 : csl1995

    requestid

  • 資深大佬 : Yoock

    jaeger?

  • 主 資深大佬 : cking

    @xuanbg
    @lychs1998
    我们之前想法就是用这个请求头来获取 我们有一个全局拦截接口参数 刚刚好可以打印

  • 資深大佬 : Kyle18Tang

    不知道你们是不是用的 Java,如果技术栈是 Spring Cloud 推荐使用 Spring Cloud Zipkin,默认支持很多场景的链路追踪,例如 HTTP 、RabbitMQ 、Kafka 、MySQL 、MongoDB 等都有支持。

  • 資深大佬 : Jooooooooo

    入口埋一个唯一 id, 然后一路传下去.

    一般放在 thread local 里, 对于线程池稍微改造下

  • 主 資深大佬 : cking

    @Kyle18Tang 就是 Cloud 家族

  • 資深大佬 : Kyle18Tang

    @cking #23 我们现在使用的就是 Spring Cloud Zipkin,很舒服,整个链路都能追踪,通过 Trace Id 就能搜索到所有链路上的日志了

  • 主 資深大佬 : cking

    @Kyle18Tang #24 我先试下 requestId 的方式 主要是管理不太想继续集成其他框架了 除非万不得已

  • 主 資深大佬 : cking

    @Kyle18Tang #24
    @cking #25
    已经叫我们运维在 nginx 中加了一个 X-Request-Id 了 在请求头中

  • 資深大佬 : Kyle18Tang

    @cking #25 微服务只需要依赖一个 starter 而已。。。然后加个往哪里发送的配置。Zipkin 的服务器另外搭建,Docker 就能启动,数据我们存到了 ES 里。自己写我是感觉真没必要,费时费力。

  • 資深大佬 : whiler

    业界已经有一套成熟的方案了,可以看一下 opentracing

  • 資深大佬 : Kyle18Tang

    @cking #26 不再建议自定义 HTTP 头采用 X-前缀,https://tools.ietf.org/html/rfc6648

  • 主 資深大佬 : cking

    @Kyle18Tang 好的 我去把主管说服吧 哈哈哈

  • 資深大佬 : xuanbg

    Zipkin 真心没有自己查 requestId 方便

  • 資深大佬 : gjf

    这可以用 trace 解决也叫分布式链路追踪,可以看看云原生的 opentraceing,如果 java 可以使用 specialagent,对代码没有任何侵入

  • 資深大佬 : Yiso1573

    spring sleuth ,好像要求 spring cloud ?目前我们用的这个

  • 資深大佬 : xuzhzzz

    《管理觉得加入分布式链路追踪太麻烦了》

    同样的领导,明明主流方案就在那里,偏偏自己搞,搞得不三不四的,到头来难受的还是自己

  • 主 資深大佬 : cking

    @xuzhzzz 没法 程序员打工仔 最底层的人 被测试,产品,运维,前端呼来唤去

  • 資深大佬 : chogath

    requestId

  • 資深大佬 : laminux29

    整个过程,每个经过的节点 ID 或组件 ID 必须都记录上,要不以列表或数组形式记录在数据里,要不分散在各组件的日志里后期汇总。

    这种东西无论是调试、流控还是分布式性能调优,都有重要作用。

  • 資深大佬 : lewis89

    其实…最好的办法是不上微服务…大部分公司的量级根本没有达到紧迫到需要上微服务的情况

  • 資深大佬 : liian2019

    traceId + spanId

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具