【问题标题】:Is Akka cluster a good choice for running multiple socket clientsAkka 集群是运行多个套接字客户端的好选择吗
【发布时间】:2021-08-12 07:37:14
【问题描述】:

我需要在多个节点上运行 1000 多个套接字客户端。每个客户端监听唯一的端点。

https://doc.akka.io/docs/akka-http/current/client-side/websocket-support.html

我计划代表每个客户作为参与者,负责监督、恢复、事件处理等。并希望akka集群能够

  • 生成我的演员,其中每个演员代表套接字客户端
  • 监管政策将有助于从失败状态中恢复参与者
  • 在多个节点上均匀分布参与者
  • 让我保证每个客户最多有一次演员
  • akka 消息传递将帮助我启用具有至少一次语义的参与者之间的通信。

我还应该期待什么?

【问题讨论】:

    标签: websocket akka akka-cluster


    【解决方案1】:

    一般来说,Akka 生态系统对于您正在寻找的东西有一些合理的模式:

    • 每个客户的演员是一个合理的起点;监督有很大帮助
    • 集群分片将在集群节点之间均匀分布参与者,并且通常每个分片 ID 最多维护一个化身(因此您需要将每个客户端映射到不同的分片 ID)。在脑裂场景中,您可能会在网络分区的两侧获得相同的客户端:脑裂解析器配置控制一致性与可用性的权衡(基本上取决于您是否'宁愿故障模式是没有客户端的活动实例或客户端的多个活动实例)。
    • 为了确保当一个分片在重新平衡中移动时,该分片中的客户端在新节点上启动,两个选项是集群分片中的“记住实体”和一个集群单例,它会定期 ping 每个客户端参与者。如果保持活动的设置是相当静态的,我倾向于使用单例方法。
    • Akka 的基本消息语义是至多一次,但是对于至少一次,有一些成熟且有据可查的模式(最显着的是询问模式)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2016-01-05
      • 1970-01-01
      • 2015-05-08
      • 2020-05-04
      • 2011-03-22
      • 2018-02-04
      相关资源
      最近更新 更多