KEMS
的网关模块基于KOCA接入网关实现,并在此基础上做二次扩展。
有关
KOCA接入网关
的使用请参考KOCA接入网关
扩展内容
Filter实现
PreForwardIPFilter
,记录原始clientIP
到header:x-kems-client-ip
;PreRequestCredentialFilter
,对服务调用凭据进行设置header:x-access-credentials
。PreRequestFilter
,对Post请求的RequestBody进行传递。WrapperResponseFilter
,对Post请求进行字段过滤与对答应进行增强。SignFilter
, 对请求进行签名校验 (配置默认为关闭状态)
sentinel集成
新增连接Sentinel Dashboard进行限流熔断(需先启动Sentinel Dashboard,重启后限流配置会失效),部分属性如下:
① resourceMode:规则是针对 API Gateway 的 route(RESOURCE_MODE_ROUTE_ID)还是用户在 Sentinel 中定义的 API 分组(RESOURCE_MODE_CUSTOM_API_NAME),默认是 route。
② resource:资源名称,可以是网关中的 route 名称或者用户自定义的 API 分组名称。
③ grade:限流指标维度,同限流规则的 grade 字段
④ count:限流阈值
⑤ intervalSec:统计时间窗口,单位是秒,默认是 1 秒
⑥ controlBehavior:流量整形的控制效果,目前支持快速失败和匀速排队两种模式,默认是快速失败。
⑦ burst:应对突发请求时额外允许的请求数目。
⑧ maxQueueingTimeoutMs:匀速排队模式下的最长排队时间,单位是毫秒,仅在匀速排队模式下生效。
⑨ paramItem:参数限流配置。若不提供,则代表不针对参数进行限流,该网关规则将会被转换成普通流控规则;否则会转换成热点规则。
服务流控:如Route ID = ReactiveCompositeDiscoveryClient_MODULE-SYSTEM,此时会针对整个MODULE-SYSTEM模块的请求进行规定好的限流。
- API流控:精确模式(指对URL的路径完全匹配时进行限流,如:module-system/user/list)、前缀模式(指对URL的路径完全匹配时进行限流,如:module-system/app/**)、正则模式。
swagger聚合
集成swagger-bootstrap-ui
,可以在网关上通过/doc.html访问到模块下的api信息。