一、概述
我们生活在一个互联世界,并期望我们的服务始终在线并立即交付。红帽OpenShift容器平台可帮助您在几乎任何公共云、私有云或多云环境中轻松构建和部署应用程序。但是如何构建地理位置分散的应用程序呢?准确且高效地控制地理分散的应用程序极具挑战性。
二、多区域双活架构
2.1.概念
双活架构是一种多管理节点配置,其中每个数据库副本都是管理节点,并且可以处理写操作。使用双活数据库,每个位置都有自己的版本,但最终所有位置都会实时同步。一般而言,您希望拥有双活架构,以改善最终用户的延迟、处理区域停电和通过并行应用程序处理更好地使用平台资源。此外,该体系结构解决了在用户所在区域中存储数据的业务需求。
相反,在主从架构中,只有一个管理节点具有读副本。对于主从架构,读请求将使用所在区域中的副本,并且写操作在管理节点上被执行。
2.2.应用场景
电子商务,移动,游戏,物联 ,欺诈缓解和社交个性化等现代应用,需要低于100毫秒的端到端响应时间,同时以亚毫秒的延迟大规模操作数据库。这是双活架构非常有价值的地方。例如,游戏或投票应用程序使用分布式排行榜。使用双活架构,每个区域的投票都存储在本地,最终同步副本,并且您在任何地方都具有相同的计数。另一个常见用例是多区域数据提取。当您在不同区域中提取数据时,您可以在每个位置通过多个管理节点收集数据,并最终合并所有数据。该架构也适用于分布式缓存。
2.3.要求
当您谈论双活数据库时,存在一些挑战——延迟和冲突解决。由于 络总是存在延迟,这是无法避免的。但在冲突解决的情况下,有三种不同的方法:
强一致性,要求所有数据库实例以相同的顺序接收消息。所有数据库必须一直更新。在分布式环境中,强一致性会降低应用程序写操作的可用性和延迟。
最终一致性,意味着在没有更新的情况下,所有数据存储副本将向彼此相同的副本收敛。通过最终一致性,对数据集的一个副本所做的更改,最终会收敛成逻辑等效并传播到所有副本,从而允许对数据的所有访问都返回最后更新的值。
强最终一致性,在强一致性和最终的一致性之间达成妥协。它保证任何时候两个副本收到相同的更新,可能以不同的顺序,但它们共享状态的视图是相同的,并且任何冲突的更新将自动合并到一致状态。这就提供了去中心化部署架构,允许在每个数据库实例处进行本地执行,而无需等待与其他实例的通信。跨实例的更新将在不丢失数据的情况下异步发生。这些保证是为分布式异步环境量身定制的。
2.4.实现
1)使用企业版Redis CRDT实现双活
企业版Redis在CRDT 的双活架构中实现了强最终一致性。企业版Redis CRDT使用跨多个集群的全局数据库实现。这种架构有几个好处:
●简单和复杂数据类型的无缝冲突解决方案。
●读写操作的本地延迟,无论地理复制区域的数量和它们彼此的距离如何。
●即使大多数地理复制区域已关闭,多管理节点集群也将继续处理读写操作。
最常见的兼容CRDT用例是计数器,活动跟踪器,会话存储,分布式缓存,库存管理。要深入了解CRDT如何工作,您可能会喜欢阅读更多有关企业版Redis CRDT及其冲突解决语义。
2)在OpenShift上使用企业版Redis双活
Redis Labs与红帽合作,使用Redis Enterprise Operator和OpenShift 路由将企业版Redis 双活集成到OpenShift上。增强型Redis Enterprise Operator使用路由机制公开两个群集间服务:企业版Redis 集群API服务和数据库服务。在创建和管理双活CRDT部署期间,这两个服务均被使用。
在使用红帽 OpenShift Service Broker创建双活部署之前,必须使用企业版Redis 集群自定义资源和Service Broker部署创建集群。要配置环境,请参阅Redis Labs 文档。
https://docs.redislabs.com/latest/rs/getting-started/getting-started-openshift-crdb/
三、结论
原文链接:
https://blog.openshift.com/building-modern-distributed-applications-with-redis-enterprise-on-red-hat-openshift/
译者介绍:
王进,目前从事虚拟化、容器化、混合云、数据中心建设研发、系统集成和解决方案设计工作。业余主导Linux发行版VanlOS社区开发,主要面向容器云、DevOps和人工智能。
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!