分享好友 最新动态首页 最新动态分类 切换频道
[转载]API网关
2024-12-26 14:48

1. 使用API网关统一应用入口

[转载]API网关

API网关的核心设计理念是使用一个轻量级的消息网关作为所有客户端的应用入口,并且在 API 网关层面上实现通用的非功能性需求。如下图所示:所有的服务通过 API 网关来暴露,这是所有客户端访问的唯一入口;如果一个服务要访问另一个服务,也要通过这个网关。

API网关统一应用入口

一旦 API 网关允许客户端消费一个受管理的 API,那么我们就可以以受管理的 API 形式使用它来暴露这个微服务所实现的业务逻辑。API 网关可以通过HTTP、HTTPS、RPC等方式来连接内部受管理的 API,以实现 API 网关的高并发。

2. API网关架构

API网关架构

API网关为企业的应用提供统一的应用入口, API网关隐藏了企业内部应用系统的应用细节, 从一定程度上保证了企业内部应用的安全性。 API网关为各种应用场景提供支撑服务。

3. API网关的功能

企业级API网关应该提供下列的功能:

API网关功能

  1. 服务路由:外部服务访问接口映射到对应的内部服务访问接口。
  2. 认证授权:提供对用户身份的认证以及用户权限验证,包括用户身份的合法性、针对用户角色的访问授权验证、针对用户的访问授权验证、IP 黑名单验证等。
  3. 超时处理:当 API 网关调用的内部服务响应时间超过了在自主开发的 API 网关后台管理子系统中所设置的允许最长的超时时间时,API 网关会立即停止调用,并返回相关消息给你。
  4. 限流控制:当你通过 API 网关调用内部服务的频率达到在某个阈值时,API 网关会立即做断开链路处理。过了时间后,链路会自动闭合回去。
  5. 熔断处理:熔断处理对避免无谓的资源消耗特别有用,当通过 API 网关调用的内部服务出现异常的频率达到某个阈值时,那么 API 网关会做临时熔断处理即临时断开链路,暂时停止你对那个内部服务的调用。临时熔断后,过了一段时间后,链路会自动闭合回去。
  6. 日志信息记录:会记录客户 IP、客户请求参数、返回结果、异常信息等信息。
  7. 负载均衡: 提供API接口的负载均衡,能够处理API接口的高并发访问,防止服务雪崩。
  8. 安全防护:提供严格的认证服务,支持算法签名,用户使用 API 网关提供的密钥进行认证,没有被授予密钥的客户端无法调用业务 API接口,经过认证授权的请求才能到达后端应用服务。同时SSL 加密。
  9. 灰度发布:支持API接口线上灰度部署,减少应用版本切换风险。

4. 如何设计一个好的企业级API网关

设计一个企业级API网关时, 应该从功能需求、性能需求、高可用性、扩展性等方面进行综合考量, 覆盖企业的API应用场景,从而满足企业的业务需求。下面我们将从功能、性能、高可用性和扩展性四方面进行介绍。

4.1 功能需求

企业级API网关除了上述的服务路由、认证授权、超时处理、限流控制、熔断处理、日志记录、负载均衡、灰度发布等基础服务外,还需要提供以下的功能。

1)API 生命周期管理功能

覆盖 API 的定义、测试、发布和下线的整个生命周期管理,便捷的日常管理、版本管理,支持热升级和快速回滚。并能够提供API接口测试,预发布,发布等多种环境。

2)开发支持功能

提供页面调试工具,能够自动生成 API 文档和 SDK,这样可以大大降低人力成本。开源的API文档生成方案有Swagger等。

3)流量控制功能

可控制单位时间内 API 允许被调用次数。用来保护企业的后端服务,实现业务分级和用户分级。 支持对 API 流控,您可以根据 API 的重要程度来配置不同流控,从而保障重要业务的稳定运行; 支持用户、应用和例外流控,您可以根据用户的重要性来配置不同流控,从而可以保证大用户的权益; 流控粒度:分钟、小时、天。

4)请求管理功能

可根据配置进行参数类型、参数值(范围、枚举、正则、Json Schema)的校验,减少后端对非法请求、无效请求的资源消耗和处理成本。可以在 API 网关定义参数映射规则,网关通过映射规则将后端服务通过映射翻译成任何形式,以满足不同用户的不同需求,从而避免功能重复开发。

5)监控告警功能

提供实时、可视化的 API 监控,包括:调用量、调用方式、响应时间、错误率,让您能够清楚的了解 API 的运行状况和用户的行为习惯。

支持自定义报警规则,来针对异常情况进行报警,降低故障处理时间。

提供可订阅的数据分析报表和智能分析。

4.2 高性能设计

传统的基于线程的并发模型(Thread-based concurrency),为每一个请求分配一个线程或进程。这种模型编程简单,可以将处理一个完整请求的代码编写在一个代码路径中。这种模型的弊端是,随着线程(进程)数的上升,操作系统在这些线程(进程)之间的频繁切换,将急剧降低系统的性能。

高性能设计

4.3 高可用设计

1) 无状态设计原则

网关层为保证高可用、易于扩展、快速启动,需要设计成无状态的。用户的状态数据我们通常使用session对象来封装,网关层要设计成无状态的,也就是说,不能由网关来负责session的维护。那由谁来维护session相关的信息呢?我们是采用cookie+session服务器的方式;

a) 用户在登录页完成登录操作后,服务器会生成一个登录session信息,保存起来,设置个失效时间,并设置到用户的cookie里。

b) 用户后续的每次请求里会带着这个cookie信息,服务端会对这个cookie信息进行校验,通过了就认为是合法用户,执行请求操作。

2)优雅下线原则

当需要撤掉一台网关服务的时候,不是直接结束网关进程,而是先关闭监听套接字,但是继续为当前连接的客户提供服务,所有客户端的服务完成后,在把进程关闭。

3)Slow Start特性

当网关监听到有一台新的服务注册上来时,考虑到有些服务启动后,刚开始会有许多初始化的工作,此时服务对请求的响应速度是比较慢的。如果一开始就给这台服务分配太多的压力,有可能导致服务瞬间被压垮。为了避免这种情况,网关层需要考虑支持Slow Start特性。即,经过一段时间,逐渐把压力增加到预设的值。

4)业务拦截扩展

我们知道,网关对请求的处理,可以分为三个阶段:接受请求、路由并转发请求、接受服务的返回数据并返回给请求者,除此之外,还有一种情况是处理错误。所以我们也可以在这四个地方添加扩展点。

(1)接受到请求后;

(2)定位到一个服务,并准备转发之前;

(3)接受到服务的返回数据,返回给客户端之前;

(4)当服务调用失败后。

拦截器的处理顺序,可以分为两大类:

1. 网关平台自带的拦截器,例如安全校验、日志记录等;

2. 网关层逻辑开发的功能,例如格式转换等。

一般来说,网关先执行网关平台自带的拦截器,再执行为了业务逻辑编写的拦截器。当然,API网关也需要提供一种机制,可以比较容易地调整拦截器的执行顺序。最简单的一种方法,就是给每个拦截器定义一个优先级,网关按优先级顺序依次调用各拦截器。

对网关层来说,它接收和处理的数据都是业务请求(Request)对象,网关层在接收到请求后,把请求封装为Request对象,为了让后续的过滤器(Filter)能够获得这个对象,可以考虑把Request对象保存在线程变量中。

有些拦截器,例如一些调试日志的拦截器,通常情况下都是关闭的,只有在出现问题的时候才需要打开。为了保证网关的高可用,网关层必须具备在线启用或关闭拦截器的能力。一般,API网关需要提供RESTful接口方式来关闭和启用一个拦截器。

类似这样的命令:PUT /gateway/v1/filters/filterName?enable=value

5)API管理与动态发布设计

对服务管理来说,分为前端服务管理与后端服务管理。前端服务指的是网关层暴露给客户端使用的服务API,后端服务指的是服务层提供的业务服务API。一个服务暴露给客户端使用,除了网关层和服务层提供服务的代码外,还需要配置前端服务与后端服务的映射关系。

网关层API调用服务层API,有多种方式。例如,可以由按照服务层API的服务契约,生成一段客户端代码,发布给网关层使用。这种方式的弊端是,网关层代码依赖于服务层代码,服务层频繁修改和调整接口时,导致网关层的代码很难维护。

可以通过配置前后端服务映射的方式,解耦网关层对服务层的依赖。当服务层的API(例如服务名、参数名等)发生变化时,只需调整映射关系,无需对网关层的代码进行调整。网关层按照映射,自动装配服务层API所需要的数据格式。这样,网关层团队与服务层团队可以相互不受干扰地开发各自的服务。

4.4 可扩展性设计

从灵活性和扩展性方面来说,在设计API网关时应该考虑如何对API网关的功能进行扩展, 网关应该提供扩展插件机制, 企业可以根据业务应用需求对网关功能进行扩展。API网关管理平台可以对API网关业务扩展插件进行发布与下架操作。例如Kong网关可以通过plugin接口发布扩展插件,同时也可以通过接口下架某个插件。

总之,API网关作为企业业务能力开放的一个应用门户,除了具备基本的请求转发、认证授权、路由等功能,以及高性能和高可用性外,还需具备良好的扩展性,以便于API网关能力的不断增强。

作者:garyond

最新文章
AI系统平台系统源码源码开发
标题:南阳迈特网络科技有限公司:AI平台源码,助力企业高效创作,免费搭建,技术保障,案例丰富正文:随着人工智能技术的飞速发展,越来越多的企业开始寻求利用AI技术提升工作效率。南阳迈特网络科技有限公司紧跟时代潮流,推出了一款功能
AI专题:2024思科AI就绪数据中心白皮书
今天分享的是:AI专题:2024思科AI就绪数据中心白皮书报告共计:23页2024年思科人工智能就绪指数报告显示企业部署AI面临压力与挑战,多数企业虽渴望采用但未做好准备,仅有少数企业能充分利用其潜力,且面临基础设施、人才、安全等多方面挑
2024邯郸种植牙活动修复排行榜前十位的正规牙科医院依次盘点!邯郸尚齿口腔诊所整形效果拉满~
2024邯郸种植牙活动修复排行榜前十位的正规牙科医院依次盘点!邯郸种植牙活动修复口腔医院上榜名单排名前十的分别是:1,邯郸尚齿口腔诊所2,邯郸市邯钢医院口腔科3,邯郸市人民医院口腔科4,邯郸市中心医院口腔科5,邯郸乐齿口腔诊所6,邯
aso优化师是什么_出海产品如何优化ASO?Google Play ASO优化入门指南
对于刚接触海外市场的小白,看着网络上大量空洞而碎片的ASO优化文章,依然是一头雾水,不知从何下手。Google Play ASO优化包含哪些要点?如何利用好Google自有工具做好ASO?优化过程中又有哪些坑需要避开&#x
CHATGPT修改英语作文
CHATGPT是一种可以帮助人们修改英语作文的工具。这个工具使用了人工智能技术,通过各种算法和模型来检测并改进英语作文的语法、拼写、用词和语法错误等等。CHATGPT是一个非常有用的工具,因为它可以快速地检测并修正英语作文中的错误。与传
360自研AI大模型gpt2-o1亮相,数学逻辑推理能力能否超越国际水平?
近日,360智脑官方在其公众号上发布了一则令人瞩目的消息,正式推出了其自主研发的AI大模型——360gpt2-o1。这款新模型在推理能力上实现了显著提升,尤其在数学与逻辑推理任务上的表现尤为突出。360gpt2-o1之所以能够在这些领域取得如此优
2024年妙可蓝多研究报告:蒙牛协同更上层楼,奶酪龙头再启新篇
1.1. 主业转型奶酪一飞冲天,引入蒙牛强强联手前瞻布局,积极加码,区域乳企成为奶酪龙头。公司创始人柴琇于 2001 年创立广 泽乳业,作为区域乳企,企业前期聚焦液态奶业务。2007 年公司与法国保健然集团开展 奶酪业务合作,逐步积累奶酪生
HUAWEI MatePad 2023 款
以上页面中的产品图片、视频及屏幕内容仅作示意,实物产品效果(包括但不限于外观、颜色、尺寸)和屏幕显示内容(包括但不限于背景、UI、配图、视频)可能略有差异,请以实物为准。以上页面中的数据为理论值,均来自华为内部实验室,于特定
ai来创作剧本
一、剧本简介:《未来之境》是一部科幻题材的剧本讲述了在不久的将来,人类成功研发出一种可以穿越时空的科技一群勇敢的探险者利用这一技术,展开了一场惊心动魄的冒险旅程。剧本以时间为线索,串联起多个时代的故事展现了人类在面临未知挑
Build.VERSION
Various version strings.The base OS build the product is based on.The current development codename, or the string "REL" if this is a release build.The internal value used by the underlying source control to represent this
相关文章
推荐文章
发表评论
0评