精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從 1.5 開始搭建一個(gè)微服務(wù)框架——鏈路追蹤 TraceId

開發(fā) 架構(gòu)
本篇通過攔截器、MDC 功能,全鏈路加入了 traceId,然后將 traceId 輸出到日志中,就可以通過日志來追蹤調(diào)用鏈路。不論是進(jìn)程內(nèi)的方法級(jí)調(diào)用,還是跨進(jìn)程間的服務(wù)調(diào)用,都可以進(jìn)行追蹤。

你好,我是悟空。

前言

最近在搭一個(gè)基礎(chǔ)版的項(xiàng)目框架,基于 SpringCloud 微服務(wù)框架。

如果把 SpringCloud 這個(gè)框架當(dāng)做 1,那么現(xiàn)在已經(jīng)有的基礎(chǔ)組件比如 swagger/logback 等等就是 0.5 ,然后我在這 1.5 基礎(chǔ)上進(jìn)行組裝,完成一個(gè)微服務(wù)項(xiàng)目框架。

為什么要造二代輪子呢?市面上現(xiàn)成的項(xiàng)目框架不香嗎?

因?yàn)轫?xiàng)目組不允許用外部的現(xiàn)成框架,比如 Ruoyi。另外因?yàn)槲覀兊捻?xiàng)目需求具有自身的特色,技術(shù)選型也會(huì)選擇我們自己熟悉的框架,所以自己來造二代輪子也是一個(gè)不錯(cuò)的選擇。

核心功能

需要包含以下核心功能:

  • 多個(gè)微服務(wù)模塊拆分,抽取出一個(gè) demo 微服務(wù)模塊供擴(kuò)展,已完成
  • 提取核心框架模塊,已完成
  • 注冊(cè)中心 Eureka,已完成
  • 遠(yuǎn)程調(diào)用 OpenFeign,已完成
  • 日志 logback,包含 traceId 跟蹤,已完成
  • Swagger API 文檔,已完成
  • 配置文件共享,已完成
  • 日志檢索,ELK Stack,已完成
  • 自定義 Starter,待定
  • 整合緩存 Redis,Redis 哨兵高可用,已完成
  • 整合數(shù)據(jù)庫(kù) MySQL,MySQL 高可用,已完成
  • 整合 MyBatis-Plus,已完成
  • 鏈路追蹤組件,待定
  • 監(jiān)控,待定
  • 工具類,待開發(fā)
  • 網(wǎng)關(guān),技術(shù)選型待定
  • 審計(jì)日志進(jìn)入 ES,待定
  • 分布式文件系統(tǒng),待定
  • 定時(shí)任務(wù),待定
  • 等等

本篇要介紹的內(nèi)容是關(guān)于日志鏈路追蹤的。

一、痛點(diǎn)

痛點(diǎn)一:進(jìn)程內(nèi)的多條日志無(wú)法追蹤

一個(gè)請(qǐng)求調(diào)用,假設(shè)會(huì)調(diào)用后端十幾個(gè)方法,打印十幾次日志,無(wú)法將這些日志串聯(lián)起來。

如下圖所示:客戶端調(diào)用訂單服務(wù),訂單服務(wù)中方法 A 調(diào)用方法 B,方法 B 調(diào)用方法 C。

方法 A 打印第一條日志和第五條日志,方法 B 打印第二條日志,方法 C 打印第三條日志和第四條日志,但是這 5 條日志并沒有任何聯(lián)系,唯一的聯(lián)系就是時(shí)間是按照時(shí)間循序打印的,但是如果有其他并發(fā)的請(qǐng)求調(diào)用,則會(huì)干擾日志的連續(xù)性。

圖片

痛點(diǎn)二:跨服務(wù)的日志如何進(jìn)行關(guān)聯(lián)

每個(gè)微服務(wù)都會(huì)記錄自己這個(gè)進(jìn)程的日志,跨進(jìn)程的日志如何進(jìn)行關(guān)聯(lián)?

如下圖所示:訂單服務(wù)和優(yōu)惠券服務(wù)屬于兩個(gè)微服務(wù),部署在兩臺(tái)機(jī)器上,訂單服務(wù)的 A 方法遠(yuǎn)程調(diào)用優(yōu)惠券服務(wù)的 D 方法。

方法 A 將日志打印到日志文件 1 中,記錄了 5 條日志,方法 D 將日志打印到日志文件 2 中,記錄了 5 條日志。但是這 10 條日志是無(wú)法關(guān)聯(lián)起來的。

圖片

痛點(diǎn)三:跨線程的日志如何關(guān)聯(lián)

主線程和子線程的日志如何關(guān)聯(lián)?

如下圖所示:主線程的方法 A 啟動(dòng)了一個(gè)子線程,子線程執(zhí)行方法 E。

方法 A 打印了第一條日志,子線程 E 打印了第二條日志和第三條日志。

圖片

痛點(diǎn)四:第三方調(diào)用我們的服務(wù),如何追蹤?

本篇要解決的核心問題是第一個(gè)和第二個(gè)問題,多線程目前還未引入,目前也沒有第三方來調(diào)用,后期再來優(yōu)化第三個(gè)和第四個(gè)問題。

二、方案

1.1 解決方案

① 使用 Skywalking traceId 進(jìn)行鏈路追蹤

② 使用 Elastic APM 的 traceId 進(jìn)行鏈路追蹤

③ MDC 方案:自己生成 traceId 并 put 到 MDC 里面。

項(xiàng)目初期,先不引入過多的中間件,用簡(jiǎn)單可行的方案先嘗試,所以這里用第三種方案 MDC。

1.2 MDC 方案

MDC(Mapped Diagnostic Context)用于存儲(chǔ)運(yùn)行上下文的特定線程的上下文數(shù)據(jù)。因此,如果使用 log4j 進(jìn)行日志記錄,則每個(gè)線程都可以擁有自己的MDC,該 MDC 對(duì)整個(gè)線程是全局的。屬于該線程的任何代碼都可以輕松訪問線程的 MDC 中存在的值。

三、原理和實(shí)戰(zhàn)

2.1 追蹤一個(gè)請(qǐng)求的多條日志

我們先來看第一個(gè)痛點(diǎn),如何在一個(gè)請(qǐng)求中,將多條日志串聯(lián)起來。

該方案的原理如下圖所示:

圖片

(1)在 logback 日志配置文件中的日志格式中添加 %X{traceId} 配置。

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{traceId} %-5level %logger - %msg%n</pattern>

(2)自定一個(gè)攔截器,從請(qǐng)求的 header 中獲取 traceId ,如果存在則放到 MDC 中,否則直接用 UUID 當(dāng)做 traceId,然后放到 MDC 中。

(3)配置攔截器。

當(dāng)我們打印日志的時(shí)候,會(huì)自動(dòng)打印 traceId,如下所示,多條日志的 traceId 相同。

圖片

示例代碼

攔截器代碼:

/**
* @author www.passjava.cn,公眾號(hào):悟空聊架構(gòu)
* @date 2022-07-05
*/
@Service
public class LogInterceptor extends HandlerInterceptorAdapter {

private static final String TRACE_ID = "traceId";

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String traceId = request.getHeader(TRACE_ID);
if (StringUtils.isEmpty(traceId)) {
MDC.put("traceId", UUID.randomUUID().toString());
} else {
MDC.put(TRACE_ID, traceId);
}

return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//防止內(nèi)存泄露
MDC.remove("traceId");
}
}

配置攔截器:

/**
* @author www.passjava.cn,公眾號(hào):悟空聊架構(gòu)
* @date 2022-07-05
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

@Resource
private LogInterceptor logInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor).addPathPatterns("/**");
}
}

2.2 跨服務(wù)跟蹤多條日志

解決方案的原理圖如下所示:

圖片

訂單服務(wù)遠(yuǎn)程調(diào)用優(yōu)惠券服務(wù),需要在訂單服務(wù)中添加 OpenFeign 的攔截器,攔截器里面做的事就是往 請(qǐng)求的 header 中添加 traceId,這樣調(diào)用到優(yōu)惠券服務(wù)時(shí),就能從 header 中拿到這次請(qǐng)求的 traceId。

代碼如下所示:

/**
* @author www.passjava.cn,公眾號(hào):悟空聊架構(gòu)
* @date 2022-07-05
*/
@Configuration
public class FeignInterceptor implements RequestInterceptor {
private static final String TRACE_ID = "traceId";

@Override
public void apply(RequestTemplate requestTemplate) {
requestTemplate.header(TRACE_ID, (String) MDC.get(TRACE_ID));
}
}

兩個(gè)微服務(wù)打印的日志中,兩條日志的 traceId 一致。

圖片

當(dāng)然這些日志都會(huì)導(dǎo)入到 Elasticsearch 中的,然后通過 kibana 可視化界面搜索 traceId,就可以將整個(gè)調(diào)用鏈路串起來了!

四、總結(jié)

本篇通過攔截器、MDC 功能,全鏈路加入了 traceId,然后將 traceId 輸出到日志中,就可以通過日志來追蹤調(diào)用鏈路。不論是進(jìn)程內(nèi)的方法級(jí)調(diào)用,還是跨進(jìn)程間的服務(wù)調(diào)用,都可以進(jìn)行追蹤。

另外日志還需要通過 ELK Stack 技術(shù)將日志導(dǎo)入到 Elasticsearch 中,然后就可以通過檢索 traceId,將整個(gè)調(diào)用鏈路檢索出來了。

責(zé)任編輯:武曉燕 來源: 悟空聊架構(gòu)
相關(guān)推薦

2019-08-21 17:41:29

操作系統(tǒng)軟件設(shè)計(jì)

2020-09-11 09:44:04

微服務(wù)分布式鏈路

2022-05-23 08:23:24

鏈路追蹤SleuthSpring

2023-12-15 09:57:13

微服務(wù)鏈路服務(wù)

2020-04-07 15:12:07

微服務(wù)架構(gòu)數(shù)據(jù)

2022-12-15 22:01:04

TLog日志標(biāo)簽

2022-05-25 08:23:32

ZipKinTwitter開源項(xiàng)目

2025-03-11 14:16:09

2024-08-21 08:09:17

2022-08-05 10:03:17

分布式微服務(wù)

2023-10-16 23:43:52

云原生可觀測(cè)性

2017-05-08 14:27:49

PHP框架函數(shù)框架

2018-08-15 10:51:01

JavaSpring MVC框架

2025-10-10 08:58:13

2017-05-25 12:40:06

SOA微服務(wù)系統(tǒng)

2022-07-22 07:59:17

日志方案

2023-08-24 22:13:31

2024-06-07 13:04:31

2020-12-16 09:24:18

Skywalking分布式鏈路追蹤

2023-01-30 22:34:44

Node.js前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美第一黄网免费网站| 国产精品视频免费看| 午夜欧美大片免费观看| 国产jk精品白丝av在线观看| 国产亚洲人成a在线v网站| 亚洲黄色av一区| 免费一区二区三区| 国产精品怡红院| 国产精品亚洲综合久久| 日韩在线国产精品| 国产av熟女一区二区三区| 91精品91久久久中77777老牛| 女人天堂在线| 国产尤物一区二区| 人体精品一二三区| 久久久久久久久久99| 国产日产精品一区二区三区四区的观看方式 | 日韩影院免费视频| 久久久久久美女| 国产黄a三级三级| 亚洲第一福利专区| 日韩一区二区三区在线视频| 日本成人中文字幕在线| 69av成人| 亚洲精品久久7777| 中文字幕超清在线免费观看| 国产高清一区在线观看| 91麻豆国产福利精品| av观看久久| 国产又粗又大又黄| 视频一区在线视频| 日本精品免费观看| 久久国产精品波多野结衣| 欧美国产一级| 国产一区二区三区在线观看视频| 在线看黄色的网站| 亚洲成人影音| 欧美一区二区三区在线电影| 五月天激情播播| 国产a级片网站| 色婷婷**av毛片一区| 日韩精品一区二区在线视频| 在线免费黄色| 国产区在线观看成人精品| 久久国产一区| 天天干免费视频| 成人久久久精品乱码一区二区三区| 91在线观看免费观看| 一本色道久久综合熟妇| 麻豆精品一二三| 国产精品亚洲激情| 中文字字幕在线观看| 日韩av一区二| 国产精品视频网址| 伊人成年综合网| 日本在线不卡一区| 国产精品欧美一区二区| 国产精品无码一区| 久久精品国产色蜜蜜麻豆| 国产精品美女主播在线观看纯欲| 97人妻精品视频一区| 天堂久久一区二区三区| 国产精品第10页| 在线观看你懂的网站| 日韩黄色在线观看| 国产美女久久久| 一级淫片免费看| 国产一区二区三区美女| 99porn视频在线| 欧美性猛交 xxxx| 99精品国产91久久久久久| 久久精品丝袜高跟鞋| 三级黄视频在线观看| 2020国产精品久久精品美国| 日本不卡二区| 亚洲乱亚洲乱妇| 亚洲精品成人少妇| 日本中文字幕网址| 韩国美女久久| 91精品国产综合久久久久| 中文字幕一二三区| 亚洲精品国产动漫| 日日骚久久av| 免费一级片视频| 国产精品普通话对白| 国产成一区二区| 91久久精品无码一区二区| 国产v综合v亚洲欧| 玛丽玛丽电影原版免费观看1977 | 欧洲亚洲视频| 在线成人激情黄色| 手机av在线看| 亚洲欧美日韩一区在线观看| 国产欧美精品久久久| 成人乱码一区二区三区| 国产三级精品三级| 99热这里只有精品免费| 电影网一区二区| 宅男噜噜噜66一区二区66| 一区二区免费在线观看视频| 日本道不卡免费一区| 欧美极品欧美精品欧美视频| 在线免费一区二区| 不卡高清视频专区| 国产又粗又硬又长| 日韩影片中文字幕| 精品国产一区久久| 99热在线观看精品| 午夜亚洲性色福利视频| 91成人理论电影| yw视频在线观看| 亚洲不卡一区二区三区| 亚洲精品视频三区| 亚洲老女人视频免费| 久久在精品线影院精品国产| 无码人妻丰满熟妇区bbbbxxxx| 国产一区二区在线电影| 偷拍视频一区二区| 九色porny自拍视频在线观看| 欧美精品123区| 欧美老女人性生活视频| 国产欧美另类| 99视频在线播放| 黄色在线播放网站| 欧美中文字幕一区二区三区| 制服丝袜第一页在线观看| 欧美日韩精品| 成人精品福利视频| 尤物在线视频| 日韩欧美亚洲国产一区| 国产十八熟妇av成人一区| 亚洲色图网站| 成人亚洲激情网| 尤物在线视频| 欧美精品三级日韩久久| 蜜桃视频最新网址| 日本sm残虐另类| 色一情一乱一伦一区二区三欧美| 国产精品伦理| 国产亚洲福利一区| 蜜臀尤物一区二区三区直播| 久久精品人人做人人爽97| 国产一区二区三区精彩视频| 麻豆一区二区麻豆免费观看| 国模私拍一区二区三区| 人妻中文字幕一区| 亚洲国产日韩a在线播放性色| 极品人妻一区二区| 亚洲国产专区校园欧美| 精品国产乱码一区二区三区四区| 丁香花在线高清完整版视频| 欧美成人三级在线| 国产无遮挡又黄又爽又色| 成人激情黄色小说| av动漫在线看| 精品视频99| 成人写真福利网| 欧洲在线视频| 日韩激情视频在线| 天天干天天操天天操| 国产三区在线成人av| 老司机久久精品| 中文字幕免费一区二区| 国产亚洲精品美女久久久m| 中日韩脚交footjobhd| 在线视频精品一| 一级黄色片在线| 亚洲综合区在线| 中文字幕影片免费在线观看| 久久一二三四| 91视频成人免费| 久久激情av| 国产精品久久激情| 综合图区亚洲| 日韩精品免费看| 国产伦一区二区| 午夜免费久久看| 天堂av网手机版| 高清国产一区二区| 不要播放器的av网站| 天天av综合| 久久av一区二区三区漫画| 国产精品久久久久av电视剧| 另类图片亚洲另类| 香蕉久久国产av一区二区| 欧美在线看片a免费观看| 午夜成人亚洲理伦片在线观看| 高清不卡一二三区| 北条麻妃在线视频| 真实国产乱子伦精品一区二区三区| 国产一区二区自拍| 日韩亚洲国产免费| 91av成人在线| 麻豆网站在线看| 亚洲精品丝袜日韩| 国产手机av在线| 色香色香欲天天天影视综合网| 好吊色视频在线观看| 久久久久久黄色| 亚洲精品鲁一鲁一区二区三区| 三级精品在线观看| 全黄性性激高免费视频| 色135综合网| 色欧美片视频在线观看在线视频| 手机在线免费观看毛片| 亚洲视频福利| 一区二区三区我不卡| 日韩av网址大全| 亚洲精品欧美日韩专区| 欧美黑人粗大| 午夜精品一区二区三区在线视| 国产成人l区| 一区二区三区视频免费| 色一情一乱一乱一区91av| 制服丝袜av成人在线看| 无码人妻精品一区二区| 亚洲1区2区3区4区| 婷婷久久综合网| 国产精品久久久久天堂| 国产精品无码一区二区三区| 成人国产精品免费观看动漫 | 国产成人午夜高潮毛片| 五月婷婷之综合激情| 亚洲欧美bt| 777精品久无码人妻蜜桃| 欧美精品观看| 日韩欧美视频免费在线观看| 亚洲a一区二区三区| 亚洲欧洲国产精品久久| 欧美精选视频在线观看| 清纯唯美一区二区三区| 久久av影视| 欧美高清视频一区二区三区在线观看| 爱爱精品视频| 风间由美久久久| 999国产精品一区| 国产美女在线精品免费观看| 亚洲乱码一区| 国产精品9999久久久久仙踪林| 亚洲成av人片在线观看www| 97视频资源在线观看| 日本一区二区三区播放| 91香蕉国产在线观看| 欧美精品三级在线| 成人精品一二区| 高清精品视频| 精品一区久久久| 欧美日韩爱爱| 亚洲电影免费| 欧美电影《睫毛膏》| 国产高清免费在线| 一本精品一区二区三区| 黄色特一级视频| 亚洲精品国产日韩| 久草精品在线播放| 麻豆精品视频在线观看免费| 午夜影院免费观看视频| 国产成人精品免费| 国产二级一片内射视频播放| 久久久午夜精品理论片中文字幕| 亚洲日本精品视频| 国产精品久久久久久久久久免费看 | 国产精品成人v| 亚洲ww精品| 91九色在线观看| 欧美色图五月天| 亚洲a∨一区二区三区| 亚洲欧美综合久久久| 2018国产在线| 日韩福利电影在线观看| 色www免费视频| 国产成人高清在线| www.狠狠爱| 亚洲欧美aⅴ...| 国产a∨精品一区二区三区仙踪林| 色拍拍在线精品视频8848| 一区二区三区黄| 亚洲成人黄色网| av在线免费播放网站| 欧美福利视频在线观看| 美女日韩欧美| 亚洲综合精品伊人久久| 日韩极品在线| 黄色免费高清视频| 亚洲一区二区免费看| 在线一区二区不卡| 91亚洲精品久久久蜜桃| 99热99这里只有精品| 亚洲成人777| 国产精品福利电影| 日韩国产精品一区| 最新国产露脸在线观看| 日韩av免费在线观看| 激情综合五月| 欧美动漫一区二区| 在线中文字幕亚洲| 污污视频网站免费观看| 风间由美一区二区三区在线观看| 欧美成人国产精品一区二区| 亚洲永久精品大片| 中文字幕 欧美激情| 亚洲国内精品在线| 91精选在线| 国产欧美精品日韩| 美女精品一区最新中文字幕一区二区三区| 午夜啪啪福利视频| 日韩福利视频导航| 极品白嫩丰满美女无套| 亚洲一区在线电影| 91在线你懂的| 一本一本久久a久久精品综合小说| av老司机在线观看| 91九色视频在线观看| 外国成人激情视频| 男女爽爽爽视频| 26uuu精品一区二区| 精品在线视频观看| 欧美一区二区三区电影| 米奇精品一区二区三区| 国产精品96久久久久久又黄又硬| 日本午夜精品久久久| 日韩亚洲欧美视频| 国产成人av电影免费在线观看| 老司机深夜福利网站| 欧美午夜在线观看| 成人免费视频| 国产精品成熟老女人| 女人av一区| 人妻少妇被粗大爽9797pw| 99re热这里只有精品免费视频| 久久久精品视频免费| 欧美成人a视频| 日皮视频在线观看| av在线不卡一区| 国产精品v亚洲精品v日韩精品| 伊人免费视频二| 亚洲乱码中文字幕| 国产丰满美女做爰| 欧美人在线观看| 深夜激情久久| 久久综合久久网| gogo大胆日本视频一区| 日韩少妇裸体做爰视频| 亚洲国产精品va在线看黑人动漫| 成年人视频免费在线播放| 动漫精品视频| 日韩网站在线| 亚洲天堂久久新| 欧美亚一区二区| 激情成人四房播| 亚洲最大成人网色| 黄色亚洲免费| 中文乱码人妻一区二区三区视频| 欧美日韩午夜激情| 韩国精品视频| 成人免费淫片视频软件| 亚洲字幕久久| 麻豆精品国产传媒av| 欧美视频国产精品| 1769在线观看| 91视频在线免费观看| 亚洲精品专区| 国产精品国产三级国产专业不| 欧美午夜宅男影院| av毛片在线播放| 久久精品久久精品国产大片| 蜜桃视频在线观看一区二区| 久久久久亚洲av无码专区体验| 亚洲高清久久网| 麻豆精品蜜桃| 天堂8在线天堂资源bt| 26uuu国产电影一区二区| 欧美日韩在线视频播放| 麻豆乱码国产一区二区三区 | 亚洲啪啪av| 国产一区二区三区久久久 | 久久人人九九| 精品一区二区三区免费播放| 免费三片在线播放| 亚洲天堂av高清| 日韩欧美中文字幕一区二区三区| 免费观看美女裸体网站| 中文字幕不卡在线播放| 成 人 免费 黄 色| 日韩免费视频在线观看| 中文不卡在线| 免费网站在线高清观看| 欧美成人午夜电影| 亚洲电影有码| 日韩精品在线中文字幕| 亚洲国产精华液网站w| 丁香六月色婷婷| 国产精品欧美日韩| 亚洲啪啪91| av激情在线观看| 伊人激情综合网| 日韩三级毛片| xxxx国产视频| 欧美日韩一级片网站| 色偷偷色偷偷色偷偷在线视频|