什么是ESB
企业服务总线,即ESB全称为Enterprise Service Bus,指的是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
面向服务的体系结构已经逐渐成为IT集成的主流技术。面向服务的体系结构(service-oriented architecture,SOA)是一种软件系统设计方法,通过已经发布的和可发现的接口为终端用户应用程序或其它服务提供服务。
ESB的产生
ESB的产生即是为了解决企业中数据的多样性和协议的复杂性问题。如下图所示,系统与系统之间的数据传输是复杂的,同时又涉及到系统的交互,谁来适配谁就成了一个难题,因此ESB应运而生。
ESB能够解决的问题
如果使用原生的服务调用,谁来适配谁成了一个大难题,谁来主导这次交互就会争论不休,如图所示。
如果一个系统接入外部系统,可能接入协议不同,则需要每个写一套适配流程,为了解决这个问题,且最大限度的复用代码,ESB采取了SOA架构,为每个请求方分配一个端口,为每个服务端提供的服务分配一个服务码和场景码供前端调用,此时前端将原来的几套适配流程转为只需要按照ESB的规定进行适配即可。
我们来看一个简易的ESB流程在整个项目链路中的位置,前端接入自己的系统需要通过ESB,此时我们作为服务方,我们接入其他系统也需要经过ESB,此时我们作为渠道端,即ESB可以理解为沟通整个企业所有系统的一个总线系统。
ESB的内部结构
ESB的内部结构就是通过拆组包,对一种报文进行拆分,拆分成一个个字段,再讲字段定向路由重组发送给后端系统,得到返回后将特定报文在进行拆分成一个个字段,并将字段重组成所需的报文组合返回给前端。
ESB的内部结构即一个IN端用来处理和前端交互的数据,OUT端用于处理和后端交互的数据,此时多个前端可以复用后端提供给ESB的接口功能,IN和OUT的重合部分则是一个router,正因为有这个router,可以使前端不需要知道后端系统是谁,只需要根据ESB提供的接口调用ESB,然后ESB将数据返回即可。
正是因为ESB的拆组包的灵活性和适配流程的多样性使得ESB可以适配不同的协议,不同的数据格式,使企业中每个系统通过总线连接起来,实现数据互通。
ESB的瓶颈与弊端
当然ESB也存在一些缺点,虽然它在设计之初定义了不处理业务数据,只进行数据的拆分与组装,但是随着接入系统的增多与业务的复杂性,难免会根据不同的业务对同一系统拆分出不同的适配流程,虽然适配流程可以自由组合,但是也会导致系统越来越臃肿与庞大,难免会进行一些简单的转换操作,这种以一个微服务来管理所有为服务的思想是否可行仍需要等待时间的验证。
而且所有系统都接入ESB会导致系统排错比较困难,如上图,任何一个链路挂掉都需要通过ESB进行排查问题。