Cymbal Bank 应用架构

Last reviewed 2024-04-19 UTC

此蓝图包含一个名为“Cymbal Bank”的示例应用。Cymbal Bank 展示了建议用于容器化应用的最佳实践。借助 Cymbal Bank 应用,用户可以创建登录账号、登录其账号、查看交易历史记录、进行存款以及将资金转移到其他用户的账号。Cymbal Bank 服务作为通过 REST APIgRPC API 相互连接的容器运行。

下图显示了部署在蓝图开发者平台上的 Cymbal Bank 应用。

Cymbal Bank 架构。

每个应用也是一项网络服务。只有前端应用在外部通过 GKE Gateway Controller 向集群开放。所有应用都通过使用 Cloud Service Mesh 作为分布式服务运行。

如需详细了解 Cymbal Bank 应用中包含的服务,请参阅 GitHub 上的 Cymbal Bank 代码库

Cymbal Bank 租户

为了将租户隔离,开发者平台中的每个租户都有一个团队范围和至少一个舰队命名空间。租户从不共享命名空间。要部署 Cymbal Bank,每个租户只需要一个命名空间。在更复杂的场景中,租户可以有多个命名空间。

为了说明 Cymbal Bank 如何部署在开发者平台上,此示例假设有三个独立的应用开发团队,他们的工作重点各不相同。Terraform 会为这些团队创建以下开发者平台租户:

  • frontend租户:专注于网站和移动应用后端的开发团队。
  • accounts租户:专注于客户数据的开发团队。
  • transactions租户:管理交易服务的团队。

Cymbal Bank 应用

Cymbal Bank 应用由六个微服务组成:frontend, ledgerwriter, balancereader, transactionhistory, userservicecontacts。每个微服务都映射到拥有它的租户内的应用。

下表介绍了 Cymbal Bank 的团队、团队范围、舰队命名空间和微服务的映射。在本映射中,此示例假设 Cymbal Bank 由三个独立的应用运维团队开发。团队管理的服务数量各不相同。每个团队都分配有一个团队范围。

团队 团队范围 舰队命名空间 应用 - 微服务 Kubernetes 服务账号

前端团队

frontend

frontend

frontend

ksa-frontend

交易团队

transactions

transactions

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

客户支持团队

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Cymbal Bank 数据库结构

Cymbal Bank 数据库使用 AlloyDB for PostgreSQL 进行部署。数据库在一个区域配置了高可用性主实例,在其他区域配置了冗余节点,并且使用跨区域副本进行灾难恢复。Cymbal Bank 使用 IAM 数据库身份验证来允许服务访问数据库。数据库使用 CMEK 进行加密。两个 PostgreSQL 数据库已经得到使用:ledger-db用于交易,accounts-db用于用户账号。

后续步骤