本项目是利用Golang实现的网关项目,应用技术栈为gin、redis、mysql、zookeeper
下图是网关的整体架构图,架构由代理服务器和管理服务器组成,其中两台服务都在同一个项目代码中呈现
功能介绍管理后台部分
- 管理员基于Redis的后台session登陆,可以实现有状态的访问网关管理后台
- 支持管理员信息获取与密码修改
-
支持管理员创建HTTP/HTTPS代理转发服务
-
支持管理员创建TCP代理转发服务
-
使用swagger生成了api接口方便给前端调用
-
支持在管理员后台查看所有的服务的QPS、日访问量、转发节点的数量等信息,以及对流量进行统计
- 支持在管理员后台添加租户信息并查看当前租户的QPS、日请求数等信息
- 统计所有的服务数、服务占比、当天的网关访问量、当前QPS等全局信息
代理转发服务器部分
-
支持根据不同的负载均衡策略对HTTP/HTTPS服务进行代理转发
-
支持根据不同的负载均衡策略对TCP服务进行代理转发
-
根据租户的用户名和密钥使用JWT实现Token认证
中间件:
HTTP/HTTPS服务:
- 对所有HTTP/HTTPS服务流量进行统计
- 对所有HTTP/HTTPS服务流量进行限流熔断
- 对所有HTTP/HTTPS服务根据客户端ip进行白名单/黑名单控制
- 对所有HTTP/HTTPS服务根据客户端ip根据配置进行uri重写
- 对所有HTTP/HTTPS服务根据客户端ip根据配置进行headers头转换
- 对所有HTTP/HTTPS服务根据租户信息进行权限认证拦截
- 对所有HTTP/HTTPS服务根据租户信息进行租户流量统计
- 对所有HTTP/HTTPS服务根据租户信息进行租户限流熔断
TCP服务:
- 对所有TCP服务流量进行统计
- 对所有TCP服务流量进行限流熔断
- 对所有TCP服务根据客户端ip进行白名单/黑名单控制