gpt4 book ai didi

java - 什么是两个组件之间通信的最佳设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:49 26 4
gpt4 key购买 nike

目前我们正在做一个项目,我们正处于项目的设计和架构阶段,以下是项目的要点。

  • 有交换机正在生成实时数据
  • 我们有两个组件要用 Java/Java EE 制作,称之为 CompA 和 CompB
  • CompA 根据来自交换机的输入记录应用一些过程,而不联系任何数据库,CompA 没有数据库访问权限。
  • CompB 获取CompA 的流程记录并申请处理,这涉及到业务数据库
  • CompA 和 CompB 在系统中有多个实例以实现可扩展性和容错性。
  • 记录是具有多个字段的文本记录
  • 记录是事务性的,如果记录是来自 CompA 和 CompB 的过程,则记录被视为已处理,否则它将被回滚并重新发送

现在的问题是 CompA 和 Comp B 之间最好的沟通方式是什么

一种方式是

 1. CompA--------> CompB 2. CompA-------->Messaging Server(JMS)------> CompB

要求:将有多个 CompA,CompB 是系统,如果任何组件发生故障,其负载将由其他对等方共享,例如,如果 CompA 发生故障,其负载将由其他 CompA 实例共享在系统中。为此,我们将采用 JMS 的第二个选项,这样 CompA 就不会与 CompB 紧密绑定(bind)。但是随着新组件(消息服务器)的引入,这可能会导致性能下降,因为记录处理是事务性的,系统是实时的。
我们将非常感谢您的建议和专家意见

最佳答案

JMS 是必经之路 - http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html

它非常可靠,您可以执行设置消息过期和强制执行优先级等操作,它非常适合您的模型,该模型基本上是网络上的“多生产者/多消费者”。

JMS 支持事务,它是为可靠性而构建的——到目前为止,它是最可靠的可用机制。在性能方面,您应该谈论“可扩展性”而不是“原始性能”。只要您的硬件可以应付,JMS 就可以。

维基百科有一个非常好的可用 JMS 实现列表: http://en.wikipedia.org/wiki/Java_Message_Service#Provider_implementations

我使用过 Apache ActiveMQ、Open Message Queue 和 OpenJMS,即使我没有在集群环境中部署 JMS 服务器的经验,我也同意 ActiveMQ 是我使用过的最可靠的解决方案。

关于java - 什么是两个组件之间通信的最佳设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com