交互式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,那么您的应用程序就不是完全异步的。