企业服务总线(ESB)
"企业服务总线"(ESB)是所有服务都连接到的系统。通过企业服务总线,也可以访问所有连接的服务。这是企业服务总线的图示,该企业服务总线充当暴露其下层服务的所有应用程序的中央"桥"或者"网关":
ESB基础
术语"总线"类似于连接了CPU,RAM和其他芯片的计算机的内部总线。企业服务总线通常被实现为一个服务器或者一组服务器,因此不仅仅是一个"网络"。
连接到企业服务总线的客户端和服务不直接通信。他们通过ESB进行通信。通过使ESB本质上将相同的服务接口暴露给潜在的客户端来实现,而所连接的服务则将这些服务接口暴露给ESB。通过ESB进行的间接寻址有一些优点和缺点,我将在本文的其余部分中介绍这些优点和缺点。
ESB作为单点访问
通过企业服务总线连接客户端和服务的一个优势是,客户端只需要在单个位置查找服务:企业服务总线。如果将服务从一台服务器移到另一台服务器,则只需重新配置ESB。客户端仍然只是通过ESB访问服务。
ESB作为事务管理器
另一个优势是ESB可以协调多个服务参与的分布式事务。当多个分布式服务需要参与事务时,某些实体通常必须协调事务。企业服务总线可以这样做,而不是强迫客户端这样做。即使协调参与者的工作是由ESB完成的,客户仍可能必须划定交易的开始和结束时间。
ESB作为安全经理
诸如身份验证和授权之类的安全性方面可以集中在企业服务总线中。即使应用程序中的服务没有身份验证和授权,企业服务总线也可以在它向潜在客户端公开的服务接口中要求这样做。
ESB作为服务代理
ESB可以充当未向世界公开标准服务接口的应用程序的网关或者代理。例如,假设应用程序公开了Java RMI服务。网络的其余部分在.NET上运行,而该.NET无法直接调用RMI服务。
要解决此问题,我们可以使用Java来实现服务代理,该服务代理可以调用RMI服务。然后,服务代理通过ESB向.NET应用程序公开Web服务接口(SOAP + WSDL)。
这样的代理服务不必是ESB的内置函数。它也可以作为单独的服务进行部署,可以通过ESB获得。
ESB作为通向世界的门户
如果某些客户端需要连接到外部环境中运行的服务,则ESB可以潜在地充当通往外部环境的网关。同样,可以在外部服务之上添加安全方面等。此外,如果外部服务能够参与分布式事务,则ESB也可以对此进行协调。
ESB的缺点
通过ESB连接服务也有一些缺点。首先,ESB可能会成为单点故障。如果ESB关闭,则客户端与服务之间将无法进行通信。其次,间接的额外级别可能会导致客户端-服务通信的性能下降。