springcloud学习手册-API Gateway (API网关)

导读 | API Gateway (API网关)

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

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

  1. 问题之一是客户端需求和每个微服务暴露的细粒度 API 不匹配。
  2. 客户端直接调用微服务的另一个问题是,部分服务使用的协议对 web 并不友好。
  3. 这种方法的另一个缺点是,它会使得微服务难以重构。

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

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

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

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

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

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

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

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

五、总结

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

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

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

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2070
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2586
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4737
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4778
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2665
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2717
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4045
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2597
来自专栏落花落雨不落叶

canvas画简单电路图

63311

扫码关注云+社区