项目简介
# 项目简介
# 背景介绍
进行前端学习,是否苦于测试接口不够,Mock又比较繁琐。Swagger部署测试,是否缺少对使用人员的管理,对测试历史的保存以及直接对接口缺陷的沟通。
本平台支持本地部署与在线接入调用,提供团队协作、权限控制以及多种类型接口信息导入导出等功能。计划未来使用Jsoup等工具开放更多接口供学习测试,并允许后台用户接入SDK开放自己接口,经管理员审核后予以开放。同时提供流量监测、权限控制等服务。
# 主要工作
1.根据不同服务与业务流程,将整个项目后端划分为用户服务、社区服务、通讯服务、Server、本地接口、公共模块、API网关这多个子项目,并使用Maven进行多模块依赖管理和打包。客户端SDK为单独项目提供给Client接入使用。
2.为防止接口被恶意调用,设计API签名认证算法,为用户分配唯一ak / sk以鉴权,保障调用的安全性、可溯源性(指便于统计接口调用次数)。
3.为便于开发者公开接口,基于Spring Boot Starter开发了客户端SDK,通过注解与yaml配置即可公开接口,提高开发体验。同时为后台调用者、前端开发者、Web用户提供各类型一键接入代码实现,方便接口调用者请求接口。
4.客户端SDK尽量使用最少依赖,基于SpringBoot Starter,自主设计客户端SDK,并遵循开发规范,保证了SDK的精简、避免依赖冲突。
5.选用Spring Cloud Gateway作为API网关,实现了路由转发、访问控制、流量染色,并集中处理签名校验、请求参数校验、接口调用统计,自定义全局过滤器,实现动态路由等业务逻辑,提高安全性的同时、便于系统开发维护,借助 netty 良好特性实现业务需求。
6.为解决多个子系统内代码大量重复的问题,抽象模型层和业务层代码为公共模块,并使用Dubbo RPC框架实现子系统间的高性能接口调用(实测单机qps达 (待测)),大幅减少重复代码。
7.自主编写Dockerfile,并通过第三方容器托管平台实现自动化镜像构建及容器部署,提高部署上线效率。
8.计划在微服务网关前搭建Nginx网关,通过负载均衡实现更大的并发。
9.在数据量大的情况下,使用Spring Scheduler定时任务离线计算结果集来替代实时查询,提高了后端统计分析的性能,单次查询响应时长得到降低。
10.基于netty实现客户端与服务端的连接,保证了IO的非阻塞与高并发下的系统性能。通过心跳机制实现对客户端接口可用性的检测。
11.多模块使用了多种设计模式,例如策略模式、门面模式、工厂模式、适配器模式等,使系统的可扩展性得到提高。