1.网关的设计要求:
高性能,分布式,实现http请求转发rpc服务,接口权限检查,防作弊拦截等相关功能。
关键词:高性能分布式模块、认证功能、路由能力、防作弊能力。
对应的方案:无状态设计、过滤责任链设计、路由方案设计、防作弊设计。
第二,网关的具体作用
功能:请求认证
普通登录验证或界面验证
功能:数据完整性检查
包定长头+变长体
功能:协议转换
JSON- gt;HashMap(字符串,对象)
功能:路由和转发
根据CMD到不同的业务逻辑层。
功能:服务治理
限流、降级和熔断
三。网关的整体功能架构图
功能架构图
四。网关时序图
程序图表
五:需求实现计划
1.无状态设计:
1 gt:单机下不存在会话共享,只是存储内存;但是,它不能使用分布式环境下的高可用需求;
2 gt:分布式方案:会话绑定、会话复制、会话共享和会话客户端存储;
会话绑定:固定节点的UID哈希。具体实现方案如下图所示。
绑定图
会话复制:每台机器都存储了大量的会话;
会话共享:使用缓存服务Redis统一存储会话;
会话缓存:存储在客户端;
2.会话生成算法:暂时不写。一般个人信息+DDL+参数都是用AES加密的。
3.反作弊需求
第一,对于恶意流量,从网关层面进行拦截,防止后端服务的高并发压力。
表现:爬虫,恶意攻击
方案:黑名单(IP,设备id,UID)
数据来源如图所示:
黑名单数据处理源码图
思考:数据量太大怎么办?如何保证实时性?
二是为了防止误伤,需要具备定期发布黑名单数据的能力;
4.网关路由请求:http请求转换成后端服务的rpc请求。
1.协议。
1.网关和前端(如APP)传输协议JSON
2.网关层RPC调用统一HashMap的参数
3:数据返回到统一结果对象{code,data,msg}
2.负载平衡服务发现:rpc框架实现
3.保险丝设计:
组件:海斯特里克斯,链接:https://github.com/Netflix/Hystrix
4.路线分析图
路线分析图
通过上图分析,核心其实是实现URIs到服务的映射;使用RPC通过反射实现远程调用,然后将数据返回到前端。
后记:关于路由映射的问题,这里有很多地方可以讨论,也有很多实现机制。最终还是要看各自公司的实际需求。