点击上方"IT牧场",选择"设为星标"
技术干货每日送达!
基于 Nacos 和 Sentinel ,实现灰度路由和流量防护一体化的解决方案,发布在最新的 Nepxion Discovery 5.4.0 版本,具体参考: 源码主页,请访问 : https://github.com/Nepxion/Discovery 指南主页,请访问: https://github.com/Nepxion/DiscoveryGuide 文档主页,请访问: https://pan.baidu.com/s/1i57rXaNKPuhGRqZ2MONZOA Nepxion Discovery 框架在实现灰度发布和路由功能前提下,结合 Nacos 和 Sentinel ,对流量再实施一层防护措施,更能达到企业级的流量安全控制的目的。它的功能包括:
封装远程配置中心和本地规则文件的读取逻辑,即优先读取远程配置,如果不存在或者规则错误,则读取本地规则文件。动态实现远程配置中心对于规则的热刷新;
封装 NacosDataSource 和 ApolloDataSource ,支持 Nacos 和 Apollo 两个远程配置中心,零代码实现 Sentinel 功能。更多的远程配置中心,请参照 Sentinel 官方的 DataSource 并自行集成;
支持原生的流控规则、降级规则、授权规则、系统规则、热点参数流控规则;
支持扩展 LimitApp 的机制,通过动态的 Http Header 方式实现组合式防护机制,包括基于服务名、基于灰度组、基于灰度版本、基于灰度区域、基于机器地址和端口等防护机制,支持自定义任意的业务参数组合实现该功能,例如,根据传入的微服务灰度版本号+用户名,组合在一起进行熔断;
支持微服务侧 Actuator、Swagger 和 Rest 三种方式的规则写入;
支持控制台侧基于微服务名的 Actuator、Swagger 和 Rest 三种方式的批量规则写入;
支持开关关闭上述功能
spring.application.strategy.sentinel.enabled=true ,默认是关闭的。
环境搭建及依赖引入
服务端在 Discovery 框架原有依赖的基础上,再引入如下依赖:
com.nepxion
discovery-plugin-strategy-starter-service-sentinel
${discovery.version}
com.nepxion
discovery-plugin-strategy-sentinel-starter-nacos
${discovery.version}
原生 Sentinel 注解
参照下面代码,为接口方法增加 @SentinelResource 注解, value为sentinel-resource , blockHandler 和 fallback 是防护其作用后需要执行的方法:
@RestController
@ConditionalOnProperty(name = DiscoveryConstant.SPRING_APPLICATION_NAME, havingValue = "discovery-guide-service-b")
public class BFeignImpl extends AbstractFeignImpl implements BFeign {
private static final Logger LOG = LoggerFactory.getLogger(BFeignImpl.class);
@Override
@SentinelResource(value = "sentinel-resource", blockHandler = "handleBlock", fallback = "handleFallback")
public String invoke(@PathVariable(value = "value") String value) {
value = doInvoke(value);
LOG.info("调用路径:{}", value);
return