-1

我们不久前设计了一个处理事务的软件架构。它的工作原理是这样的:传入的事件,根据它们的类型,被翻译成's,然后根据事件类型Callable运行成一个。Executor例如,“Event_A”类型被转换为EventAHandler(a Callable),然后在Executor.

我们现在必须支持交互式事件,即需要用户通过网络进一步输入的事件,这很慢。例如,对于新类型的事件,我们向用户呈现一个菜单并等待响应。如果我们遵循上述架构,即将每个事件转换为Callable,我们会占用等待用户响应的线程,这不是一个好主意。

我正在寻找让我们这样做的建议或建筑风格。我们需要每秒支持大约 10,000 个事件。如果可能的话,我想坚持使用 Executor Framework,并且不能更改系统以支持异步循环。

4

2 回答 2

2

使用基于Actor 模型的架构可能适合您的需求,是这种范例的一个众所周知的实现。

于 2013-04-16T01:00:16.540 回答
0

首先,您必须将您的架构表示为数据流图。它可以是动态的,在执行期间创建新节点。与其等待用户响应,不如创建一个对该响应做出反应的新节点,并将响应路由到该节点。这样你就永远不会阻塞线程。

然后,实现您需要的数据流图元素的哪些属性,例如:

  • 节点是对多个后续消息(如对象)做出反应还是用于处理单个消息(如方法调用)

  • 节点是否有单个输入或多个输入

  • 如果有多个输入,当所有输入都被填充(与门)或任何输入被填充(或门)时节点是否应该触发执行

- ETC

然后决定哪个数据流/actor 库符合您的要求。我不会排除 Akka,但我推荐我的开发df4j,因为它紧凑、可扩展,并且支持开箱即用的多输入节点。

于 2013-04-16T06:52:10.317 回答