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

相关文章

来自专栏coder修行路

Go实现海量日志收集系统(一)

项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现...

4937
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

每位开发人员都应该有一款的GitHub最受欢迎与最热项目浏览器发布@GitHubPopular

GitHub Popular 这是一个用来查看GitHub最受欢迎与最热项目的App,它基于React Native支持Android和iOS双平台。项目源码 ...

3367
来自专栏魏艾斯博客www.vpsss.net

WordPress 百度熊掌号自动推送插件安装使用教程

百度熊掌号是百度推出的新平台,把你网站的原创内容在最短时间内展现到百度搜索结果中,有助于提高百度搜索排名和权重,也就提高了网站流量。按照百度要求,接入百度熊掌号...

502
来自专栏架构师之路

究竟啥才是互联网架构“高可用”

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 ...

4026
来自专栏后端技术探索

lnmp和lamp浅谈对比

LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Nginx网络服务器,MySQL数据库...

791
来自专栏性能与架构

分布式协调服务ZooKeeper工作原理

大数据处理框架Hadoop、Redis分布式服务Codis、淘宝的分布式消息中间件MetaMQ …… 他们都使用ZooKeeper做为基础部件,可以看出ZooK...

3548
来自专栏IMWeb前端团队

使用HeadlessChrome做单页应用SEO

随着react、vue、angular等前端框架的流行越来越多的web应用变成了单页应用,它们的特点是异步拉取数据在浏览器中渲染出HTML。使用这些框架极大的...

2545
来自专栏腾讯IVWEB团队的专栏

使用HeadlessChrome做单页应用SEO

随着react、vue、angular等前端框架的流行越来越多的web应用变成了单页应用,它们的特点是异步拉取数据在浏览器中渲染出HTML。

930
来自专栏DeveWork

WordPress中当评论审核通过时候给评论者发邮件

如果你的WordPress 站点是开启评论审核的,那么如果能让评论者知道TA 的评论是否通过,就能进一步提升“回头率”。Comment Approved就是这么...

1805
来自专栏架构师之旅

浅谈大型Web系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等...

2647

扫描关注云+社区