基本功能简介如下:
1.路由转发
[{"args":{"pattern":"/getRoute"},"name":"Path"}]
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1fff6c56eaee397641b3ca266df12ace.png)
`id` 'route唯一id',
`location` 'mapping信息',
`uri` '路由转发地址',
`orders`'排序规则 最小值为1',
`predicates`'断言规则',
`filters` '过滤规则',
`start_time`'创建时间',
`status`'是否启用',
`version` '版本信息',
`application_name`'应用名称',
`method_type`'方法类型',
`description`'路由描述 默认为mapping信息'
红色为必输项
uri 是配置转发的服务器地址 , orders 越小越优先
predicates 默认使用 路径转发
还支持请求方法类型, 请求头, cookie, host地址 等等
fitlers 过滤规则 影响转发的因素
2.路由限速 (防止恶意请求)
[{"args":{"key-resolver":"{@apiAndIpKeyResolver}","redis-rate-limiter.burstCapacity":"20","redis-rate-limiter.replenishRate":"5"},"name":"RequestRateLimiter"}]
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a9e664f01c163ac9237fd2e7f43403ac.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/39a310c2a37b0c6571ed7e8bfb40248a.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b8f077bed8c8563469c9e532876cedd2.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/300a33de8395b7d060b713b7bee29779.png)
3.定时同步
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c93ba0da5a572b75c9a865f7accdde6d.png)
4.支持熔断
举例
#设置默认熔断4s
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=4000
#路由增加熔断过滤 ,默认跳转fallback
[
{"args":{"description":"限速过滤规则","key-resolver":"#{@apiAndIpKeyResolver}","redis-rate-limiter.burstCapacity":"20","redis-rate-limiter.replenishRate":"5"},"name":"RequestRateLimiter"},
{"args":{"name":"default","description":"熔断过滤规则","fallbackUri":"forward:/fallback"},"name":"Hystrix"}
]
超时提示
@RequestMapping("/fallback")
public ReturnVO fallback() {
return ReturnVO.fail("服务暂时不可用, 请稍候尝试 !");
}
@PostMapping("hystrix/test")
public String hystrixTest(@RequestBody JSONObject params) {
log.info("请求参数==>{}",params);
try {
log.info("-----------sleep 5s-------------");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("请求完成");
return "hystrix success!";
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/43fcc131ec5d3482069557f0fbbbf280.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2da5866919ca2a43cab24afda44d1d0c.png)
5. 日志记录
记录网关转发的以下信息:
`client_address` '客户端地址',
`request_address` '请求地址',
`gateway_address` '网关转发地址',
`url` 'api路径',
`method` '请求方法',
`request_param` '请求参数',
`request_header` '请求头',
`response_body` '请求体',
`start_time` '请求开始时间',
`end_time` '请求结束时间',
`spend_time` '时间差ms'
当转发服务器 异常时, 无response_body end_time spend_time
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b530d1f204fc9bec62dbf8b9a3df4d66.png)
ps:
因为集成ribbon负载均衡 ,项目结构要重构
项目需要向公司业务耦合, 集成服务发现(没有用eruka) 使用RequestMappingHandlerMapping 自我扫描注册
毕竟在社区上得到很多帮助,希望也可以帮助需要做网关的人