小麦带你学服注册体系四

本文涉及的产品
AI 网关免费试用,400元 Serverless
简介: api的网关体系

# API网关


**API网关是什么?**


API网关是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(All in one)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管理API逐渐成为一种趋势。一般来说,API网关是运行于外部请求与内部服务之间的一个流量入口,实现对外部请求的协议转换、鉴权、流控、参数校验、监控等通用功能。




**为什么要做API网关?**


在没有API网关之前,业务研发人员如果要将内部服务输出为对外的HTTP API接口。通常要搭建一个Web应用,用于完成基础的鉴权、限流、监控日志、参数校验、协议转换等工作,同时需要维护代码逻辑、基础组件的升级,研发效率相对比较低。此外,每个Web应用都需要维护机器、配置、数据库等,资源利用率也非常差。


![API网关-为什么做](API网关-为什么做.png)




**Tomcat自身问题**


- **缓存太多**。Tomcat用了很多对象池技术,内存有限的情况下,流量一高很容易触发gc


- **内存copy**。Tomcat默认用堆内存,所以数据需要读到堆内,而后端服务是Netty,有堆外内存,需要通过数次copy


- **Tomcat读body是阻塞的**。Tomcat的NIO模型和Reactor模型不一样,读body是Block的

- **Tomcat对链接重用的次数是有限制的**。默认是100次,当达到100次后,Tomcat会通过在响应头里添加Connection:close,让客户端关闭该链接,否则如果再用该链接发送的话,会出现400


**Tomcat Buffer**


Tomcat buffer 的关系图如下:


![TomcatBuffer](TomcatBuffer.png)


通过上面的图,我们可以看出,Tomcat 对外封装的很好,内部默认的情况下会有三次 copy。




## 基本功能


- **反向代理**:类似于Nginx效果,实现外部HTTP请求反向代理转为内部RPC请求进行转发

- **动态发现**:加入后端微服务中心,实现动态发现后端服务实例

- **负载均衡**:根据后端服务的实例列表进行负载均衡分配

- **服务路由**:可以根据请求URL中的参数进行不同服务的调用路由




## 功能设计


### API发布


使用API网关的控制面,业务研发人员可以轻松的完成API的全生命周期管理,如下图所示:


![API网关-API生命周期管理](API网关-API生命周期管理.png)


业务研发人员从创建API开始,完成参数录入、DSL脚本生成;接着可以通过文档和MOCK功能进行API测试;API测试完成后,为了保证上线稳定性,管理平台提供了发布审批、灰度上线、版本回滚等一系列安全保证措施;API运行期间会监控API的调用失败情况、记录请求日志,一旦发现异常及时发出告警;最后,对于不再使用的API进行下线操作后,会回收API所占用的各类资源并等待重新启用。整个生命周期,全部通过配置化、流程化的方式,由业务研发人员全自助管理,上手时间基本在10分钟以内,极大地提升了研发效率。




### 配置中心


API网关的配置中心存放API的相关配置信息——使用自定义的DSL(Domain-Specific Language,领域专用语言)来描述,用于向API网关的数据面下发API的路由、规则、组件等配置变更。配置中心的设计上使用统一配置管理服务和本地缓存结合的方式,实现动态配置,不停机发布。API的配置如下图所示:


![API网关-配置中心](API网关-配置中心.png)


API配置的详细说明


- **Name、Group**:名字、所属分组

- **Request**:请求的域名、路径、参数等信息

- **Response**:响应的结果组装、异常处理、Header、Cookies信息

- **Filters、FilterConfigs**:API使用到的功能组件和配置信息

- **Invokers**:后端服务(RPC/HTTP/Function)的请求规则和编排信息


相关文章
通过OOS定时升级EIP实例临时带宽
阿里云推出了一项定时升级EIP(弹性公网IP)带宽的功能,旨在解决企业在特定流量高峰时段的网络带宽需求。此功能允许用户预设特定日期和时间自动升级带宽,如电商大促、直播活动或数据备份期间,以确保服务稳定并降低成本。用户可通过OOS控制台设置自动化任务,包括定时类型(立即、一次或周期性)、EIP实例地域、带宽值、升级持续时间和执行速率控制。在流量高峰过后,带宽会自动恢复到原设定,以节省费用。此功能适用于按固定带宽计费的EIP实例,不支持按流量计费的公网带宽。
|
存储 C语言
详细解读AVL树(查找、插入、删除)——C语言
详细解读AVL树(查找、插入、删除)——C语言
157 0
|
编解码 搜索推荐 Java
|
前端开发 JavaScript 安全
前端面试基础题库——4
前端面试基础题库——4
201 0
|
Dubbo Cloud Native 算法
Dubbo-go v3.0 —— 打造一流开源 Go 服务框架
2021 年底 dubbogo 社区正式推出集成 新通信协议、新序列化协议、新应用注册模型、新路由以及新的服务治理能力的 v3.0 版本
735 0
Dubbo-go v3.0  —— 打造一流开源 Go 服务框架
|
存储 算法 C++
"数据结构翻转课堂"答疑实录——顺序表
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。。 【重要提示】 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅。 【课程实践答疑实录】 焦梦真2015-09-20 11:19:20说 太难了 贺利坚2015-09-20 11:25:48答 练就将军本色之时到了。待回头看,江山本
1531 0
|
4天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
3天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1480 6
|
5天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1316 2