目标:
- 开发前准备
- 后台管理功能
- 实现多服务代理功能与租户接入功能
开发前准备
先整理出整体的功能点,再逐步细化实现
后台管理功能
- 管理员:登陆、退出、修改密码
- DashBoard 功能点:
- 四维度指标
- 全站流量统计(折线图)
- 全站服务类型占比统计(饼图)
- 租户管理
- 租户列表
- 租户信息的 CURD
- 流量统计
- 服务
- 服务列表
- HTTP 服务信息 CUR
- TCP 服务信息 CUR
- GRPC 服务信息 CUR
- 流量统计
- 服务删除
代理服务器功能点
- HTTP 服务信息
- 7层多策略负载
- websocket
- 请求超时控制
- 限流
- 白名单限制
- 前置匹配
- HTTPS
- STRIP_URI
- 重写URL
- head头转换
- TCP 服务信息
- 4层多策略负载
- 限流
- 白名单限制
- GRPC 服务信息
- 7层多策略负载
- 限流
- 白名单限制
- metadata 转换
- 基于 JWT 的多租户接入功能
- 支持 HTTP
- GRPC 接入代理
功能点实现思考
后台管理功能
原则:不重复造轮子,选择适合的方案
- 前端方面
- 前端框架选择:vue-element-admin
- 图标选择: echarts
- 后端方面
- 整理接口文档
- SQL 数据表整理并创建
- 后端框架选择:gin_scaffold
- 前后端联调测试
代理服务器功能
原则:考虑到功能简单化容易理解
- HTTP 服务、 TCP 服务、 GRPC 服务
- 服务启动时从 DB 加载配置信息到内存中
- 反向代理以中间件形式,注册到中间件最后一级(实现:多策略负载)
- 功能均以中间件形式注册到服务器上,实现相应功能
- 多租户功能
- 独立 URL 获取 jwt 的 token 信息
- jwt 中间件验证 token 信息
如何保证前端与后端开发不阻塞
- 前端直接代理后端的 mock 接口做开发测试
- 前端独立 mock 数据
- 后端接口开发完毕替换相应 mock 接口即可
核心还是接口文档