日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
紅色切片監(jiān)控請(qǐng)求的實(shí)時(shí)追蹤(redis請(qǐng)求監(jiān)聽(tīng))

紅色切片:監(jiān)控請(qǐng)求的實(shí)時(shí)追蹤

在大型分布式系統(tǒng)中,了解請(qǐng)求的實(shí)時(shí)狀態(tài)和追蹤請(qǐng)求成為了關(guān)鍵問(wèn)題。當(dāng)出現(xiàn)問(wèn)題時(shí),追蹤請(qǐng)求是排查問(wèn)題的必要過(guò)程。為了實(shí)現(xiàn)請(qǐng)求的實(shí)時(shí)追蹤,我們可以采用紅色切片技術(shù)。

紅色切片是一種原理簡(jiǎn)單、易于實(shí)現(xiàn)的追蹤技術(shù)。其基本思想是將請(qǐng)求加上唯一的標(biāo)識(shí)(例如請(qǐng)求ID),并在請(qǐng)求通過(guò)系統(tǒng)各個(gè)節(jié)點(diǎn)時(shí)途徑所有節(jié)點(diǎn)的日志系統(tǒng)中記錄下該請(qǐng)求的標(biāo)識(shí)和請(qǐng)求處理的時(shí)間等信息。同時(shí),將請(qǐng)求在經(jīng)過(guò)不同節(jié)點(diǎn)時(shí)的日志信息縱向組成一個(gè)日志樹,就可實(shí)現(xiàn)請(qǐng)求的實(shí)時(shí)追蹤。而在系統(tǒng)中,紅色切片的實(shí)現(xiàn)也不難,下面介紹具體實(shí)現(xiàn)過(guò)程。

一、在每個(gè)請(qǐng)求中添加唯一標(biāo)識(shí)

為了進(jìn)行追蹤,需要在每個(gè)請(qǐng)求中添加唯一標(biāo)識(shí)。標(biāo)識(shí)可以是一個(gè)數(shù)字,也可以是一個(gè)GUID,這里以一個(gè)UUID為例:

“`java

public class RequestContext {

private final UUID traceId;

public RequestContext() {

this.traceId = UUID.randomUUID();

}

public UUID getTraceId() {

return traceId;

}

}


在系統(tǒng)中,當(dāng)每個(gè)請(qǐng)求進(jìn)入系統(tǒng)時(shí),都會(huì)創(chuàng)建一個(gè)新的RequestContext對(duì)象,并將其與請(qǐng)求相關(guān)聯(lián)。這個(gè)上下文對(duì)象中包含了UUID作為該請(qǐng)求的唯一標(biāo)識(shí),并通過(guò)getter方法可以讓其他組件隨時(shí)使用。

二、記錄請(qǐng)求處理信息

當(dāng)請(qǐng)求經(jīng)過(guò)不同節(jié)點(diǎn)時(shí),我們需要在日志系統(tǒng)中記錄下該請(qǐng)求的處理時(shí)間和唯一標(biāo)識(shí)信息。為了方便記錄,我們可以采用AOP(面向切面編程)思想,將記錄的代碼從業(yè)務(wù)代碼中抽離出來(lái)。例如,在Spring中,可以通過(guò)以下方式:

```java
@Aspect
@Component
public class RequestLoggingAspect {
private final Logger logger = LoggerFactory.getLogger(RequestLoggingAspect.class);

@Around("@annotation(log)")
public Object logRequest(ProceedingJoinPoint joinPoint, LogRequest log) throws Throwable {
long startTime = System.currentTimeMillis();
RequestContext context = RequestContextHolder.get();
logger.info("Request " + context.getTraceId() + " received");

Object proceed = null;
try {
proceed = joinPoint.proceed();
return proceed;
} finally {
long duration = System.currentTimeMillis() - startTime;
logger.info("Request " + context.getTraceId() + " completed in " + duration + " ms");
}
}
}

這里,我們將RequestLoggingAspect注解為一個(gè)切面(@Aspect),并定義其中一個(gè)環(huán)繞通知方法@Around。此方法會(huì)在被@LogRequest注解的方法執(zhí)行時(shí)調(diào)用,并在方法執(zhí)行前后記錄相關(guān)日志信息。

三、組織日志

當(dāng)日志記錄成功后,我們需要將日志內(nèi)容組成一個(gè)樹形結(jié)構(gòu),并將其存儲(chǔ)在中心化存儲(chǔ)介質(zhì)中。每個(gè)日志都包含該請(qǐng)求的唯一標(biāo)識(shí)信息和發(fā)生時(shí)間等信息,并標(biāo)識(shí)出該請(qǐng)求屬于哪個(gè)節(jié)點(diǎn)所在的日志文件。

而為了方便開(kāi)發(fā)人員查看,我們也需要提供一個(gè)查詢接口,可以通過(guò)輸入請(qǐng)求的唯一標(biāo)識(shí)信息,獲取由該請(qǐng)求引起的日志信息。例如,在Elasticsearch中,可以用如下代碼實(shí)現(xiàn):

“`java

RestHighLevelClient client = new RestHighLevelClient(

RestClient.builder(new HttpHost(“l(fā)ocalhost”, 9200, “http”)));

SearchRequest searchRequest = new SearchRequest(“l(fā)ogs-*”);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

String traceId = “123456”;

QueryBuilder query = QueryBuilders.termQuery(“traceId”, traceId);

sourceBuilder.query(query);

searchRequest.source(sourceBuilder);

SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);

for (SearchHit hit : search.getHits()) {

Map sourceAsMap = hit.getSourceAsMap();

System.out.println(sourceAsMap.get(“message”));

}


在這里,我們定義了一個(gè)SearchRequest對(duì)象,并設(shè)置其查詢條件,其中的termQuery方法會(huì)將traceId作為查詢條件輸入。執(zhí)行查詢后,返回的是所有與該traceId相關(guān)聯(lián)的日志信息。在實(shí)際生產(chǎn)環(huán)境中,我們還可以通過(guò)Logstash或Fluentd等工具對(duì)日志進(jìn)行收集和處理,以便后期的運(yùn)維和分析工作。

總結(jié)

紅色切片是一種簡(jiǎn)單、易于實(shí)現(xiàn)的請(qǐng)求追蹤技術(shù)。通過(guò)在每個(gè)請(qǐng)求中添加唯一標(biāo)識(shí),并記錄其在不同節(jié)點(diǎn)上的處理信息,我們可以有效地實(shí)現(xiàn)請(qǐng)求的實(shí)時(shí)追蹤。在實(shí)際開(kāi)發(fā)中,我們只需通過(guò)AOP切面等方式輕松實(shí)現(xiàn)紅色切片。而在日志的組織和查詢方面,Elasticsearch等工具也為我們提供了良好的支持,為開(kāi)發(fā)及后期運(yùn)維和分析帶來(lái)了很大的便利。

成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。


名稱欄目:紅色切片監(jiān)控請(qǐng)求的實(shí)時(shí)追蹤(redis請(qǐng)求監(jiān)聽(tīng))
轉(zhuǎn)載源于:http://m.5511xx.com/article/dhjijpo.html