D atabase-per-service 型圖案 - AWS 規定指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

D atabase-per-service 型圖案

鬆散耦合是微服務架構的核心特徵,因為每個單獨的微服務都可以獨立地存儲和檢索自己的數據存儲中的信息。透過部署 database-per-service 模式,您可以根據應用程式和業務需求選擇最適合的資料存放區 (例如關聯式或非關聯式資料庫)。這表示微服務不會共用資料層、對微服務個別資料庫的變更不會影響其他微服務、其他微服務無法直接存取個別資料存放區,而且持續性資料只能透過 API 存取。解耦資料存放區也可改善整體應用程式的彈性,並確保單一資料庫不能成為單一故障點。

在下圖中,「銷售」、「客戶」和「法規遵循」微服務使用不同的AWS資料庫。這些微服務會部署為AWS Lambda功能,並透過 Amazon API 閘道 API 存取。 AWS Identity and Access Management(IAM) 政策可確保資料保持私密,而不會在微服務之間共用。每個微服務都使用符合其個別需求的資料庫類型;例如,「銷售」使用 Amazon Aurora、「客戶」使用 Amazon DynamoDB,而「合規」則使用 Amazon Relational Database Service (Amazon RDS) 作為 SQL 伺服器。

D atabase-per-service 模式圖

你應該考慮使用這種模式,如果:

  • 您的微服務之間需要鬆散的耦合。

  • 微服務對其資料庫有不同的合規性或安全性需求。

  • 需要對縮放進行更精細的控制。

使用該 database-per-service 模式有以下缺點:

  • 實作跨多個微服務或資料存放區的複雜交易和查詢可能會很困難。

  • 您必須管理多個關聯式和非關聯式資料庫。

  • 您的資料存放區必須符合 CAP 定理的兩項要求:一致性、可用性或分區容差

注意

如果您使用該 database-per-service 模式,則必須部署API 構成模式CQRS 模式 以實作跨多個微服務的查詢。