一、背景

最近由于工作原因接触了几个软件供应商,很多都向我们推荐 ESB。印象中初次听到 ESB 这个概念应该是 0几年那会儿,当时应该还算个新鲜高级的东西,但是现在已经是2019年了,还有人拿着 ESB 来忽悠,真的很无用。不过正好借着这个机会,梳理一下微服务、SOA、ESB之间的差异,也便于未来再碰到类似的供应商向我们推销 ESB。

二、SOA

全称 Service Oriented Architecture,中文翻译是““面向服务的架构”,作为一种架构设计方法,其中包含多个服务,服务与服务之间相互依赖最终对外提供一些列功能。每个服务独立存在,相互之间通过网络进行访问。但是这里有一个问题,如果一个调用方要对接好几个服务,作为调用方就需要知道服务(要对接的服务)的一切信息,同时要针对不同服务制定不同的对接方案,那岂不是太麻烦?作为这个问题的解决方案,ESB 呼之欲出。

三、ESB

中文翻译是“企业服务总线”,简单来说就是一个管道,用来连接各个服务节点,TA 的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。

ESB 可以说是搭建 SOA 架构所必须实现的核心功能组件

四、微服务

微服务本身与 SOA 很类似,可以看作为 SOA 的 plus 版本,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,将单个系统拆分为多个可以独立开发、设计、运行的小应用,这些应用通过服务化完成交互和集成。

微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想

五、总结

架构层面,SOA 和 微服务是一个层级,ESB 是作为实现 SOA 架构的一个核心组件,类似于 网关+注册中心在微服务架构中起到的作用。