首页 » 网站建设 » php简略单纯api网关技巧_浅谈若何设计一个可用的企业级API网关

php简略单纯api网关技巧_浅谈若何设计一个可用的企业级API网关

访客 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

1. 利用API网关统一运用入口

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

php简略单纯api网关技巧_浅谈若何设计一个可用的企业级API网关

API网关统一运用入口

php简略单纯api网关技巧_浅谈若何设计一个可用的企业级API网关
(图片来自网络侵删)

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

2. API网关架构

API网关架构

API网关为企业的运用供应统一的运用入口, API网关隐蔽了企业内部运用系统的运用细节, 从一定程度上担保了企业内部运用的安全性。
API网关为各种运用处景供应支撑做事。

3. API网关的功能

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

API网关功能

做事路由:外部做事访问接口映射到对应的内部做事访问接口。
认证授权:供应对用户身份的认证以及用户权限验证,包括用户身份的合法性、针对用户角色的访问授权验证、针对用户的访问授权验证、IP 黑名单验证等。
超时处理:当 API 网关调用的内部做事相应韶光超过了在自主开拓的 API 网关后台管理子系统中所设置的许可最长的超时时间时,API 网关会立即停滞调用,并返回干系给你。
限流掌握:当你通过 API 网关调用内部做事的频率达到在某个阈值时,API 网关会立即做断开链路处理。
过了韶光后,链路会自动闭合回去。
熔断处理:熔断处理对避免无谓的资源花费特殊有用,当通过 API 网关调用的内部做事涌现非常的频率达到某个阈值时,那么 API 网关会做临时熔断处理即临时断开链路,暂时停滞你对那个内部做事的调用。
临时熔断后,过了一段韶光后,链路会自动闭合回去。
日志信息记录:会记录客户 IP、客户要求参数、返回结果、非常信息等信息。
负载均衡: 供应API接口的负载均衡,能够处理API接口的高并发访问,防止做事雪崩。
安全防护:供应严格的认证做事,支持算法署名,用户利用 API 网关供应的密钥进行认证,没有被付与密钥的客户端无法调用业务 API接口,经由认证授权的要求才能到达后端运用做事。
同时SSL 加密。
灰度发布:支持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

链接:https://www.jianshu.com/p/a460b0a9db1e

标签:

相关文章

php为无色透明技巧_水货钻石其实也还行

从各种钻石中,可以看到大大小小的“包裹体” 图片来源:参考文献包裹体的种类多样。比钻石形成更早的包裹体,叫“原生包裹体”;与钻石同...

网站建设 2024-12-19 阅读0 评论0

phpstudy发送gbk技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

网站建设 2024-12-19 阅读0 评论0