Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
交互式Java软件体系结构_Java_Architecture_Executorservice_Akka - Fatal编程技术网

交互式Java软件体系结构

交互式Java软件体系结构,java,architecture,executorservice,akka,Java,Architecture,Executorservice,Akka,我们不久前设计了一个处理事务的软件架构。它是这样工作的:根据传入事件的类型,将其转换为可调用的,然后根据事件类型运行到执行器中。例如,“Event_A”类型被转换为EventAHandler(A可调用的),然后在执行器中运行 我们现在必须支持交互式事件,即需要用户通过网络进一步输入的事件,这很慢。例如,对于新类型的事件,我们向用户提供菜单并等待响应。如果我们遵循上面描述的体系结构,即,将每个事件转换为可调用的,那么我们会将等待用户响应的线程绑定起来,这不是一个好主意 我正在寻找建议或建筑风格,让

我们不久前设计了一个处理事务的软件架构。它是这样工作的:根据传入事件的类型,将其转换为
可调用的
,然后根据事件类型运行到
执行器中。例如,“Event_A”类型被转换为
EventAHandler
(A
可调用的
),然后在
执行器中运行

我们现在必须支持交互式事件,即需要用户通过网络进一步输入的事件,这很慢。例如,对于新类型的事件,我们向用户提供菜单并等待响应。如果我们遵循上面描述的体系结构,即,将每个事件转换为可调用的
,那么我们会将等待用户响应的线程绑定起来,这不是一个好主意


我正在寻找建议或建筑风格,让我们这样做。我们需要每秒支持大约10000个活动。我希望坚持执行器框架,如果可能的话,不能更改系统以支持异步循环。

使用基于架构的架构可能适合您的需要,这是该范例的一个众所周知的实现。

首先,您必须将架构表示为一个。它可以是动态的,在执行过程中创建新节点。不要等待用户响应,而是创建一个新的节点来响应该响应,并将响应路由到该节点。这样你就不会阻塞线程

然后,了解您需要的数据流图形元素的属性,例如:

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

  • 一个节点有单输入还是多输入

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

--等


然后决定哪个数据流/参与者库适合您的需求。我不排除Akka,但我建议使用mine development,因为它紧凑、可扩展,并且支持开箱即用的多输入节点。

这是我考虑过的。它不起作用,因为参与者不应该阻止某些外部操作(来源:),这与创建
可调用的
可运行的
,在
线程池执行器中有一个线程签出它,然后整个线程都会被阻止一样。。。。不过谢谢你的回答。Callable意味着Future,这意味着get()被阻塞。如果您正在构建真正的异步应用程序,则不需要调用。如果您真的使用Callable,那么您的应用程序就不是完全异步的。