31

在哪里可以找到有关企业服务总线 (ESB) 的用途和优势的一些信息?

我正在寻找有关以下方面的信息:

  1. 问题的种类和 ESB 帮助解决的问题
  2. ESB 的替代方案 - 以及在它们之间进行选择时的权衡
  3. 作为开发人员构建 ESB 兼容系统需要做什么

我正在寻找比维基百科或供应商提供的在线营销手册更详细的信息。理想情况下,一些示例代码将有助于阐明利用 ESB 所涉及的内容。来自 .NET 或 Java 的信息将是最有用的。

谢谢。

4

11 回答 11

22

我建议使用ESB 或不使用 ESB,由Mule的创建者编写。

于 2010-01-07T19:57:22.807 回答
22

ESB 是实现企业集成模式的好方法。

ESB 帮助解决的各种问题

  • 您有许多协议要规范化为单一协议(例如 FTP、电子邮件、SOAP、XMPP 等到消息传递系统),例如 ActiveMQ。这使您可以将服务的实现与协议分离。
  • 您需要一种一致的方式将服务挂接到此架构中,以便它们可以侦听消息、处理消息和生成消息(消息端点、通道适配器等)。
  • 您可能需要一个托管容器来将这些不同的组件部署到(例如 ServiceMix、Mule)中
  • 您可能需要许多预构建的组件和适配器到各种协议中(例如,ServiceMix、Mule 和 Camel 有很多预构建的组件)。
  • 您可能需要长时间运行的工作流程。业务流程管理通常与 ESB 一起提供(Apache ODE 插入到许多开源 ESB 中)。

ESB 的替代方案

替代方案实际上取决于您要解决的问题。

  • 为了提供分布式服务,人们经常使用应用程序服务器通过一些点对点 RPC 协议(例如基于 RMI 的 EJB 或基于 HTTP 的 Web 服务)公开服务。因此,客户端不是将消息放到“总线”上,而是直接调用服务器。
  • 要响应特定协议,您可以构建一个响应该协议的客户端,例如编写一个使用 JavaMail 侦听电子邮件的应用程序,或者一个使用 Smack 侦听 XMPP 的应用程序。如果您的问题仅限于一两个协议,则可能不值得引入完整的 ESB。

作为开发人员,您需要做什么来构建 ESB 兼容系统

这将取决于您选择的 ESB,尽管鉴于大多数好的 ESB 旨在调用各种协议以及托管 POJO,您不需要做太多构建 ESB 兼容系统的工作。尝试使您的代码异步是值得的。

例如,Apache Camel 可能具有最简洁的配置,这里有一个教程

于 2010-01-07T20:07:50.493 回答
7

三大关键优势:

  • 总线为端点提供了一种相互连接的方式,而无需直接相互通信。它简化了端点的通信,因为它们只需要符合标准的通信接口,即总线。(这适用于任何技术总线,而不仅仅是 ESB)
  • ESB 提供了一个地方来获取一些关键端点指标:频率、可用性和性能。
  • ESB 倾向于提供多个通信接口。但是,开发人员只需要选择最简单的一种即可从总线获取和接收数据。

但是,请确保这些将为您的情况提供商业价值。拥有 ESB 为您的企业增加了另一个复杂性。理想情况下,您不应该基于几个应用程序,而是整个组织来选择它。组织应该只有一个生产 ESB 集群。

备择方案:

  • 只需直接将事物相互连接,尤其是在通信协议相同的情况下。这对于简单的应用集群来说是很好的,不需要太多的思考。但是,随着应用程序数量的增加,维护互连变得困难。
  • 另一种选择是 MQ 实现。这将为您提供一种在没有复杂互连的情况下推送数据的方法,但是您被迫只使用一个通信渠道。对于 Java 来说幸运的是,它们具有 JMS 标准。

实用性:

我已经说明了可能的替代方案。起初它们可能看起来很糟糕,但这并不是说你不能这样开始。我个人编写的东西直接与远程通信,而不通过 ESB 以确保它可以正常工作,而不必过多担心集成问题。

如果您没有 ESB,我建议您尝试使用 Mule 进行开发,使用 WebSphere ESB 进行测试和生产。我倾向于使用两种据称遵循标准的产品,以确保我们让供应商诚实,并确保您的开发人员遵守标准,防止无意中锁定供应商。

最后,只需回答以下问题:从长远来看,为简化企业的其他复杂性而增加一点复杂性的时间值得吗?

于 2011-01-29T10:06:28.960 回答
6

除了已经提到的网站。您应该阅读这篇关于“除非绝对必须,否则不要使用 ESB ”的文章。它由 MuleSource 的 CTO 编写,MuleSource 是最流行的开源 ESB 之一。不完全是您问题的答案,更多的是问自己“我需要 ESB”吗?

于 2010-01-07T20:01:50.383 回答
3

IBM有一个关于 ESB 的不错的 3 部分系列,它非常面向概念且与供应商无关(大部分情况下)。通过浏览 IBM 的站点,我在 ESB 上发现了很多好东西。BizTalk 网站上也有一些不错的信息和视频等。

于 2010-01-07T19:51:14.150 回答
2

看看这个Hanselminutes 播客。它回答了在实施服务总线之前您应该真正问自己的几个问题。

于 2010-01-07T23:51:31.203 回答
2

企业服务总线 (ESB) 是一种用于中间件的软件架构,它为更复杂的架构提供基础服务。例如,ESB 包含实现面向服务的体系结构 (SOA) 所需的特性。在一般意义上,ESB 可以被认为是一种管理对应用程序和服务(尤其是旧版本)的访问的机制,通过基于 Web 或表单的客户端向最终用户提供单一、简单且一致的界面前端。

本质上,ESB 为分布式异构后端服务和应用程序以及分布式异构前端用户和信息消费者做了中间件真正应该做的事情:隐藏复杂性,简化访问,允许开发人员使用通用的、规范的查询、访问和交互,在后台处理复杂的细节。ESB 的吸引力以及它未来成功的关键在于它能够支持由业务需求驱动的增量服务和应用程序集成,而不是由可用技术控制。

http://searchsoa.techtarget.com/definition/enterprise-service-bus

WSO2企业服务总线(产品)

WSO2 企业服务总线 (ESB) 4.7.0 文档!WSO2 ESB 是一个快速、轻量级、100% 开源且用户友好的 ESB,在 Apache 软件许可证 v2.0 下分发。WSO2 ESB 允许系统管理员和开发人员方便地配置消息路由、中介、转换、日志记录、任务调度、故障转移、负载平衡等。它支持最常用的企业集成模式 (EIP),并支持传输交换、事件、基于规则的中介和基于优先级的中介,以满足高级集成需求。ESB 运行时设计为基于 Apache Synapse 中介引擎的完全异步、非阻塞和流式传输。

WSO2 ESB 是在革命性的 WSO2 Carbon 平台之上开发的,这是一个基于 OSGi 的框架,可通过组件化为您的 SOA 提供无缝模块化。它包括许多可以安装在 ESB 中的功能和可选组件(附加组件),并且您可以轻松删除您的环境中不需要的功能,从而允许您完全自定义和定制 WSO2 ESB 以满足您确切的 SOA 需求。

架构 企业上的应用程序基础设施可能天生就很复杂,包括数百个语义完全不同的应用程序。其中一些应用程序是定制的,一些是从第三方获得的,还有一些可以是两者的组合,并且可以在不同的系统环境中运行。

这些异构应用程序之间的集成对企业至关重要。不同的服务可能使用不同的数据格式和通信协议。服务的物理位置可以任意更改。所有这些限制意味着您的应用程序仍然紧密耦合在一起。ESB 可用于放松不同服务和服务消费者之间的这些耦合。

WSO2 ESB 是成熟的企业级 ESB。它基于 Apache Synapse 项目构建,该项目是使用 Apache Axis2 项目构建的。所有组件都构建为 OSGi 包。

于 2013-11-05T06:39:23.930 回答
1

看看我的演讲“ Spoiled for Choice - How to select the right ESB ”。

我解释了何时使用 ESB、集成套件或仅使用集成框架(例如 Apache Camel)。我还讨论了开源 ESB 和专有 ESB 之间的区别。

于 2013-04-18T01:22:14.737 回答
1

使用 ESB 的理由为零。不要这样做。不必要的复杂性。既然可以直接走,为什么还要通过中介?ESB 的人会告诉你点对点是不好的,但不知何故,指向和来自 ESB 的点对点是好的。

于 2015-03-20T18:38:45.423 回答
0

您需要问自己的第一个问题是为什么需要 ESB?

ESB 通常用于 Event SOA 分布式架构中,这似乎是当今的热门词汇。在您进入 ESB 之前,让我提醒您 Martin 的 Fowler 分布式系统第一定律:

http://martinfowler.com/bliki/FirstLaw.html

“我的分布式对象设计第一定律:不要分发你的对象(来自 EAA 的 P)。

相关章节可在线获取。”

当您构建一个新系统时,最重要的方面是它是面向未来的,这意味着易于扩展和维护。如果您围绕松散服务的概念构建系统,并在网络环境中分发静态定义的合约,您可以“隐藏”您想要的特定服务的架构,因为接口仍然存在。

ESB 与异步消息传递系统密切相关,因此在开始实施这种实现之前,要知道架构不必是同构的,即所有服务都以相同的方式实现,不要开始最大的错误是从一开始就分发您的系统,您应该只在需要扩展时分发,而不是事先分发。但是,您需要确保的是,如果需要,您的服务应该能够轻松分发,而不会违反任何合同,这意味着对该服务的客户进行更改。

至于 ESB 的好处,它们与 SOA 相同,ESB 增加了异步消息(事件)操作的上下文。

于 2013-03-29T00:39:05.740 回答
0

首先让我解释一下SOA。它将架构构建为一组可重用的软件模块,这些模块公开为具有明确定义的接口的“服务”。这些服务促进松散耦合并从客户端抽象其实现细节。

如果每个组件都直接调用服务,SOA 最终可能会变得一团糟。因此,它具有以下常见问题。

  • 您如何找到哪些服务已使用,哪些未使用?
  • 您如何找到使用特定服务的客户?
  • 您如何在不中断的情况下推出服务更新或向现有服务公开新版本?
  • 您如何支持调用旧服务接口的旧客户端的向后兼容性
  • 您如何针对内部/外部流量的所有服务执行日志记录、审计、安全实施等?

ESB 是上述问题的解决方案。ESB…</p>

  • 帮助整理
  • 能严格执行公司政策
    • 例如安全、节流、审计等一致应用
  • 虚拟化服务端点
    • 促进版本控制、灵活更新、HA/负载平衡等。
  • 执行路由、中介、转换等

可以在此处找到一些示例用例。请注意,它们来自 AdroitLogic 的开发人员站点,并且与 AdroitLogic 的 ESB UltraESB 严格耦合。

于 2017-02-17T13:37:02.447 回答