GKE上的多区域高可用性-如何处理PostgreSQL数据库?
Google有]这个很酷的工具GKE上的多区域高可用性-如何处理PostgreSQL数据库?,postgresql,kubernetes,google-kubernetes-engine,Postgresql,Kubernetes,Google Kubernetes Engine,Google有]这个很酷的工具kubemci-命令行工具,可以使用多个kubernetes集群来配置L7负载平衡器,基本上可以使用HA多区域kubernetes设置。这有点酷 但假设我们有这样一个基本架构: 前端实现为SPA,并使用json API与后端通信 后端是一组使用PostgreSQL作为数据库存储引擎的微服务 所以我可以在GKE上创建两个Kubernetes集群,将后端和前端都放在它们上面(比如说在伦敦和比利时),所有这些看起来都很好 直到我们想到数据库。PostgreSQL仅为单
kubemci
-命令行工具,可以使用多个kubernetes集群来配置L7负载平衡器
,基本上可以使用HA多区域kubernetes设置。这有点酷
但假设我们有这样一个基本架构:
- 前端实现为SPA,并使用json API与后端通信
- 后端是一组使用PostgreSQL作为数据库存储引擎的微服务
此功能(多群集进入)的好处是,如果一个区域出现故障,则您可以将流量路由到另一个区域。这是一个经典的体系结构场景,没有简单的解决方案。在多个地区提供数据是一个具有挑战性的问题,大公司需要花费大量的时间和金钱来解决
- PostgreSQL本机不支持多主机写入。你认为复制副本位于另一个区域,并在你的应用程序中具有读取和写入正确数据库的逻辑,这种想法是可行的。这将为您提供快速的本地读取,但在一个区域中的写入速度较慢。应用程序中的代码也更复杂,处理主机故障切换的工作也更多。带宽和成本也可能是大量更新的问题
- 使用多主博士后(如)的第三方解决方案将工作转移到数据库层。这可能会很昂贵,而且您的应用程序仍然必须管理来自两个区域的数据冲突,同时覆盖相同的数据
- 选择另一个支持多主机写入的多区域复制的数据库。(或)是一个不错的选择,或托管选项,如、、和其他。一个有趣的选项是,它支持PostgreSQL协议,但它是一个可扩展的关系数据库,并且支持多个区域
- 如果这些选项都不起作用,则必须创建自己的复制系统。一些公司使用事件源/CQRS体系结构实现这一点,其中每次写入都是发送到中心日志的消息,然后应用于每个位置。这是一项更复杂的工作,但提供了最大的灵活性。此时,您基本上也在构建自己的数据库复制系统
读取副本必须与主实例位于同一区域。
,因此它至少可能不是一个选项。顺便说一句,您的案例是否必须使用Postgres?是的,目前使用的是DB引擎。