SpringCloud Gateway 的样例工程,使用响应式编程,包含功能:
- 鉴权
- 数据级权限控制
- 验签
- 动态路由
- 日志与APM
- 流控,降级
注意: 该项目对 weweibuy-framework项目有依赖,直接打开会报错,需要先下载:
weweibuy-framework 然后 mvn install
本地启动时设置环境变量: -Dspring.profiles.active=dev
支持功能:
- 用户鉴权
- App鉴权
参考: AuthenticationGatewayFilterFactory
参考: DataPermissionGatewayFilterFactory
对业务请求参数无侵入,无需特意改变请求/响应报文的验签
支持功能:
- GET请求验签
- Json请求验签
- application/x-www-form-urlencoded 验签
- 文件上传请求验签
参考: SystemRequestParamGatewayFilterFactory VerifySignatureGatewayFilterFactory
基于JDBC + Mybatis 动态路由,路由/断言/过滤参数灵活配置:
数据库脚本:
router.sql
功能实现:
参考: JdbcRouteDefinitionLocator
JdbcRouterManger
查询与刷新路由服务端点:
JdbcRouterManger
基础的日志输出功能,类似AccessLog;
日志参考: AccessLogFilter
APM参考: AddTraceHeaderGatewayFilterFactory
参考: Sentinel SentinelGatewayFilterFactory
ILoadBalancer对服务有自己的缓存,定时(默认30s)到注册中心更新缓存的服务信息. 当服务下线时,如果本地缓存不清除,将导致将请求转发到一个不可用的服务上,直到下次定时更新服务. 可以通过注册中心监听服务健康状态(例如consul的watches),通知一个MQ服务,gateway监听MQ消息刷新本地缓存服务信息 参考: RocketServerChangeListener