本文提供使用完全受控 Azure 數據服務的串流解決方案範例。
架構
工作流程
Apache Kafka 事件中樞功能會串流來自 Kafka 產生者的事件。
Apache Spark 會取用事件。 AKS 為 Apache Spark 作業提供受控環境。
使用 Azure Cosmos DB for Apache Cassandra 的應用程式會將事件寫入 Cassandra。 此資料庫可作為事件的儲存平臺。 AKS 裝載寫入 Cassandra 的微服務。
Azure Cosmos DB 的變更摘要功能會即時處理事件。
排程的應用程式會在儲存在 Cassandra 的事件上執行批次導向處理。
參考數據的儲存會擴充事件資訊。 批次導向應用程式會將擴充的事件資訊寫入 PostgreSQL。 一般參考資料存放區包括:
- Azure Data Lake 儲存體,其可儲存開放格式的數據,例如 Parquet。
- 開放原始碼關係型數據存放區,例如 PostgreSQL 和 MySQL。
批次導向的應用程式會處理 Cassandra 數據。 該應用程式會將已處理的數據儲存在 適用於 PostgreSQL 的 Azure 資料庫 中。 此關係型數據存放區會將數據提供給需要擴充資訊的下游應用程式。
報告應用程式和工具會分析PostgreSQL資料庫數據。 例如,Power BI 會使用 適用於 PostgreSQL 的 Azure 資料庫 連接器連接到資料庫。 此報告服務接著會顯示數據的豐富視覺效果。
Azure Cache for Redis 提供記憶體內部快取。 在此解決方案中,快取包含重要事件的數據。 應用程式會將資料儲存至快取,並從快取擷取數據。
網站和其他應用程式會使用快取的數據來改善回應時間。 有時候快取中無法使用數據。 在這些情況下,這些應用程式會使用 另行快取模式 或類似的策略,從 Azure Cosmos DB 中的 Cassandra 擷取數據。
元件
事件中樞是完全受控的 串流平臺,每秒可處理數百萬個事件。 事件中樞提供 Apache Kafka 的端點,這是廣泛使用的開放原始碼串流處理平臺。 當組織使用端點功能時,不需要建置及維護Kafka叢集以進行串流處理。 相反地,他們可以受益於事件中樞所提供的完全受控 Kafka 實作。
Azure Cosmos DB 是完全受控的 NoSQL 和關係資料庫,可提供多宿主複寫。 Azure Cosmos DB 支援許多資料庫、語言和平臺的開放原始碼 API。 範例包含:
透過適用於 Apache Cassandra 的 Azure Cosmos DB,您可以使用 Apache Cassandra 工具、語言和驅動程式來存取 Azure Cosmos DB 數據。 Apache Cassandra 是開放原始碼 NoSQL 資料庫,非常適合大量寫入密集型工作負載。
AKS 是高可用性、安全且完全受控的 Kubernetes 服務。 Kubernetes 是一個快速演進的開放原始碼平臺,可用來管理容器化工作負載。 AKS 裝載開放原始碼巨量數據處理引擎,例如 Apache Spark。 您可以使用 AKS,在受控環境中執行大規模的串流處理作業。
適用於 PostgreSQL 的 Azure 資料庫 是完全受控的關係資料庫服務。 它提供 PostgreSQL 的高可用性、彈性調整、修補和其他管理功能 。 PostgreSQL 是廣泛採用的開放原始碼關係資料庫管理系統。
Azure Cache for Redis 會提供採用 Redis 軟體的記憶體內部資料存放區。 Redis 是常用的開放原始碼記憶體內部數據存放區。 會話存放區、內容快取和其他記憶體元件會使用 Redis 來改善效能和延展性。 Azure Cache for Redis 提供開放原始碼 Redis 功能作為完全受控供應專案。
替代項目
您可以將此解決方案中的開放原始碼相容產品和服務取代為其他人。 如需 Azure 中可用開放原始碼服務的詳細資訊,請參閱 Azure 上的開放原始碼。
案例詳細資料
執行開放原始碼引擎的完全受控 Azure 資料服務組成此串流解決方案:
- Azure 事件中樞 提供串流擷取的 Kafka 實作。
- Azure Cosmos DB 支援 Cassandra 中的事件記憶體。
- Azure Kubernetes Service (AKS) 會裝載 Kubernetes 微服務以進行串流處理。
- 適用於 PostgreSQL 的 Azure 資料庫 管理中的關係型數據記憶體PostgreSQL。
- Azure Cache for Redis 會 管理記憶體中的 Redis 數據存放區。
開放原始碼技術提供許多優點。 例如,組織可以使用開放原始碼技術來:
- 移轉現有的工作負載。
- 利用廣泛的開放原始碼社群。
- 限制廠商鎖定。
藉由讓開放原始碼技術可供存取,Azure 工具和服務可協助組織利用這些優點,並開發其選擇的解決方案。
此解決方案使用完全受控 的平臺即服務 (PaaS) 服務。 因此,Microsoft 會處理修補、服務等級協定 (SLA) 維護和其他管理工作。 另一個優點是原生與 Azure 安全性基礎結構整合。
潛在的使用案例
此解決方案適用於各種案例:
- 使用 Azure PaaS 服務建置使用開放原始碼技術的新式串流解決方案
- 將開放原始碼串流處理解決方案遷移至 Azure
考量
這些考慮會實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework。
在設計及實作每個服務時,請記住最佳做法。 如需每個服務的指導方針,請參閱 Microsoft 文件網站。 另請檢閱下列各節中的資訊:
效能
實作 適用於 PostgreSQL 的 Azure 資料庫 的連接共用。 您可以在應用程式內使用連線共用連結庫。 或者,您可以使用聯機共用器,例如 PgBouncer 或 Pgpool。 建立與 PostgreSQL 的連線是一項昂貴的作業。 使用連線共用時,您可以避免降低應用程式效能。 PgBouncer 內建 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。
使用適當的 數據分割策略,設定適用於 Apache Cassandra 的 Azure Cosmos DB 以獲得最佳效能。 決定在分割數據表時,是否要使用單一欄位主鍵、複合主鍵或複合分割區索引鍵。
延展性
選擇事件中樞層時,將串流需求納入考慮:
如果您的工作負載無法預測且尖峰,請考慮 為 Azure Cosmos DB 自動調整布建的輸送量 。 您可以將 Azure Cosmos DB 設定為使用手動布建的輸送量或自動調整布建的輸送量。 使用自動調整時,Azure 會根據您的使用量,自動並立即調整每秒的要求單位。
安全性
安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱 安全性要素概觀。
使用 Azure Private Link 讓 Azure 服務成為虛擬網路的一部分。 當您使用 Private Link 時,服務與網路之間的流量會透過 Azure 骨幹流動,而不需要周遊公用因特網。 此解決方案中的 Azure 服務支援所選 SKU 的 Private Link。
檢查組織的安全策略。 使用適用於 Apache Cassandra 的 Azure Cosmos DB,金鑰會提供金鑰空間和資料表等資源的存取權。 Azure Cosmos DB 實例會儲存這些密鑰。 您的安全策略可能會要求您將這些密鑰傳播至金鑰管理服務,例如 Azure 金鑰保存庫。 也請務必 根據貴組織的原則輪替密鑰 。
復原
請考慮使用 可用性區域 來保護業務關鍵應用程式免於資料中心失敗。 此解決方案的服務支援可用性區域在 可用性區域啟用區域中所選 SKU 的可用性區域。 如需最新資訊,請檢閱 支援可用性區域的服務清單。
成本最佳化
成本優化是考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化要素概觀。
若要估計此解決方案的成本,請使用 Azure 定價計算機。 同時請記住下列幾點:
事件中樞可在基本、標準、進階版和專用層中使用。 進階版 或專用層最適合大型串流工作負載。 您可以調整輸送量,因此請考慮從小型開始,然後在需求增加時相應增加。
Azure Cosmos DB 提供兩種模型:
- 適用於需求工作負載的布建輸送量模型。 此模型可在兩個容量管理選項中使用:標準和自動調整。
- 適合執行小型尖峰工作負載的無伺服器模型。
AKS 叢集是由在 Azure 中執行的一組節點或虛擬機(VM)所組成。 計算、記憶體和網路元件的成本構成叢集的主要成本。
適用於 PostgreSQL 的 Azure 資料庫 可在單一伺服器和彈性伺服器層中使用。 不同層級迎合不同的案例,例如可述詞、高載和高效能工作負載。 成本主要取決於計算節點和記憶體容量的選擇。 針對新的工作負載,請考慮選擇彈性伺服器層,因為它在單一伺服器層上具有更廣泛的 支援功能 。 另請注意,單一伺服器位於 取代的路徑上。
Azure Cache for Redis 可在多層中使用。 這些層可容納從 250 MB 到數 TB 的快取。 除了大小,其他需求也會影響階層的選擇:
- 叢集
- 持續性
- 作用中異地複寫
部署此案例
當您部署此解決方案時,請記住下列幾點:
當您部署適用於 Kafka 的事件中樞時,請參閱 快速入門:使用 Kafka 通訊協定與事件中樞串流。 本文提供下列資訊:
- 如何在事件中樞中使用 Kafka 傳送和接收訊息
- 發行應用程式的範例程序代碼
- 如何藉由進行設定變更,將現有的 Kafka 應用程式切換至適用於 Kafka 的事件中樞
關於 Apache Spark:
- 如需建置基本 Spark 應用程式的詳細資訊,請參閱使用 Azure 事件中樞 連線 Apache Spark 應用程式。
- 若要在 AKS 上裝載 Spark 應用程式,請參閱 在 AKS 上執行 Apache Spark 作業。
請考慮使用 Java 應用程式將事件寫入 Cassandra。 如需詳細資訊,請參閱快速入門:建置 Java 應用程式來管理適用於 Apache Cassandra 數據的 Azure Cosmos DB(v4 驅動程式)。
當您使用 Azure Cosmos DB 變更摘要時,請參閱 Azure Cosmos DB for Apache Cassandra 中的變更摘要,以取得此資訊:
- 如何在 Cassandra 查詢語言中使用 查詢述詞來 查詢變更摘要 API
- Java 應用程式的範例程式代碼
如需處理您儲存在 Cassandra 中事件的資訊,請參閱 教學課程:查詢 Azure Cosmos DB for Apache Cassandra 的數據。 本文也包含使用 CQL 命令從數據表擷取數據的範例 Java 程式代碼。
如需使用批次導向應用程式將數據寫入至 適用於 PostgreSQL 的 Azure 資料庫 的資訊,請參閱快速入門:搭配 適用於 PostgreSQL 的 Azure 資料庫 使用 Java 和 JDBC。 本文也包含用來儲存數據的範例 Java 程式代碼。
如需使用 Azure Cache for Redis 擷取數據儲存和擷取的資訊,請參閱 快速入門:在 Java 中使用 Azure Cache for Redis。 本文也包含用來存取快取的範例 Java 程式代碼。
參與者
本文由 Microsoft 更新及維護。 原始投稿人如下。
主體作者:
- Ajit Ananthram |雲端解決方案架構師
下一步
- 適用於 Azure 事件中樞的 Apache Kafka 開發人員指南
- 適用於 Apache Cassandra 的 Azure Cosmos DB 常見問題
- 使用 適用於 PostgreSQL 的 Azure 資料庫 建置應用程式的最佳做法
- Azure Cache for Redis 常見問題
相關資源
若要瞭解相關解決方案,請參閱下列資訊: