关于akka:MultiDC-Cluster

您正在查看新的actor API的文档,以查看Akka Classic文档,请参阅Classic Multi-DC Cluster

本章介绍如何在多个数据中心,可用性区域或区域中应用Akka群集。

使Akka群集理解数据中心边界的起因是,与同一数据中心中的节点之间的通信相比,跨数据中心的通信通常具备更高的提早和更高的故障率。

然而,节点的分组不限于数据中心的物理边界,即便这是次要用例。因为其余起因,它也能够用作逻辑分组,例如隔离某些节点以进步稳定性,或将大型群集分成较小的节点组以实现更好的可伸缩性。

相依性
要应用Akka Cluster,请在您的我的项目中增加以下依赖项:

sbt
val AkkaVersion =“ 2.6.8”
libraryDependencies + =“ com.typesafe.akka” %%“ akka群集类型”%AkkaVersion
马文
摇篮
动机
应用多个数据中心的起因可能很多,例如:

冗余容忍一个地位的故障,并且依然能够运行。
服务来自用户左近地位的申请,以提供更好的响应能力。
均衡许多服务器上的负载。
能够应用默认设置来运行一般的Akka群集,该默认设置逾越多个数据中心,但可能导致以下问题:

群集成员身份的治理在网络分区期间被暂停,如上面独自的局部所述。这意味着在数据中心之间的网络分区期间将无奈增加和删除节点。
跨数据中心网络连接的误报故障检测更加频繁。数据中心内和不同数据中心之间无奈针对故障检测设置不同的设置。
在网络分区的状况下,敞开/删除节点通常应针对数据中心内或跨数据中心的故障进行不同的解决。对于数据中心之间的网络分区,零碎通常不应敞开无法访问的节点,而应期待其修复或由人工或内部监视系统做出决定。对于同一数据中心内的故障,能够采纳主动的,更具攻击性的降落机制进行疾速故障转移。
很难以平安的形式将Cluster Singleton和Cluster Sharding从一个数据中心疾速故障转移到另一个数据中心。存在单例或分片实体在网络分区的两侧都处于活动状态的危险。
地位信息的不足使得难以优化通信来偏爱间隔较远的节点更近的节点。例如。如果群集感知路由器心愿将音讯路由到本人数据中心的节点,则效率会更高。
为了防止其中一些问题,每个数据中心能够运行一个独自的Akka群集,并在数据中心之间应用另一个通信通道,例如HTTP,即一个内部音讯代理。然而,基于集群成员资格信息构建的许多不错的工具都失落了。例如,不可能在各个群集之间应用分布式数据。

咱们通常倡议将微服务实现为一个Akka集群。该服务的内部API是HTTP,gRPC或音讯代理,而不是Akka Remoting或Cluster(请参阅何时和何处应用Akka Cluster)中的附加探讨。

在多个节点上运行的服务内的外部通信将应用一般的actor消息传递或基于Akka Cluster的工具。当将此服务部署到多个数据中心时,如果外部通信因为应用了多个Akka群集而无奈应用一般的Actor消息传递,那么将很不不便。在外部应用Akka消息传递的益处是性能,开发的便利性以及Actor方面的域推理能力。

因而,能够使Akka群集理解数据中心,以便一个Akka群集能够逾越多个数据中心,并且依然能够容忍网络分区。

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据