亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

回溯微服務架構中的異常

回溯微服務架構中的異常

斯蒂芬大帝 2021-09-12 16:53:34
我想問一個和建筑有關的問題。這個問題是在一次采訪中問我的,但我無法回答,也無法在網上找到任何令人信服的答案。問題是:- 假設您有 4 個相互通信的微服務,并且數據流的工作方式如下:-微服務 1 --> 微服務 2 --> 微服務 3 --> 微服務 4 --> 微服務 1現在假設微服務 3 中有一個異常,你如何追蹤這個異常并告訴微服務 1 這是異常并且它發生在微服務 3 中。提前致謝!
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

一種常見的方法是 - 將所有異常報告給集中式異常跟蹤服務,該服務聚合和跟蹤異常并通知開發人員。

這種模式的好處是 - 更容易查看異常并跟蹤其解決方案。

這種模式的缺點是——異常跟蹤服務是額外的基礎設施。

Careem 中,我們使用ELK 堆棧——我們使用 Logstash,它是一個服務器端數據處理管道,可以同時從所有微服務中攝取數據,對其進行轉換并將其發送到Elasticsearch。Kibana允許我們通過圖表和圖形來可視化數據,并具有廣泛的過濾、搜索等功能。

而且,如果是Microservice 1 --> Microservice 2 --> Microservice 3同步的通信方式,你總是可以在Microservice 1from Microservice 3through 中生成和接收一些自定義的錯誤響應Microservice 2。但是要獲得異常的完整堆棧跟蹤,最好將異常日志聚合在某個集中的地方。


查看完整回答
反對 回復 2021-09-12
?
www說

TA貢獻1775條經驗 獲得超8個贊

微服務架構的特性之一是分離關注點,這意味著在理想情況下,微服務 1 不應該知道微服務 3 的存在。它適用于 M2 并且唯一重要的事情是它的響應是否有效。

無論如何,如果您想跟蹤呼叫,可能有多種方法:

當 M3 生成異常時,它會將其發送回 M2,M2 將其按原樣傳播到 M1(或在不丟失信息的情況下包裝它)。

另一種變體是對trace信息有單獨的存儲,所以M1會生成唯一的ID,發送給M2,M2發送給M3,表示是單次請求。然后每個服務使用這個 ID 來存儲有關執行或任何其他指標的信息(通過調用一些 X 服務)。


查看完整回答
反對 回復 2021-09-12
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

首先,您需要在開始處理的第一個服務時或之前分配一個唯一的請求 ID。

您如何為分布式跟蹤生成唯一的請求 ID?使其結合實例 ID/名稱和時間戳。

如果微服務正在同步通信,那么您可以將其作為 http 響應發送。但是如果微服務通過像 kafka 這樣的流異步通信,那么您可以使用流來提供回調機制。流可能是例外,請求 id 成為分區鍵。


查看完整回答
反對 回復 2021-09-12
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號