天天看點

.NET 雲原生架構師訓練營(子產品二 基礎鞏固 RabbitMQ 業務場景詳解)--學習筆記2.6.5 RabbitMQ -- 業務場景詳解

2.6.5 RabbitMQ -- 業務場景詳解

  • 異步處理
  • 應用解耦
  • 流量削鋒
  • 日志處理

  • 串行方式
  • 并行方式
  • 異步方式

_userRepo.Add(user);
_emailService.Send(user);
_smsService.Send(user);      

_userRepo.Add(user);
var emailTask = _emailService.Send(user);
var smsTask = _smsService.Send(user);
await Task.WhenAll(emailTask, smsTask)      

var user = await _userRepo.Add(user);
_eventBus.publish(new UserRegisteredEvent(){ userId = user.Id })
return user;      

訂單系統 調用 庫存系統

改為

訂單系統 寫入 消息隊列

庫存系統 訂閱 消息隊列

實作解耦

使用者的請求,伺服器接收後,首先寫入消息隊列。假如消息隊列的長度超過最大數量,則直接抛棄使用者請求或跳轉到錯誤頁面

秒殺業務根據消息隊列中的請求資訊,再做後續處理

kafka:接收使用者日志的消息隊列

Logstash:日志解析,統一成 JSON 輸出給 Elasticsearch

Elasticsearch:實時日志分析服務的核心技術,一個 schemaless,實時 的資料存儲服務,通過 index 組織資料,兼具強大的搜尋和統計功能

Kibana:基于 Elasticsearch 的資料可視化元件,超強的資料可視化能力是衆多公司選擇 ELK stack 的重要原因