基于開源Drasi 實時監控和自動響應系統
Drasi 是微軟使用MIT協議開源的一個項目,已經提交到CNCF孵化,github:https://github.com/drasi-project/drasi-platform/ ,他提供了一個集成解決方案,可以用于監控變化并自動做出適當的響應,解決擴展事件驅動系統所面臨的挑戰。它提供了一個統一的框架,降低了復雜性并能確保及時響應,使開發人員無需手動構建源(Source):這些源可監控各種數據點,包括應用程序日志、數據庫變化和系統指標。
Drasi 是一種全面的解決方案,提供內置功能來跟蹤特定事件的系統日志和更改源、評估它們的相關性并自動啟動適當的反應。 Drasi 包含以下三個核心的基本組件:
- 源(Source):這些源可監控各種數據點,包括應用程序日志、數據庫變化和系統指標。源可以實時跟蹤變化,捕獲數據而無需將其復制到中央存儲庫或數據湖。
- 連續查詢(Continuous Query):Drasi 不依賴傳統的時間點查詢,而是使用連續查詢,在數據到達時對其進行評估。這些查詢是使用 Cypher 查詢語言編寫的,整合了多個源的信息,無需人工干預即可不斷地更新結果。
- 響應(Reaction):當變化符合連續查詢中定義的標準時,Drasi 會自動觸發響應,包括發送警報、更新系統或根據特定業務需求啟動補救措施等任務。

Cypher 支持
連續查詢是使用Cypher 查詢語言的子集編寫的。如果您是 Cypher 新手,Cypher 查詢語言的原始創建者 Neo4J 有很多資源可以幫助您理解、學習和嘗試 Cypher,包括:
它是一種被嚴重低估的查詢語言,雖然大多數查詢也可以轉換為關系 SQL,使用 WITH 子句的 Cypher 線性構造更容易推理。
Cypher 的關鍵之一(至少在圖形數據庫的上下文中)是它有一種很好的方法將“JOIN”操作表示為圖形遍歷。
MATCH (p:Person)-[r]-(c:Company) RETURN p.Name, c.Name
其中 `r` 可以表示兩個集合 `Person` 和 `Company` 之間的任何關系(又稱為 `JOIN`),例如 `WORKS_AT`、`EMPLOYED_BY`、`CONTRACTOR_FOR` 等。
Drasi 不僅僅是在數據上運行圖形查詢,它還使用 Cypher 查詢語言作為一種方便的方式來表達您想要觀察的數據變化。
Dapr 支持
Drasi 的基礎架構是Dapr 支撐的,在以下方面支持:
(1) 事件源與 Dapr 的集成
Drasi 支持多種數據源(如日志、數據庫更新、Azure Event Grid 等)。而 Dapr 的 發布/訂閱(Pub/Sub) 功能可用于在不同服務間傳遞事件消息。例如,Dapr 的 Pub/Sub 組件(如 Redis、Azure Service Bus)可作為 Drasi 的事件源之一,幫助 Drasi 捕獲跨系統的實時事件流。
(2)響應動作觸發 Dapr 服務
Drasi 的響應(Reaction)機制可觸發自定義操作,例如調用外部 API 或啟動修復流程。在此場景下,Dapr 的 服務調用(Service Invocation) 功能可用于安全、可靠地調用其他微服務,或在 Kubernetes 環境中通過 Sidecar 代理完成跨服務通信。
(3)狀態管理與查詢優化
Dapr 的 狀態管理(State Management) 組件支持持久化存儲(如 Redis、MySQL),可能被 Drasi 用于緩存連續查詢的中間結果或歷史數據,從而提升查詢效率。
(4) 技術生態的互補性
Dapr 的跨語言支持:Dapr 提供多語言 SDK(如 .NET、Java、Go),而 Drasi 的查詢語言 CQL 基于圖數據庫語法。兩者結合時,Dapr 可幫助 Drasi 兼容更多異構系統,擴展其應用場景。
Kubernetes 部署:Dapr 在 Kubernetes 中通過 Sidecar 注入運行,Drasi 同樣支持云原生部署。兩者可通過 Kubernetes 的注解(Annotations)協同配置,例如通過 Dapr 的服務發現機制優化 Drasi 的事件路由
參考文章:
歡迎大家掃描下面二維碼成為我的客戶,扶你上云

浙公網安備 33010602011771號