# API网关 **Repository Path**: zoomtech/api-gateway ## Basic Information - **Project Name**: API网关 - **Description**: dubbo网关 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-01-03 - **Last Updated**: 2025-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Dubbo, Gateway ## README # 致用网关平台 ### 目录 * 平台背景 * 平台介绍 * 平台特性 * 平台技术 * 核心组件 * 项目结构 * 系统截图 * 环境要求 * 运行说明 ## 平台背景 目前互联网系统通常采用前后端分离的方式,也就是通常所说的C端和S端。其中C端主要是负责展示层的页面渲染,而B端主要负责数据的处理和组装。 C端:主要是前端代码应用,通过HTTP或HTTPS的方式访问NG,然后有NG转发请求给后端应用。 S端:主要是服务端代码应用,可能会是多个垂直业务领域的微服务同时对C端提供服务,可能是HTTP的WEB应用也可能是DUBBO类型的RPC服务应用,C端的请求通常会路由到S端的WEB应用中。 按照这种架构方式,逻辑还算清楚,但对于服务端开发来说,通常需要多做两个操作:①封装WEB服务;②接入登录鉴权。只要对C端提供服务,通常都需要做这两件事。 为了避免此类问题:提供一个统一的API网关应用,统一提供WEB服务,实现标准化请求、接口协议转换、多版本管理、登录鉴权、流控、超时控制、调用监控、服务治理、接口测试工具等功能,减少服务端同学的重复开发工作,完成API的统一管理。 ## 平台介绍 致用网关平台是一个简易的API网关平台。旨在降低后端服务开发与前端调用的耦合性,实现接口开发标准化、统一化。
## 平台特性 * 目前网关仅支持服务端的Dubbo服务接入(HTTP服务暂不支持) * 支持界面化的接口配置管理 * 安全机制(登录鉴权、接口授权、签名检查) * 流控机制(sentinel单机限流) * 处理流程、可插拔机制(组件化配置) * 接口mock(暂不支持) * 支持接口的快速录入测试功能 * 提供了用户管理、角色管理(支持按接口类目授权,暂不支持APPKEY授权) * 跨环境发布(暂不支持,后续会提供接口导入、导出功能) * 平台支持分布式部署,可按需任意扩展节点部署;同时支持了二级缓存配置访问特性,以满足高并发要求 * 平台技术架构图
## 平台技术 * 服务端技术:springboot2.2.6、mysql5+、fastjson、druid、mybatis、logback。 * 前端技术:jquery easyui * 中间件:apache-dubbo2.7.8、redis、alibaba sentinel、elastic-job、zoomkeeper ## 核心组件 * GatewayApiController 网关API入口 * RequestParseProcessor 请求报文解析 * ApiConfigLoadProcessor API配置加载 * ApiParamParseProcessor API参数解析 * SignCheckProcessor 请求签名延签 * FlowControlProcessor API流控 * TenantContextProcessor SAAS租户上下文处理 * LoginCheckProcessor 登录鉴权处理 * AuthCheckProcessor 接口权限处理 * ServiceInvokeProcessor 远程服务调用 * ResultConverterProcessor 响应结果处理
## 项目结构 #### 1、maven项目结构 api-gateway / — api-gateway-biz 【业务层:缓存操作、定时任务、redis消息监听、API配置service、远程服务调用代理】 / — api-gateway-common 【公共层:常量、枚举、异常、DTO、工具类定义】 / — api-gateway-dal 【数据访问层:mysql操作、redis操作】 / — api-gateway-facade 【接口提供层:主要用于对外保留dubbo服务接口、接口参数定义】 / — api-gateway-integration 【接口依赖层:用于外部接口依赖的定义和管理,用于依赖接口参数转内部DTO,起到防腐层作用】 / — api-gateway-model 【实体定义层:主要定义各种网关系统内部传输的对象,非标准领域模型层】 / — api-gateway-server 【WEB层:Application类、API入口、后台管理入口】 / — com.zhiyong.gateway.admin 【管理端:API配置、参数类型配置、用户管理、权限管理、监控】 / — com.zhiyong.gateway.server 【服务端:API请求入口、请求路由】 #### 2、WEB层目录结构 api-gateway-server / — com.zhiyong.gateway.admin / — common 【管理端WEB公共代码】 / — config 【管理端配置定义】 / — RedisSessionConfig 【管理端登录session】 / — controller 【管理端页面接口定义】 / — filter 【管理端LoginFilter】 / — com.zhiyong.gateway.server / — context 【API请求上下文定义】 / — controller / — GatewayApiController 【API调用入口】 / — processor 【API核心处理组件处理器定义】 / — ApiProcessorChain 【API调用处理器链式管理器】 / — src.main.resources 【管理端静态资源】 / — static 【管理端前端代码】 / — css 【页面样式】 / — js 【第三方公共js】 / — pagejs 【网关自定义js】 / — templates 【管理端前端页面代码】 / — api 【API配置管理】 / — app 【APPKEY配置管理】 / — group 【API类目配置管理】 / — monitor 【API监控页面】 / — struct 【API自定义参数类型结构配置管理】 / — user 【管理端用户权限配置管理】 / — doc.html 【网关首页文档说明:前后端接入网关帮助手册】 / — index.html 【网关首页】 / — login.html 【网关登录页面】 ## 系统截图
## 环境要求 1. JDK1.8 2. zk、redis 3. Mysql数据库 ## 运行说明 * 下载项目 * 处理以下几个核心配置 * 初始化数据库脚本执行 api-gateway-dal/src/main/resources/sql/db-init.sql * 修改初始化系统配置(mysql、redis、zk连接配置) api-gateway-server/src/main/resources/application.yml * 运行api-gateway-server模块下的com.zhiyong.gateway.server.Application类启动项目 * 浏览器地址栏输入: http://localhost:19002 进入网关管理后台 账号:admin/admin123 ## 平台作者 ### 毛军锐 VX:ybyh8899