【发布时间】:2014-01-23 03:43:10
【问题描述】:
我们正在构建的应用程序有一个非常简单的概念:它接收来自数据库的传入事件,并且对于每个事件,它通过显示一个菜单与客户端(在事件中)打开一个交互式会话。根据客户的反应,我们进入下一个状态或采取一些具体行动(例如转移资金)。
会话彼此独立。例如,假设我们从数据库中获得两个事件,说明客户端 A 和 B 已达到零帐户余额状态。为了响应这个事件,我们建立了到 A 和 B 的两个连接,显示一个如下所示的菜单:
Please select an option:
1. Get $5
2. Get $10
3. Ignore
对于选项 1 和 2,我们要求以 second menu 的形式进行确认。
Are you sure?
1. yes
2. no
在这种情况下,我们将有两个会话。客户端 A 可能选择选项 1 (1. Get $5),而客户端 B 选择选项 3 [在第一个菜单中]。对于客户 A,我们将显示 第二个菜单(上图),如果响应为 1. yes,我们将采取一些具体行动,例如转移资金和关闭会话。
所有客户端通信均由第 3 方系统完成,该系统采用 JSON 格式,包括客户端地址、菜单文本并将响应返回给我们。它负责在线上实际维护会话,而我们只需要进行响应关联和处理会话状态。
我们预计会同时处理 50,000 个此类会话。
之前,我们使用 SEDA 模型在 Java 中设计了系统。听说过 Actors,我们愿意检查一下并编写一个快速的 PoC 项目(Java/AKKA)。我的问题是:
有没有人有过构建此类应用程序的经验? AKKA 处理 50,000 个同时会话是否太多? (注意,我们只是在等待响应。当响应到来时,根据答案跳转到下一个阶段,所以应该是可以的)。
哪种架构风格/范式最适合 AKKA 中的这个问题?有没有解决这类问题的框架?
【问题讨论】:
-
首先,Akka 不是首字母缩写词。其次,如果您避免使用全局状态,则扩展 Akka 很简单。它使水平扩展变得非常简单,并且很可能不会成为您的瓶颈(几乎肯定会成为数据库)。
标签: java scala session akka actor