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 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

秘籍:微服务设计的六脉神剑

介绍 “微服务”是一种新的软件开发模式,它来源于提高软件开发和管理效率的一系列工程实践。敏捷方法、DevOps文化、PaaS、应用容器、CI/CD文化和技术的...

1835
来自专栏pangguoming

微服务 面试

1、什么是微服务?     就目前而言,对于微服务业界并没有一个统一的,标准的定义。

583
来自专栏加米谷大数据

你一定需要了解的六款大数据采集平台

8005
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】搜狗商业平台Java技术实践

搜狗商业平台Java技术实践 Java自1995年问世以来,已历经20多年岁月。20年来,IT技术风起云涌,Java始终以其可移植性、跨平台性、生态系统完备性等...

35710
来自专栏腾讯移动品质中心TMQ的专栏

腾讯开源微服务 TARS 接口测试揭秘

Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。在了解具体如何做tars接...

2.7K1
来自专栏Laoqi's Linux运维专列

mysql架构由小变大的演变过程

1132
来自专栏Java架构

Spring Cloud 微服务的那点事总结

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

993
来自专栏JAVA烂猪皮

我们为什么要使用Spring Cloud?

在详细的了解Spring Cloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

651
来自专栏北京马哥教育

运维CMDB建设思路

? ? 在我们日常的运维工作中,面对着大量的基础设施和软件服务,该如何管理?这个管理的原则又是什么?粒度该如何控制?我们是否可以建立一个统一的标准模...

3789
来自专栏Rainbond开源「容器云平台」

微服务架构的设计模式

1346

扫码关注云+社区