springcloud学习手册-API Gateway

API Gateway (API网关)

一、为什么服务之间需要使用API Gateway (API网关)呢?

引用「Chris Richardson 微服务系列」使用 API 网关构建微服务文章中说明, 使用 API 网关上一种微服务架构中客户端到服务端的通信的解决方法 。

问题之一是客户端需求和每个微服务暴露的细粒度 API 不匹配。

客户端直接调用微服务的另一个问题是,部分服务使用的协议对 web 并不友好。

这种方法的另一个缺点是,它会使得微服务难以重构。

二、另外从两个方面问题考虑,为什么需要网关出现呢?

从运维角度,当客户端应用单击某个功能的时候往往会发出一些对微服务获取资源的请求到后端,一般情况下这些请求是通过F5/ nginx这类负载均衡分配到具体的服务上的。所以为了保证负载均衡的设备稳定性,一般运维人员是需要手工维护负载的路由策略的。假设服务器环境IP等变化后,运维人员就需要对应调整对应的路由策略来保证负载正常。当系统规模庞大时,运维功能就会增大很多。

从开发角度,当随着各种服务实例增加时,对应代码量增加,服务提供者实例也增加,各种接口、服务间的调用管理就会很麻烦。程序员在写接口调用的程序时,如果众多服务,如果调用写起来会很麻烦。

三、那通过什么方法,来解决这些问题呢?

通常来说,使用 API 网关是更好的解决方式。API 网关是一个服务器,也可以说是进入系统的唯一节点。这与面向对象设计模式中的 Facade 模式很像。API 网关封装内部系统的架构,并且提供 API 给各个客户端。它还可能还具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能。

四、但记住任何事务绝对不是完美无缺,没有任何缺点,API 网关也有它的优点和缺点。

API网关的最大优点是,它封装了应用程序的内部结构。客户端只需要同网关交互,而不必调用特定的服务。API 网关为每一类客户端提供了特定的 API,这减少了客户端与应用程序间的交互次数,还简化了客户端代码。

API 网关也有一些不足和缺点。它增加了一个我们必须开发、部署和维护的高可用组件。还有一个风险是,API 网关变成了开发瓶颈。为了暴露每个微服务的端点,开发人员必须更新 API 网关。

五、总结

对于大多数基于微服务的应用程序而言,实现 API 网关,将其作为系统的唯一入口很有必要。API 网关负责服务请求路由、组合及协议转换。它为每个应用程序客户端提供一个定制的 API。API 网关还可以通过返回缓存数据或默认数据屏蔽后端服务失败。在本系列的下一篇文章中,我们将讲zuul实现网关通信。

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。下面是它的框架图,大家先读为快!

【注明】:本文有一些文字和图引用了,世界著名的软件大师 Chris Richardson微服务系列博客中的内容。(这位大师写的微服务非常好,在此表示敬意)。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171226G0YKSO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券