浅谈微服务架构下的API网关
Posted 大数据与微服务
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈微服务架构下的API网关相关的知识,希望对你有一定的参考价值。
近几年来,移动应用与企业间互联需求的兴起。移动应用、企业互联,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。
Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景、解决方案以及案例。对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由、组合及协议转换。如Chris所言,在微服务的应用程序中,客户端和微服务之间的交互,有如下几个挑战:
1. 微服务提供的API粒度通常与客户端的需求不同,微服务一般提供细粒度的API,也就是说客户端需要与多个服务进行交互。
2.不同的客户端需要不同的数据,不同类型客户端的网络性能不同。
3. 服务的划分可能会随时间而变化,因此需要对客户端隐藏细节。
那什么是API网关? API网关的引入能给企业带来什么样的好处?API网关有哪些应用场景? 在选择API网关时应该考虑哪些因素? 下面我们将一一进行介绍。
API网关概述
API 网关,即API Gateway,是大型分布式系统中,为了保护内部服务而设计的一道屏障,可以提供高性能、高可用的 API托管服务,从而帮助应用服务的开发人员便捷地对外提供服务,而不用考虑安全控制、流量控制、审计日志等问题,统一在网关层将安全认证,流量控制,审计日志,黑白名单等实现。网关的下一层,是内部服务,内部服务只需开发和关注具体业务相关的实现。网关可以提供API发布、管理、维护等主要功能。开发人员只需要简单的配置操作即可把自己开发的服务发布出去,同时置于网关的保护之下。
API网关使得搭建一个新的应用服务变得简单、快捷、高效,同时,开发人员可以将精力更多放在和业务紧密相关的工作中。
(1)网关层对外部和内部进行了隔离,保障了后台服务的安全性。
(2)对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本。
(3)减少客户端与服务的耦合,服务可以独立运行,并通过网关层来做映射。
(4)通过网关层聚合,减少外部访问的频次,提升访问效率。
(5)节约后端服务开发成本,减少上线风险。
(6)为服务熔断,灰度发布,线上测试提供简单方案。
(7)便于进行应用层面的扩展。
API网关的应用场景
1、面向Web应用
在这类场景下,应用在物理形态上类似前后端分离,此时的Web App已经不是全功能的Web App,而是根据场景定制、场景化的App。
2、面向移动应用
在这类场景下,移动App是后端服务的使用者和消费者,此时的API 网关还需要承担一部分MDM(Mobile Devices Management,移动设备管理)的职能。
3、面向合作伙伴的开放API
这类场景,主要为了满足业务形态对外开放,与企业外部合作伙伴建立生态圈,此时的API 网关需要增加配额、流控、令牌等一系列安全管控功能。
4、面向云计算平台的外部API
这类场景,被提到的次数比较少,很多时候系统的建设,都是为了满足企业自身业务的需要,实现对企业自有业务的映射。当互联网形态逐渐影响传统企业时,很多系统都会为了导入流量或者内容,依赖外部合作伙伴的能力,一些典型的例子就是使用「合作方账号登录」、「使用第三方支付平台支付」等等,这些对于企业内部来说,都是一些外部能力,比如证券行业中的万得资讯、同花顺资讯等,正在创建基于云计算平台的API网关应用, 用于外部用户的合作接入。此时的API 网关就需要在边界上,为企业内部服务统一调用外部的API做统一的认证、(多租户形式的)授权、以及访问控制。
在微服务架构下的API网关,一般指的是前三类使用场景。即,主要是把企业内部的API能力,暴露给其他应用或合作伙伴使用。网关层作为客户端与服务端的一层挡板,主要起到了三大类作用:
第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。
第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。
API网关选型考虑要素
1、安全性问题
企业在把服务暴露给外部使用时,首先要确保服务使用的安全,防止外部的恶意访问对公司业务的影响,特别是涉及交易方面的服务,更是要全面考虑安全性。为确保安全,需要考虑在通讯链路的建立、通讯数据的加密、数据的完整性、不可抵赖性等方面。
2、性能问题
作为企业API的入口,所有的请求都会经过API网关进行转发,可想而知,对API网关的访问压力是巨大的,有的网站甚至达到每分钟上千万的访问量。特别是在一些互联网企业,海量的移动终端每时每刻都需要与后端的服务进行交互,如果不能保证网关的高性能,企业在网关层需要投入大量的设备和成本。曾在一家互联网公司发生过,由于网关性能问题,网关的机器数量,需要与后台服务器的数量保持同步增长。这种情况显然是企业服务忍受的。
3、高可用问题
API网关作为逻辑上的单点,一旦发生问题,将造成企业服务的不可用,对企业来说可能造成的致命的影响。计算短时间的不可用,也会给企业带来直接的经济损失。所以,如何保证API网关的7*24小时的稳定运行,网关的自动伸缩、API的热更新等问题,都是企业级的网关需要考虑的。
4、扩展性问题
前面说到,企业网关提供了一个脚手架,一些非功能性的问题,例如日志、安全、负载均衡策略、鉴权等。这些插件会随着企业业务规模等的变化进行不断的强化与调整。这就需要网关层提供这样一种机制,使得可以灵活地进行这些调整和变化,而不用频繁对网关层进行改动,确保网关层的稳定性。
5、API高效运维的问题
6、API全生命周期的管理
API服务的全生命周期,包括服务的设计、开发、测试、上线发布、运维管理(服务使用的申请、开通;服务分类分级别的管理、服务使用情况的监控、计费等)、下线。
一个企业可能会暴露成百上千个API接口,日常也会经常进行API的发布、升级、改造、下架等操作。对不同的服务,不同的访问者,需要提供不同的服务访问策略。有的商业API公司,还需要对API的使用进行付费。所以,与API网关配套的,需要一套完善的自助系统,提供给服务的提供者、管理者、使用者,来对服务的发布、使用和运营。
以上是关于浅谈微服务架构下的API网关的主要内容,如果未能解决你的问题,请参考以下文章