使用基于消息的系统有什么动机?
我看到很多关于服务总线的问题,例如NServiceBus和Mass Transit,我想知道基础方法的好处是什么。
答案 0 :(得分:23)
使用基于消息的系统有很多好处。
顺便提一下,这个领域的两个市场领导者是IBM的Websphere MQ及相关产品,以及TIBCO的企业服务总线。
答案 1 :(得分:11)
基于消息的体系结构在时间和空间上消除了消息的生成者和消费者。这有很多好处:
当您进行RPC样式的通信时(即在等待服务响应时阻塞),您将失去大部分这些好处。
答案 2 :(得分:10)
一个用例是当你有一个可以处理给定项目的资源池,以及需要以可扩展方式分发的工作列表。
我曾经有过一个项目,我必须与大量的3270屏幕抓取器进行大型机集成(都很慢)。我最多可以在一个盒子上打开10个这样的进程。我有数以千计的帐户进行屏幕删除和更新,所以我把工作放在一个队列中,我的机器(我有大约3个人)只是从消息队列(MSMQ)中拾取工作项并进行屏幕抓取,就是这样。我可以很容易地启动一台新机器,或者在不中断工作流程的情况下停用旧机器,这样很好。
答案 3 :(得分:4)
这些好处实际上取决于解耦应用程序的各个部分。一旦您设置了总线并添加了应用程序,您就可以通过添加新的部分来轻松扩展您的应用程序,您可以保证不会影响其他部分。这是一种随着时间的推移不断添加到系统中的一种非常好的方式。
例如。我们有这样的系统,每个命令都作为整个GUI的一部分实现,如果我们想要添加新功能或修改现有功能,我们只需编写一个新部件并将其添加到系统中。当它被调用时,它与其余部分没有依赖关系。这意味着我们可以轻松扩展我们的应用程序。此外,我们在网络上的节点之间传递消息 - 当1台计算机中的某些内容发生变化时,会向所有其他节点发送消息,以便他们可以自行更新。我们为不同的事件提供了一百条不同的消息,因此我们可以通过删除一个新服务来扩展系统,从而对相应的消息做出反应。
消息传递体系结构通常具有与Web服务相同的功能,您可以调用离散服务,可以轻松添加新服务。
不要认为消息传递架构需要花哨(而且价格昂贵!)的中间件产品,Windows运行在消息传递架构上 - 传递给窗口的每个WM_ *消息都是......好吧,消息,我认为显示了该体系结构的最佳示例 - 系统的任何部分都不需要了解任何其他部分,您可以无限扩展它,因为您可以在任何对话框等处理任意数量的控件等。
消息传递是一种神奇的体系结构,虽然它可能比将应用程序紧密耦合在一起要慢,但现在使用它并不是什么原因,特别是如果您已经在使用脚本或.net应用程序。
答案 4 :(得分:0)
我帮助为使用C#和Remoting的系统开发一个,客户端(服务或GUI)可以发送带有一些自定义数据的消息,并且接收者可以在下次连接或立即接收时接收它)。然后,他们可以处理消息(通过在负载平衡服务的情况下获得它的所有权)。它还用于在长时间运行的进程完成时更新GUI。
消息传递系统本身具有处理每条消息的可配置流水线,以下是我们开发的一些流水线的一些示例:
因此,在回答您的问题时,邮件系统是一种很好的方式,可以在您不知道或不关心客户是谁时发送信息。
答案 5 :(得分:0)
面向消息的系统通常适用于某些类别的集成问题。其他替代方案是拥有一个共享数据存储(可能是基于文件或数据库),供应用程序与RPC通信或通过RPC集成应用程序。
消息传递优于这些集成模式的优点是,您没有将两个应用程序耦合到同一个数据存储架构,并且您没有将应用程序绑定到点对点RPC集成场景(随着应用程序越多,应用程序越复杂)参与)。
还有异步通信(如电子邮件与在线聊天)以及邮件路由和转换可能性的好处。
答案 6 :(得分:0)
有一个主要问题,那就是可靠性。在分布式系统中,同步调用可能失败,导致下游系统过载。下游系统都需要进行调整以适应来自上游的负载,这是不切实际的。消息系统可以处理峰值问题。更好的是除了使用消息传递系统之外,还使用负载平衡器。当下游应用程序自动扩展时(可能需要几分钟),消息传递系统可以确保可靠地存储峰值。此外,消息传递系统和可靠的发布-子。想象一下,如果有成千上万的交易要发送给数百个交易者..用pub-sub轻松完成。因此,可操作性是可靠性。
答案 7 :(得分:0)
我建议看看这篇博文。它展示了端到端的工作流程,并解释了我们如何以编程方式集成消息传递平台。
答案 8 :(得分:0)
基于消息的系统可以为您业务的整个数字方面奠定基础。如今,拥有无缝集成的数字解决方案对于收集、存储和分析数据至关重要,而且至关重要的是,您的数据可以帮助您在业务流程方面做出最明智的决策。本质上,基于消息的服务是一种 API(应用程序编程接口)形式,它可以以消息的形式将请求从一个应用程序发送到另一个应用程序。使用基于消息的系统意味着您的所有数字解决方案都可以轻松连接,并且它们将相互可靠地通信。
请求可以发送到系统内的任何端点,一旦得到验证,它们就可以同时通过多个路径发送。与一次只能使用一个路径的传统请求/响应模型相比,这大大加快了流程。借助 TIBCO 消息传递等服务,您可以跨各种 API 进行通信、支持移动和 IoT 设备、根据需要扩展消息传递服务并简化应用程序开发和采用。当然,该平台也提供了安全的消息传递环境,因此您可以放心,您的数据只会在您自己的应用程序之间共享以用于您的指定目的。