精品欧美一区二区三区在线观看 _久久久久国色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)

日本网站免费观看| 日本爱爱免费视频| 天堂在线资源库| 天堂蜜桃一区二区三区 | 亚洲天堂自拍偷拍| 欧美在线三级| 日韩h在线观看| 一道本在线免费视频| h片在线免费| 91在线视频网址| 91色中文字幕| 中文字幕一区在线播放| 亚洲综合色站| 亚洲欧美在线一区| 免费国偷自产拍精品视频| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 国产精品国产三级国产普通话99| 91gao视频| 久久亚洲精品石原莉奈| 欧美大片一区| 国产亚洲激情在线| 中文字幕乱码一区| 精品一区视频| 91精品办公室少妇高潮对白| 69精品丰满人妻无码视频a片| 黄色在线免费观看大全| 成人网在线播放| 成人av资源在线播放| 国产婷婷色一区二区在线观看| 中文字幕日韩一区二区不卡| 曰本色欧美视频在线| 黄色在线免费播放| 日韩欧美另类中文字幕| 欧美日韩视频一区二区| 亚洲成熟丰满熟妇高潮xxxxx| 日韩专区av| 亚洲三级免费电影| 亚洲最新在线| 超碰国产在线| 久久精品人人做人人综合| 国产视频精品网| 精品人妻一区二区三区麻豆91| 日韩av网站在线观看| 国产91成人在在线播放| 国产精品99精品无码视| 午夜国产精品视频免费体验区| 丝袜美腿亚洲一区二区| 黄色激情小视频| 日韩精品免费| 色偷偷av亚洲男人的天堂| 蜜桃传媒一区二区亚洲| 国产99久久| 亚洲欧美中文日韩在线| 免费在线观看你懂的| 久久丝袜视频| 日韩国产欧美精品一区二区三区| 中文成人无字幕乱码精品区| 给我免费播放日韩视频| 精品91自产拍在线观看一区| 国产xxx在线观看| aiss精品大尺度系列| 精品少妇一区二区三区免费观看| 绯色av蜜臀vs少妇| 成人爽a毛片免费啪啪红桃视频| 日韩精品一区二区三区老鸭窝| 一卡二卡三卡四卡五卡| 蜜桃精品视频| 亚洲第一区第二区| 激情综合丁香五月| 国产aⅴ精品一区二区三区久久| 亚洲人高潮女人毛茸茸| 男人的天堂官网| 欧美第一精品| 久久偷看各类女兵18女厕嘘嘘| 色欲人妻综合网| 欧美成人有码| 97高清免费视频| 久久久久久不卡| 久久99精品国产麻豆不卡| 亚洲一区二区三区香蕉| 丰满人妻av一区二区三区| 91小视频免费看| 视频一区免费观看| а√天堂官网中文在线| 午夜激情综合网| 中文字幕视频在线免费观看| 日韩av黄色| 亚洲国产成人91精品| 午夜在线观看一区| 亚洲女同中文字幕| 欧美亚洲激情在线| 在线观看免费观看在线| 成人激情校园春色| 日本不卡一区二区三区视频| 二区在线播放| 欧美午夜片欧美片在线观看| www.日本一区| 精品精品国产毛片在线看| 一区二区欧美久久| 久久无码精品丰满人妻| 日韩制服丝袜先锋影音| 成人免费观看网站| аⅴ资源新版在线天堂| 亚洲综合色区另类av| 天天操天天爽天天射| 1204国产成人精品视频| 在线亚洲男人天堂| 日韩精品久久久久久久酒店| 久久国产精品一区二区| 国产一区免费在线观看| 精品国产丝袜高跟鞋| 欧美午夜精品久久久久久浪潮| 黄色aaaaaa| 国内精品伊人久久久| 国模精品一区二区三区色天香| 中文av免费观看| k8久久久一区二区三区| 咪咪色在线视频| 免费日韩电影| 亚洲精品在线一区二区| 日韩视频中文字幕在线观看| 日本欧美韩国一区三区| 国内成+人亚洲| 黄网站免费在线观看| 在线观看网站黄不卡| 不许穿内裤随时挨c调教h苏绵| 久久密一区二区三区| 2019亚洲男人天堂| 国产小视频免费观看| 最新日韩av在线| 日日噜噜夜夜狠狠| 蜜桃一区二区三区| 91精品国产91久久久久久最新| 99国产精品99| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 刘亦菲久久免费一区二区| 国产精品国产馆在线真实露脸 | av在线日韩| 日韩av在线导航| 日本少妇bbwbbw精品| 国产suv精品一区二区6| 蜜臀在线免费观看| 国产日韩一区二区三免费高清| 中文字幕精品在线视频| 日本中文字幕在线观看视频| www国产亚洲精品久久麻豆| 日韩精品在线观看av| 美女精品视频在线| 久久69精品久久久久久国产越南| 一区二区三区免费观看视频| 国产精品人妖ts系列视频| 成人午夜激情av| 国产一区二区三区网| 国产成人久久久精品一区| 日本中文字幕一区二区有码在线| 精品动漫一区二区三区| 91视频啊啊啊| 久久av一区| 欧美污视频久久久| 国产超碰精品| 中文字幕不卡在线视频极品| 一级欧美一级日韩| 亚洲日本中文字幕区| 制服.丝袜.亚洲.中文.综合懂 | 欧美巨乳在线观看| a天堂在线观看视频| 一区二区日韩av| 俄罗斯黄色录像| 午夜综合激情| 日韩欧美亚洲精品| 久久91超碰青草在哪里看| 久久亚洲国产精品成人av秋霞| 国产毛片一区二区三区va在线 | 你懂的国产在线| 2020国产精品久久精品美国| www日韩视频| 99久久激情| wwwxx欧美| 午夜伦理福利在线| 中文字幕欧美日韩| 国产熟女一区二区丰满| 亚洲国产精品自拍| 丝袜美腿中文字幕| 久久精品国产一区二区三| 久久久无码中文字幕久...| jizz性欧美2| 国产精品电影久久久久电影网| 免费黄色电影在线观看| 亚洲第一男人天堂| 一区二区视频免费| 亚洲成a人片在线不卡一二三区| wwwwxxxx国产| 国产一区二区三区免费在线观看| 亚洲美免无码中文字幕在线 | 精品不卡一区二区| 亚洲三级在线看| 波多野结衣 在线| 国产一区在线看| 亚欧无线一线二线三线区别| 色小子综合网| 精品视频在线观看| 国产aⅴ精品一区二区四区| 欧美孕妇性xx| 亚洲第一图区| 亚洲新中文字幕| 东京干手机福利视频| 在线精品视频小说1| 久久久久无码国产精品| 国产精品日日摸夜夜摸av| 国产精品手机在线观看| 老司机一区二区| 国模吧无码一区二区三区| 午夜激情一区| 日韩一区二区三区高清| 久久久久97| 97视频热人人精品| 精品176极品一区| 欧美一级在线播放| 人人澡人人添人人爽一区二区| 中文字幕欧美视频在线| 日本一二三区在线视频| 亚洲成人精品视频在线观看| 国产精品久久久久久久久久久久久久久久 | 日韩精品――中文字幕| 亚洲男人的天堂在线aⅴ视频| 人人妻人人藻人人爽欧美一区| 粉嫩一区二区三区性色av| 亚洲天堂av一区二区| 丝袜脚交一区二区| 高清在线观看免费| 伊人久久亚洲美女图片| 国产美女视频免费| 欧美激情电影| 天天爽天天狠久久久| 国产99久久精品一区二区300| 精品一卡二卡三卡四卡日本乱码| 97视频一区| 91入口在线观看| 国产精品一区二区三区四区在线观看 | 原纱央莉成人av片| 欧美在线一级va免费观看| yellow字幕网在线| 国外色69视频在线观看| 18video性欧美19sex高清| 欧美高清视频在线| 羞羞的视频在线看| 色与欲影视天天看综合网| av网址在线| 久久99国产精品自在自在app| 动漫一区在线| 欧美国产激情18| 国内小视频在线看| 国内精品久久久久久| 麻豆成全视频免费观看在线看| 韩国日本不卡在线| 热三久草你在线| 日本高清视频一区| av一区在线播放| 国产日韩在线一区| 精品亚洲二区| 国产高清在线精品一区二区三区| 精品国产导航| 欧美在线视频二区| 日韩电影免费在线观看| 色哺乳xxxxhd奶水米仓惠香| 好看的av在线不卡观看| 男人日女人逼逼| 视频一区视频二区在线观看| 在线看的黄色网址| 精品一区二区成人精品| 日韩a一级欧美一级| 成人精品在线视频观看| 双性尿奴穿贞c带憋尿| 中文字幕av不卡| www.xxxx日本| 精品久久久久久亚洲国产300| 欧美一级淫片免费视频黄| 欧美美女直播网站| 你懂的网站在线| 亚洲欧美日本精品| 国产一二区在线| 久久久久久久久亚洲| 欧美羞羞视频| 95av在线视频| 亚洲肉体裸体xxxx137| 亚洲一区美女| 91久久午夜| 亚洲第一中文av| 国产91综合网| 成人黄色免费网址| 亚洲一二三四在线观看| av一级在线观看| 日韩亚洲欧美高清| 激情综合闲人网| 欧美人在线视频| 桃花岛成人影院| 91成人免费看| 不卡在线一区| 可以看毛片的网址| 蜜桃视频在线一区| 中文字幕乱码一区| 国产精品国产三级国产有无不卡| 久久精品国产亚洲av香蕉| 欧美性受xxxx黑人xyx性爽| 丰满人妻一区二区三区无码av| 伊人久久综合97精品| 成人免费图片免费观看| 国产日韩在线看片| 欧美日本成人| 隔壁人妻偷人bd中字| 蜜桃视频第一区免费观看| 超碰男人的天堂| 亚洲人成亚洲人成在线观看图片| 久久国产黄色片| 精品日韩一区二区三区免费视频| 91在线网址| 97激碰免费视频| 国产日韩欧美中文在线| 亚洲春色在线| 美女日韩在线中文字幕| www.四虎精品| 亚洲女同女同女同女同女同69| 国产一级片av| 日韩av网址在线观看| 四虎亚洲精品| 亚洲一区亚洲二区亚洲三区| 999国产精品视频| 九一精品在线观看| 91麻豆蜜桃一区二区三区| 国产中文字字幕乱码无限| 3d动漫精品啪啪一区二区竹菊| av在线中文| 国产精品久久综合av爱欲tv| 日韩伦理一区二区三区| 少妇人妻无码专区视频| 国产精品1区2区| 欧美国产日韩在线观看成人| 欧美视频日韩视频在线观看| 色就是色亚洲色图| 欧美最猛性xxxxx亚洲精品| 欧美黄色网视频| 欧美变态另类刺激| av午夜精品一区二区三区| 久久午夜无码鲁丝片| 精品久久国产字幕高潮| 麻豆福利在线观看| 国产亚洲精品美女久久久m| 激情一区二区| 亚洲av成人片色在线观看高潮 | 久久久精品国产一区二区| 国产精品天堂蜜av在线播放| 亚洲激情电影在线| 毛片av中文字幕一区二区| 五月婷婷欧美激情| 欧美日本免费一区二区三区| 成人免费视屏| av一区观看| 精品1区2区3区4区| 岛国av免费观看| 精品露脸国产偷人在视频| 日本在线视频1区| 国产精品美女主播| 欧美h版在线| 青青草精品在线| 亚洲自拍偷拍图区| 视频一区二区三区在线看免费看| 2019av中文字幕| 精品视频日韩| 亚洲一区精品视频在线观看| 亚洲精品久久久蜜桃| 天堂中文网在线| 国产成人精品久久二区二区91| 色综合天天爱| 夜夜夜夜夜夜操| 一区二区久久久久久| 无码国产精品96久久久久| 国产成人黄色av| 仙踪林久久久久久久999| 无码国产精品久久一区免费| 欧美性猛交视频| 久久黄色美女电影| 国产精品免费一区二区三区| 午夜宅男久久久| 国产人妻精品一区二区三区不卡| 亚洲精品在线三区| 99久久er| 蜜臀精品一区二区| 欧美国产日韩亚洲一区| 国产熟女一区二区丰满| 欧洲中文字幕国产精品| 希岛爱理一区二区三区| 欧美高清性xxxx| 91精品国产日韩91久久久久久| 黄频免费在线观看| 中文字幕一区二区三区在线乱码| 国产69精品一区二区亚洲孕妇| 无码人妻丰满熟妇区五十路| 精品自在线视频| 精品国产一区二区三区| 亚洲欧美日韩中文字幕在线观看|