API网关和ESB的联系与区别

相关名词剖析随着互联网的快速发展,企业的IT建设也是飞速发展的,但是在建设企业信息化时没有统筹考虑,建设往往不成体系、重复开发、烟囱式的建设,造成了资源的冗余和浪费,为了针对这些问题逐渐诞生了SOA、ESB、微服务、API网关以及REST等技术,现针对技术点总结如下 。
1API网关剖析
API 网关是一个服务器,也可以说是进入系统的唯一节点 。这与面向对象设计模式中的 Facade 模式很像 。API 网关封装内部系统的架构,并且提供 API 给各个客户端 。它具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能 。

API网关和ESB的联系与区别

文章插图
 
API网关负责服务请求路由、组合及协议转换 。客户端的所有请求都首先经过 API网关,然后由它将请求路由到合适的微服务 。API网关经常会通过调用多个微服务并合并来处理一个请求 。它可以在 WEB协议与内部使用的非WEB协议之间相互转换 。API网关还能为每个客户端提供一个定制的API,通常它会向移动客户端暴露一个粗粒度的API,以产品详情的场景为例,API网关可以提供一个端点使移动客户端可以通过一个请求获取所有的产品详情 。API网关通过调用各个服务(产品信息、推荐、评论等等)并合结果来处理请求 。API网关主要功能如下:
API网关和ESB的联系与区别

文章插图
 
使用API网关有优点也有不足,其中使用API网关的最大优点是:
1.它封装了应用程序的内部结构 。客户端只需要同网关交互,而不必调用特定的服务 。
2.API网关为每一类客户端提供了特定的API,这减少了客户端与应用程序间的交互次数,还简化了客户端代码 。
API网关的不足之处在于:
1.API网关增加了一个我们必须开发、部署和维护的高可用组件 。
2.API网关变成了开发瓶颈 。为了暴露每个微服务的端点,开发人员必须更新 API 网关 。API网关的更新过程要尽可能地简单,否则为了更新网关,开发人员将不得不排队等待 。
2ESB服务总线
其主要作用是作为企业信息系统的“龙骨”来集成各业务系统,实现异构系统的互联互通,用来拉取、调度各个业务系统的数据,一般被称为企业服务总线 。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素 。
API网关和ESB的联系与区别

文章插图
 
ESB提供了一种开放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用和其他组件之间的互操作,能够满足大型异构企业环境的集成需求 。
通过使用ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使企业已有的系统具有全新的服务接口,并能够在部署环境中支持任何标准 。充当缓冲器的ESB(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离,从而使得不同的应用程序可以同时使用同一服务,不用在应用程序或者数据发生变化时,改动服务代码 。
ESB产品作为一个产品化的产物,不仅仅是解决一些基础的问题,产品自身还会在项目中不断完善和发展 。ESB会把各行各业的解决方案用到的内容逐渐丰富到产品中,随着项目、行业的增多ESB的功能也越发丰富,可以应对不同行业的不同需求,随着近期微服务的兴起,ESB也进行迭代更新,我们的ESB更新了微服务的开发、编排、注册等功能,下文则是微服务的主要介绍 。
3微服务剖析
微服务是近些年被广泛提及的一个概念,微服务产生于单体应用的扩大化,随着信息化不断发展,企业对软件功能的要求越来越具体,也愈发的细致,如果通过应用程序来实现,必然是一个极其复杂而又痛苦的过程,由此诞生了微服务的概念 。就是将功能发布成服务,应用程序通过调用不同的服务来实现业务,这种设计架构称之为微服务 。
API网关和ESB的联系与区别

文章插图
 
一个微服务一般完成某个特定的功能,比如订单管理、客户管理等 。每个微服务都是一个微型应用,有着自己六边形架构,包括商业逻辑和各种接口 。有的微服务通过暴露 API 被别的微服务或者应用客户端所用;有的微服务则通过网页 UI 实现 。在运行时,每个实例通常是一个云虚拟机或者 Docker 容器 。
微服务主要是经过组件分离各自拥有独立的生命周期,并且按需进行扩展,这种方式打破了组件之间的技术依赖,允许每个服务各自选择最合适的技术进行实现,每个微服务仅关注于完成一件任务并很好地完成该任务 。在所有情况下,每个任务代表着一个小的业务能力 。不同的服务甚至可以采用不同的编程语言来实现,一定程度上微服务使技术方案变得更加灵活,在使用过程中开发、测试、部署等环节十分便捷,整体是以松耦合高内聚的形式存在,符合IT技术思想 。


推荐阅读