冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • 专栏介绍

    • 开篇:分布式高性能网关项目正式启动
    • 造轮子:大厂为何都要自研API网关
  • 第01部分:需求设计

    • 第01节:为何要学习高性能Polaris网关
    • 第02节:高性能Polaris网关的目标与挑战
    • 第03节:高性能Polaris网关需求与流程梳理
    • 第04节:高性能Polaris网关技术流程梳理
  • 第02部分:总体架构设计

    • 第01节:高性能Polaris网关总体方案目标与架构设计
    • 第02节:高性能Polaris网关数据模型设计
  • 第03部分:环境搭建

    • 第01节:高性能Polaris网关研发环境搭建
    • 第02节:高性能Polaris网关项目工程搭建
    • 第03节:高性能Polaris网关Maven私服搭建
  • 第04部分:通用模型设计

    • 第01节:请求与响应模型的顶层接口设计
    • 第02节:请求模型的顶层接口实现类设计
    • 第03节:响应模型的顶层接口实现类设计
    • 第04节:调用链路顶层接口与抽象类设计
    • 第05节:调用链路顶层接口的实现类设计
    • 第06节:网关配置规则模型实现类设计
    • 第07节:服务定义与实例模型实现类设计
    • 第08节:服务配置缓存接口与实现类模型设计
    • 第09节:网关上下文属性顶层接口与抽象类设计
    • 第10节:网关上下文属性工厂与实现类设计
    • 第11节:网关上下文顶层抽象接口设计
    • 第12节:网关上下文顶层抽象类设计
    • 第13节:网关上下文核心实现类设计
  • 第05部分:通用过滤器设计

    • 第01节:网关顶级核心过滤器接口设计
    • 第02节:网关请求与响应核心工厂类的设计与实现
    • 第03节:网关过滤器两大顶级抽象类设计与实现
    • 第04节:网关通用抽象过滤器链的设计与实现
    • 第05节:网关过滤器通用工厂类的设计与实现
    • 第06节:网关过滤器适配自定义SPI提高扩展性
    • 第07节:基于自定义SPI实现负载均衡过滤器
    • 第08节:基于自定义SPI实现超时配置过滤器
    • 第09节:基于自定义SPI实现HTTP过滤器
    • 第10节:基于自定义SPI实现RPC过滤器
    • 第11节:基于自定义SPI实现指标分析过滤器
    • 第12节:基于自定义SPI实现Mock过滤器
    • 第13节:基于自定义SPI实现灰度过滤器
    • 第14节:基于自定义SPI实现错误处理过滤器
  • 第06部分:通用处理器设计

    • 第01节:通用核心处理器的设计与实现
    • 第02节:基于disruptor设计和实现BatchEvent模式Holder
    • 第03节:基于disruptor设计和实现BatchEvent模式缓冲队列
    • 第04节:MPMC模式缓冲队列Condition接口和ThreadWait类的设计与实现
    • 第05节:MPMC模式缓冲队列自定义抽象Condition类的设计和实现
    • 第06节:MPMC模式缓冲队列自定义抽象自旋Condition的设计和实现
    • 第07节:MPMC模式缓冲队列自定义抽象等待Condition的设计和实现
    • 第08节:MPMC模式缓冲队列自定义AtomicLong的设计和实现
    • 第09节:MPMC模式缓冲队列自定义队列容量的设计和实现
    • 第10节:MPMC模式缓冲队列核心并发队列接口的设计和实现
    • 第11节:MPMC模式缓冲队列自定义并发环形队列的设计和实现
    • 第12节:MPMC模式缓冲队列自定义并发阻塞队列的设计和实现
    • 第13节:基于自定义SPI扩展实现BatchEvent模式处理器
    • 第14节:基于自定义SPI扩展实现MPMC模式处理器
  • 第07部分:核心容器设计

    • 第01节:HTTP处理器核心接口的设计与实现
    • 第02节:服务端核心处理器的设计与实现
    • 第03节:服务端连接管理器的设计与实现
    • 第04节:基于Netty的服务端整体设计与实现
    • 第05节:基于Netty的客户端整体设计与实现
  • 第08部分:核心启动流程

    • 第01节:核心启动容器类的设计与实现
    • 第02节:核心启动加载流程的设计与实现
  • 第09部分:牛刀小试

    • 第01节:实战通过高性能Polaris网关访问后端服务
  • 第10部分:注册中心

    • 第01节:注册中心通用SPI接口的设计与定义
    • 第02节:基于自定义SPI扩展实现Nacos注册中心
    • 第03节:基于自定义SPI扩展实现Zookeeper注册中心
    • 第04节:基于自定义SPI扩展实现Etcd注册中心(作业篇)
    • 第05节:基于自定义SPI扩展实现Consul注册中心(作业篇)
    • 第06节:网关启动容器整合注册中心实现服务注册与发现
  • 第11部分:负载均衡

    • 第01节:负载均衡通用SPI接口与顶级抽象类的设计与实现
    • 第02节:基于SPI扩展随机算法负载均衡策略
    • 第03节:基于SPI扩展加权随机算法负载均衡策略
    • 第04节:基于SPI扩展轮询算法负载均衡策略
    • 第05节:基于SPI扩展加权轮询算法负载均衡策略
    • 第06节:基于SPI扩展哈希算法负载均衡策略
    • 第07节:基于SPI扩展加权哈希算法负载均衡策略
    • 第08节:基于SPI扩展源IP地址哈希算法负载均衡策略
    • 第09节:基于SPI扩展源IP地址加权哈希算法负载均衡策略
    • 第10节:基于SPI扩展一致性Hash算法负载均衡策略
  • 第12部分:增强型负载均衡

    • 第01节:基于SPI扩展增强型加权随机算法负载均衡策略
    • 第02节:基于SPI扩展增强型加权轮询算法负载均衡策略
    • 第03节:基于SPI扩展增强型加权哈希算法负载均衡策略
    • 第04节:基于SPI扩展增强型源IP哈希算法负载均衡策略
    • 第05节:基于SPI扩展增强型一致性哈希算法负载均衡策略
  • 第13部分:实战负载均衡

    • 第01节:实战通过SPI加载负载均衡策略访问后端服务
  • 第14部分:配置中心

    • 第01节:配置中心通用SPI接口的设计与定义
    • 第02节:基于SPI扩展实现Nacos配置中心
    • 第03节:基于SPI扩展实现Zookeeper配置中心
    • 第04节:基于SPI扩展实现Etcd配置中心
    • 第05节:基于SPI扩展实现Consul配置中心
    • 第06节:网关启动容器整合配置中心实现服务配置
  • 第15部分:热插拔插件

    • 第01节:网关热插拔插件SPI接口与核心工厂类设计与实现
    • 第02节:网关启动容器整合热插拔插件的设计与实现
  • 第16部分:客户端SDK

    • 第01节:网关客户端SDK注解与协议的设计与定义
    • 第02节:网关客户端扫描器与抽象注册中心实现类设计
    • 第03节:网关客户端HTTP协议SDK的设计和实现
    • 第04节:网关客户端RPC协议SDK的设计和实现
    • 第05节:网关客户端WebSocket协议SDK的设计和实现
  • 第17部分:完整实战实例

    • 第01节:网关访问后端服务HTTP接口完整案例
    • 第02节:网关访问后端服务RPC接口完整案例
  • 第18部分:专栏总结

    • 高性能Polaris网关整体专栏总结

《高性能Polaris网关》需求设计-第03节:高性能Polaris网关需求与流程梳理

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.site
文章汇总:https://binghe.site/md/all/all.html
源码获取地址:https://t.zsxq.com/0dhvFs5oR
课程视频:https://t.zsxq.com/W7xj6

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:做一件事情时,我们需要先明确做什么事情,然后才是怎么做这件事情。在正式设计和研发Polaris网关之前,要梳理好Polaris网关的需求与流程。本节,我们就一起梳理下Polaris网关的需求与流程。
  • 课程视频:https://t.zsxq.com/W7xj6

大家好,我是冰河~~

无论是开发中间件项目,还是业务系统,不管是架构师,还是研发人员接到任务后,第一时间不是进行系统设计,更不是一开始就干代码,而是要先好好梳理下系统的需求与业务流程,任何技术最终都是要服务于业务。正所谓磨刀不误砍柴工,今天就来梳理下Polaris网关的需求和流程。

一、前言

相信很多小伙伴对API网关都不陌生了,无论是互联网大厂,还是中小型公司,多多少少都会在自己的系统架构设计中引入API网关。可以这么说,API网关已经成为系统架构设计中不可或缺的重要组成部分。作为技术人员,在正式架构设计和编码实现一款高性能的API网关之前,我们需要明确API网关的核心需求与实现流程。

二、本节诉求

研发人员接收到任务后,切记不要一上来就干代码,不然中途你多多少少都会遇到这种情况:开发到中途,突然卡卡壳,不知道接下来的需求和业务是什么了,也不知道如何继续向下开发了。或者开发到中途时,发现自己对需求和业务的理解有偏差,再回过头来梳理需求和业务流程,得不偿失。如果自己做的功能与需求不符,可能还要将之前开发的功能推倒重来,最终做了很多无用功,浪费时间和精力。

在正式设计和研发高性能Polaris网关之前,从技术人员的角度梳理下高性能网关的需求和业务流程。

三、需求描述

API Gateway是一种专门设计用于管理、控制、保护和转换API流量的服务器软件或服务,封装了内部系统的架构,为微服务系统中的所有服务提供统一的API入口点。客户端的所有请求首先到达API Gateway,然后由它将请求路由到适当的服务。在客户端看来,API Gateway就是整个系统的唯一入口,客户端只需要与API Gateway进行交互,而无需关心后端服务的具体实现和部署情况。除了路由功能,API Gateway还负责执行一些常见的任务,如认证、授权、限流、监控、日志记录等。

在分析高性能Polaris网关的需求时,我们可以从功能性需求和非功能性需求两个方面考虑。

3.1 功能性需求

对于高性能Polaris网关来说,要对标成熟的API网关实现各项功能,总体如图3-1所示。


(1)路由和转发

接收来自客户端的请求,并根据预定义的路由规则将请求转发到相应的后端服务或微服务。这种路由功能可以基于请求的路径、方法、头部信息等进行配置。

(2)协议转换

将来自客户端的请求从一种协议转换为另一种协议,例如将HTTP请求转换为HTTPS请求,或者将REST请求转换为SOAP请求,将HTTP请求转换成RPC或者WebSocket请求等。

(3)请求和响应转换

对请求和响应的内容进行转换,例如修改请求和响应的头部信息、参数重命名、请求体的转换、响应体的格式化等。

(4)安全认证和授权

对客户端进行身份验证,并根据预先定义的访问控制策略对请求进行授权。这可以包括基于令牌、API密钥、OAuth等机制的认证和授权。

(5)灰度发布和版本管理

支持灰度发布和版本管理,使开发人员可以逐步发布新版本的API,并控制不同版本之间的流量分配。

(6)服务注册与发现

与服务发现和注册中心集成,动态地发现和注册后端服务的地址和可用性信息,以实现自动化的负载均衡和故障恢复。

(7)多协议支持

支持多种协议,如HTTP、HTTPS、WebSocket、RPC等,可以处理不同类型的请求和响应,并与各种类型的客户端和后端服务进行通信。

(8)流控与配额管理

实施流量限制和配额管理策略,限制每个用户或每个应用程序的访问频率和使用配额,防止恶意用户或异常情况导致的过度访问和资源浪费。

(9)多环境支持

支持多个环境(如开发环境、测试环境、生产环境等)的部署和管理,可以在不同的环境中灵活配置和管理API网关实例,满足不同环境的需求和要求。

(10)流量控制

实施流量控制策略,包括限制请求的速率、配额管理、访问频率限制等,以防止过度使用或滥用API资源。

(11)监控和日志记录

记录请求和响应的详细信息,包括请求来源、目标服务、处理时间、错误状态等,并生成日志以供监控、故障排除和审计请求使用。

(12)缓存请求与响应

缓存经常请求的数据或响应,以减少对后端服务的请求,提高性能并减少延迟。

(13)负载均衡

查看完整文章

加入冰河技术知识星球,解锁完整技术文章、小册、视频与完整代码

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Prev
第02节:高性能Polaris网关的目标与挑战
Next
第04节:高性能Polaris网关技术流程梳理
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接