![]() |
1
5
HA和负载管理是可扩展性的一个非常重要的方面,它是
|
![]() |
2
3
如果您已经在客户机中列出了多个潜在主机,那么这些主机可以有效地成为负载均衡器。 您可以提供主机建议服务,并向客户机推荐他们应该连接到哪台机器(基于当前负载或其他),然后客户机可以固定到该机器,直到连接失败。 如果没有主机建议服务,那么客户机可以从其内部列表中简单地选择一个随机主机,并尝试它们直到连接。 理想情况下,在第一次启动时,客户机将连接到主机建议服务,不仅直接连接到适当的主机,还将连接到其他潜在主机的列表。此列表可以在每次客户端连接时定期更新。 如果主机建议服务在客户端第一次尝试时关闭(不太可能,但是…),那么您可以在客户端安装中预先部署主机列表,以便它可以立即从一开始就随机选择主机(如果有的话)。 请确保您的主机列表是实际的主机名,而不是IP,这样可以提供更大的长期灵活性(即,您将“始终拥有”host1.example.com、host2.example.com…等等,即使你移动基础设施和改变IP)。 |
![]() |
3
3
|
|
4
2
2美分。 “如何在多台计算机之间共享状态,以确保其中一台发生故障时,这些计算机仍在运行。” 不要在机器之间共享状态,而是在机器之间划分状态。我不知道你的域名,所以我不知道这是否有效。但本质上,如果您将某些聚合(以DDD术语)分配给某些节点,则可以在使用这些聚合时将它们保存在内存中(actor、agent等)。为了做到这一点,您需要使用ZooKeeper之类的工具来协调哪些节点处理哪些聚合。如果失败,您可以在另一个节点上启动聚合。 此外,如果您使用事件源模型来构建聚合,那么通过那些侦听事件并维护自己的副本的节点在其他节点上拥有聚合的实时副本(从)就变得非常简单。 通过使用akka,我们几乎可以免费在节点之间进行远程处理。这意味着,哪个节点处理可能需要与其他节点上的聚合/实体交互的请求,可以与远程参与者进行交互。 我在这里概述的是非常一般的,但是给出了一种与Akka和ZooKeeper进行分布式容错的方法。这可能有帮助,也可能没有帮助。我希望如此。 最好的, 安迪 |
![]() |
davidzxc574 · 将字符串缩放为字符 2 年前 |
![]() |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
![]() |
Jelly · Scala:用于理解递归未来 2 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 2 年前 |
![]() |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 2 年前 |
![]() |
B. Bal · 在Scala中重用类成员 2 年前 |