国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

關(guān)于「日志采樣」的一些思考及實踐

開發(fā) 前端
當(dāng)業(yè)務(wù)規(guī)模較小時,大家都傾向于享受日志帶來的便利,從而忽略日志帶來的潛在的負(fù)面影響,缺乏對日志的管控。在JD當(dāng)前用戶量、業(yè)務(wù)規(guī)模下,絕大多數(shù)C端系統(tǒng)、甚至B端系統(tǒng)都是高吞吐的,毫無疑問,過大的日志量對系統(tǒng)的性能、磁盤IO有著顯著負(fù)面影響,趕上大促時,問題尤為突出。

一、背景

系統(tǒng)日志可用于追蹤用戶操作軌跡,異常情況下,合理的日志有助于快速排查、定位問題,毫無疑問,打印日志對于系統(tǒng)是很重要的。

當(dāng)業(yè)務(wù)規(guī)模較小時,大家都傾向于享受日志帶來的便利,從而忽略日志帶來的潛在的負(fù)面影響,缺乏對日志的管控。在JD當(dāng)前用戶量、業(yè)務(wù)規(guī)模下,絕大多數(shù)C端系統(tǒng)、甚至B端系統(tǒng)都是高吞吐的,毫無疑問,過大的日志量對系統(tǒng)的性能、磁盤IO有著顯著負(fù)面影響,趕上大促時,問題尤為突出。日志在為我們提供便利的同時,也無時無刻成為一根刺,時不時刺我們一下。

作為一個共性問題,由于集團(tuán)暫沒推出統(tǒng)一的日志框架,不少團(tuán)隊都會嘗試基于log4j、logback 進(jìn)行輕度的封裝,通過跟配置中心聯(lián)動,增加一些諸如 '動態(tài)降級' 的功能、來緩解日志帶來的負(fù)面影響。降級帶來的效果是顯著的,但同時也讓系統(tǒng)喪失了記錄 '操作軌跡' 的能力,從而又帶來了新的問題。

此時,很容易想到,可以通過對 '請求' 采樣,實現(xiàn)請求日志的采樣輸出,并通過控制采樣比例平衡不同場景下日志對性能的影響,系統(tǒng)吞吐量較大時,降級采樣比例,系統(tǒng)吞吐量較低時,提高采樣比例。 促銷交易這邊目前恰好在做這方面相關(guān)的技術(shù)改造,通過在目前既存日志組件(通過 JD JSF 前置過濾器實現(xiàn))基礎(chǔ)上,實現(xiàn)請求線程的日志采樣,并提供擴(kuò)展 api 給業(yè)務(wù)系統(tǒng),實現(xiàn)整體上請求維度的日志采樣,從而盡可能的減少業(yè)務(wù)系統(tǒng)的改造,以下流程圖描述了大致落地過程,供參考,有興趣的可以評論區(qū)留言進(jìn)一步探討具體落地細(xì)節(jié)。

二、正文

在請求入口處,通過一定的采樣算法,計算當(dāng)前請求是否采樣,并借助 Java 的 ThreadLocal 機制,可以實現(xiàn)當(dāng)前請求線程的日志采樣。但是,大部分關(guān)注日志性能的系統(tǒng),往往處理邏輯也是復(fù)雜的,會有各樣的異步運算邏輯,因此,大量的日志不一定來自請求線程,更多的可能來自子線程、線程池線程,甚至嵌套在線程池線程下的線程。

如何將請求線程、子線程、線程池線程統(tǒng)一協(xié)調(diào)起來,實現(xiàn) '采樣標(biāo)識' 的跨線程透傳,從而確保請求維度采樣的一致性,是本文關(guān)注的重點,希望可以給大家提供一些思路、并附上我們業(yè)務(wù)場景下的具體案例。

(1)可以像 Transmittable Thread Local 一樣,通過對線程池類、或者任務(wù)類(Runnable、Callable)進(jìn)行包裝,將透傳邏輯封裝起來,JD內(nèi)部比較典型的用法有 pfinder、jade。

必須承認(rèn),使用這種方式實現(xiàn)是有一定優(yōu)勢的,但是奈何現(xiàn)在各團(tuán)隊都有自己獨特功能的線程池包裝類,并已經(jīng)在業(yè)務(wù)系統(tǒng)中廣泛使用,如果此時再增加一個處理 '日志采樣' 的包裝,會出現(xiàn)嵌套包裝的情況,這樣會讓程序變得混亂,增加理解成本,由于各包裝實現(xiàn)之間缺乏磨合,甚至面臨不可控的風(fēng)險,這樣做甚至有 '添亂' 的嫌疑,我認(rèn)為至少在當(dāng)前的環(huán)境下是不可取的。

(2)直接粗暴一些,在業(yè)務(wù)系統(tǒng)中,涉及子線程、線程池的地方,通過代碼 '顯式的' 將 '采樣標(biāo)識' 不斷透傳。

   這樣做是能達(dá)到目的的,但是,會有大量的邏輯代碼和業(yè)務(wù)耦合的情況(線程池越多,業(yè)務(wù)越復(fù)雜,耦合越嚴(yán)重),雖然單系統(tǒng)改造量不大(當(dāng)然,這個也是因系統(tǒng)而異),但是輻射面太廣,需要各業(yè)務(wù)系統(tǒng)都要配合改造,同時有影響業(yè)務(wù)邏輯的風(fēng)險,也不可取。

(3)將請求線程的控制邏輯跟具體業(yè)務(wù)解耦開來,封裝為一個組件,并在組件中提供合適的 api,將組件復(fù)用于各業(yè)務(wù)系統(tǒng),并根據(jù)業(yè)務(wù)系統(tǒng)具體情況,來決策是否使用 api 來處理異步線程(子線程、線程池線程的統(tǒng)一簡稱)的情況。

在沒有特別合適的、集團(tuán)級統(tǒng)一api的情況下,這是一種較為務(wù)實的做法,通過接入抽象組件來控制請求線程的日志采樣,并通過擴(kuò)展 api 來協(xié)調(diào)請求線程和異步線程的采樣一致性,并根據(jù)業(yè)務(wù)系統(tǒng)的實際情況,來決策是否需要 '修改代碼' 來協(xié)調(diào)異步線程。

   ① 如果業(yè)務(wù)系統(tǒng)中使用異步線程的處理邏輯較少,只接入組件,進(jìn)行請求線程的日志采樣即可。

   ② 如果業(yè)務(wù)系統(tǒng)中大量使用異步線程做邏輯,可接入組件再針對必要的地方通過擴(kuò)展 api 來協(xié)調(diào)請求線程和異步線程的采樣一致性。

   除上述外,應(yīng)該還有其他的辦法,比如 AOP 機制,但是 AOP 只能到最低方法粒度,對于存量系統(tǒng)來說,改造量還是偏大,如果是新系統(tǒng)開發(fā),可以考慮。

  最后,上面的思考都是偏向全局的,在具體實現(xiàn)時,需要考慮、斟酌的細(xì)節(jié)還有很多、下面拋磚引玉列出一些,希望對大家拓展思路有所幫助!

① 采樣的算法,是 '隨機' 還是 '對 traceId 取模',然后通過配置中心控制取樣比例。

 甚至跟入?yún)㈥P(guān)聯(lián)起來,對特定場景(對哪個接口、方法,按什么規(guī)則進(jìn)行入?yún)⒑Y選)進(jìn)行采樣,即所謂場景化采樣。

② 擴(kuò)展 api 應(yīng)該提供哪些功能,怎么封裝能做到讓業(yè)務(wù)應(yīng)用改動量最少?

③ 怎么保證全局(包括異步線程日志)請求 traceId 的一致性,這方面其實 pfinder 也有方案可供參考。

④ 采樣比例的最小粒度,是 百分之一、千分之一、還是萬分之一?

⑤ 整系統(tǒng)使用一個采樣概率(即當(dāng)前請求命中采樣時,各級別都打),還是各級別分別設(shè)置(分別設(shè)置時還要考慮聯(lián)動)。

⑥ 通常,我們傾向于,如果需要對當(dāng)前請求進(jìn)行采樣,可能 info、error 一塊打,也可能只打 error,但是不太可能只打 info 不打 error,所以需要有一個策略去控制。

⑦ 當(dāng)大量 error 產(chǎn)生時,怎么收斂日志?控制打印速率?甚至可以晉級一步,將磁盤IO 和打印速率聯(lián)動。

三、實踐

圖片

涉及異步線程時,使用擴(kuò)展 api 改造也相對簡潔:

// 改造前,線程池任務(wù)執(zhí)行邏輯
threadPoolExecutor.execute(() -> "your business logic");


// 使用擴(kuò)展 api 改造后,對 '線程池執(zhí)行邏輯' 進(jìn)行包裝,實現(xiàn) '采樣標(biāo)識' 的跨線程透傳
threadPoolExecutor.execute(XxxUtils.wrap(() -> "your business logic"));


責(zé)任編輯:武曉燕 來源: 京東云開發(fā)者
相關(guān)推薦

2018-06-29 14:51:41

Java健壯性實踐

2017-12-21 07:54:07

2021-06-10 10:02:19

優(yōu)化緩存性能

2012-12-19 09:36:49

測試自動化測試

2020-08-20 10:16:56

Golang錯誤處理數(shù)據(jù)

2017-05-02 21:08:35

開發(fā)架構(gòu)工程師

2021-02-06 14:25:29

Java延遲加載代碼

2020-02-03 16:03:36

疫情思考

2009-06-25 09:50:32

JSF

2021-06-15 07:10:14

JavaScript異步編程

2021-08-08 10:44:33

安卓系統(tǒng)開發(fā)者手機廠商

2015-10-12 08:59:57

異步代碼測試

2021-06-10 20:17:04

云網(wǎng)融合超融合

2011-11-30 15:57:18

2011-01-19 10:50:31

軟件設(shè)計師

2011-07-13 09:13:56

Android設(shè)計

2021-10-21 06:52:17

Vue3組件 API

2020-05-12 14:03:51

RedisZooKeeper分布式鎖

2018-07-11 14:06:04

數(shù)據(jù)質(zhì)量數(shù)據(jù)治理數(shù)據(jù)清洗
點贊
收藏

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

五月婷婷导航| 日韩国产一区| 色94色欧美sute亚洲线路一久| 青青在线视频观看| 欧美一级久久| 国产精品国产三级国产专区53| 国产午夜一区| 欧美最顶级的aⅴ艳星| 亚洲精品影片| www日韩欧美| 国产精品毛片久久久久久久久久99999999 | 欧美a一欧美| 欧美成人黑人xx视频免费观看| 精品91久久| 亚洲国产精品热久久| 欧美高清另类hdvideosexjaⅴ| 欧美疯狂做受xxxx富婆| 久久手机免费观看| 色哟哟亚洲精品| 青青草av免费在线观看| 一本在线高清不卡dvd| 最近最新中文字幕在线| 一区二区在线看| 写真福利片hd在线观看| 亚洲资源中文字幕| 污网站在线播放| 色婷婷av久久久久久久| 国产香蕉尹人视频在线| 日韩欧美国产骚| 成人精品一区二区| 91精品国产一区二区三区香蕉 | 国产精品日韩欧美一区二区| 亚洲少妇一区| 亚洲狠狠婷婷综合久久久| 久久精品国产亚洲高清剧情介绍| 中文字幕中文字幕在线中心一区| 成人性生交大片免费看视频在线| 2018日日夜夜| 国产精品久久三区| 国产特级毛片| 欧美日韩久久久一区| 少妇视频在线观看| 久久精品人人做人人爽| 国产日韩欧美一区二区三区| 国产伦精品一区二区三区四区视频| 丝袜亚洲另类欧美综合| 成人免费观看cn| 中文字幕五月欧美| 91涩漫在线观看| 日韩av在线免费观看一区| 国产精品xnxxcom| 国产精品久久久久久久久久久新郎| 欧美精品三区| 看全色黄大色大片| 亚洲欧美日韩在线不卡| 国产高清自拍视频在线观看| 亚洲国产成人av在线| 免费一级欧美片在线观看网站| 国产成人91久久精品| 国产欧美在线| 国产激情在线观看视频| 日韩欧美在线视频| 欧美成人资源| 国产精品99久久久久久久久久久久 | 红桃成人av在线播放| 久久精品国产理论片免费| 99视频精品全部免费在线| 在线免费观看h| 亚洲男人av在线| 欧美中文一区二区| 日韩视频一二三| 午夜a成v人精品| а√天堂8资源在线| 欧美在线视频免费播放| 免费观看在线综合色| 一女二男3p波多野结衣| 日韩欧美激情四射| 噜噜噜天天躁狠狠躁夜夜精品| 久久久水蜜桃| 亚洲特黄一级片| 秋霞在线视频| 国产精品久久久久久久久粉嫩av| 麻豆91精品视频| 伪装者在线观看完整版免费| 久久精品国产一区| 每日更新成人在线视频| 激情六月丁香| 久久久国产精品一区| 天堂精品中文字幕在线| 麻豆影视在线观看| 久热99视频在线观看| 丝袜亚洲精品中文字幕一区| 色网址在线观看| 欧美成人性生活| 九九久久精品视频| 91精品专区| 国产精品一区=区| 久久网站热最新地址| 老司机在线永久免费观看| 97超碰色婷婷| 国产精品一级片在线观看| 日本免费在线观看| 国产高清视频一区三区| 成人免费视频网站在线观看| 成人黄视频在线观看| 成人精品视频在线| 亚洲色图丝袜美腿| 成人在线视频www| 亚洲激情啪啪| 91精品国产欧美一区二区18 | 日本午夜一区二区| 国产在线视频网| 国产ts人妖一区二区三区| 久久综合九色综合97婷婷女人| 美女露胸视频在线观看| 精品久久久久久综合日本| 午夜成人免费视频| 久久不见久久见国语| 国产一级不卡毛片| 最近2019年好看中文字幕视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 91最新在线| 国产精品污www一区二区三区| 精品欧美一区二区三区| 欧洲杯半决赛直播| 91国内精品在线视频| 欧美日韩国产va另类| 国产成都精品91一区二区三| 色偷偷色偷偷色偷偷在线视频| 亚洲一二三区在线| 精品美女一区二区| 日本美女视频一区二区| 国产桃色电影在线播放| 色一情一区二区三区四区| 日韩欧美一二三| 老司机免费视频一区二区| 男女免费观看在线爽爽爽视频| 狠狠色综合欧美激情| 欧美在线免费播放| 亚洲国产一区二区三区在线播放| 91在线最新| 国产在线视频一区| 精品色蜜蜜精品视频在线观看| 天天影视欧美综合在线观看| 国产一级片在线播放| 欧美一区免费视频| 亚洲第五色综合网| 成人美女视频在线看| 北岛玲精品视频在线观看| 成人天堂入口网站| 国产综合色香蕉精品| 欧美丝袜丝nylons| 美国一区二区三区在线播放 | 欧美色图在线播放| 国产三级在线看| 欧美一区二区三区成人久久片| 精品国产一区二区亚洲人成毛片| 久久99精品久久只有精品| 91精品国产经典在线观看| 亚洲污视频在线观看| 成人午夜在线视频一区| 91精品国产全国免费观看| 国产成人啪午夜精品网站男同| 亚洲欧洲日韩精品在线| 男人天堂av网站| 久久精品成人一区二区三区蜜臀| 亚洲美女自拍视频| 亚洲欧美色图小说| 亚洲一卡久久| 色婷婷成人网| 香蕉av一区| 大地资源第二页在线观看高清版| 色噜噜狠狠色综合网图区| 亚洲综合色噜噜狠狠| 99精品福利视频| 祥仔av免费一区二区三区四区| 超碰97在线免费| 日本在线免费观看一区| 欧美区在线播放| 欧美性色aⅴ视频一区日韩精品| 国产综合一区二区| 另类ts人妖一区二区三区| 国产三级电影在线| 阿v天堂2018| 91美女片黄在线观| 精品丝袜一区二区三区| 中文字幕一区二区三区精华液 | 不卡在线观看av| 日韩大片在线观看| 亚洲精品福利电影| **毛片在线网站| 肉大捧一出免费观看网站在线播放| 日韩女在线观看| 日韩成人av在线| 亚洲国产精品精华液网站| 国产一区二区在线视频| 成人一二三区| 亚洲美女色播| 三级资源在线| 中日韩免费毛片|