gitextract_7y3y0mhf/ ├── .codecov.yml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── ci.yml │ ├── codeql-analysis.yml │ └── document-lint.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── doc/ │ ├── README.md │ └── awesome-sentinel.md ├── pom.xml ├── sentinel-adapter/ │ ├── pom.xml │ ├── sentinel-apache-dubbo-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── dubbo/ │ │ │ │ ├── BaseSentinelDubboFilter.java │ │ │ │ ├── DubboAppContextFilter.java │ │ │ │ ├── DubboUtils.java │ │ │ │ ├── SentinelDubboConsumerFilter.java │ │ │ │ ├── SentinelDubboProviderFilter.java │ │ │ │ ├── config/ │ │ │ │ │ └── DubboAdapterGlobalConfig.java │ │ │ │ ├── fallback/ │ │ │ │ │ ├── DefaultDubboFallback.java │ │ │ │ │ ├── DubboFallback.java │ │ │ │ │ └── DubboFallbackRegistry.java │ │ │ │ └── origin/ │ │ │ │ ├── DefaultDubboOriginParser.java │ │ │ │ └── DubboOriginParser.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── dubbo/ │ │ │ └── org.apache.dubbo.rpc.Filter │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ ├── BaseTest.java │ │ │ ├── DubboTestUtil.java │ │ │ └── adapter/ │ │ │ └── dubbo/ │ │ │ ├── AbstractTimeBasedTest.java │ │ │ ├── DubboAppContextFilterTest.java │ │ │ ├── DubboUtilsTest.java │ │ │ ├── SentinelDubboConsumerFilterTest.java │ │ │ ├── SentinelDubboProviderFilterTest.java │ │ │ ├── fallback/ │ │ │ │ └── DubboFallbackRegistryTest.java │ │ │ ├── origin/ │ │ │ │ └── DubboOriginRegistryTest.java │ │ │ └── provider/ │ │ │ ├── DemoService.java │ │ │ └── impl/ │ │ │ └── DemoServiceImpl.java │ │ └── resources/ │ │ ├── spring-dubbo-consumer-filter.xml │ │ └── spring-dubbo-provider-filter.xml │ ├── sentinel-apache-dubbo3-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── dubbo3/ │ │ │ │ ├── BaseSentinelDubboFilter.java │ │ │ │ ├── DubboAppContextFilter.java │ │ │ │ ├── DubboUtils.java │ │ │ │ ├── SentinelDubboConsumerFilter.java │ │ │ │ ├── SentinelDubboProviderFilter.java │ │ │ │ ├── config/ │ │ │ │ │ └── DubboAdapterGlobalConfig.java │ │ │ │ ├── fallback/ │ │ │ │ │ ├── DefaultDubboFallback.java │ │ │ │ │ ├── DubboFallback.java │ │ │ │ │ └── DubboFallbackRegistry.java │ │ │ │ └── origin/ │ │ │ │ ├── DefaultDubboOriginParser.java │ │ │ │ └── DubboOriginParser.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── dubbo/ │ │ │ ├── org.apache.dubbo.rpc.Filter │ │ │ └── org.apache.dubbo.rpc.cluster.filter.ClusterFilter │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ ├── BaseTest.java │ │ │ ├── DubboTestUtil.java │ │ │ └── adapter/ │ │ │ └── dubbo3/ │ │ │ ├── AbstractTimeBasedTest.java │ │ │ ├── DubboAppContextFilterTest.java │ │ │ ├── DubboUtilsTest.java │ │ │ ├── SentinelDubboConsumerFilterTest.java │ │ │ ├── SentinelDubboProviderFilterTest.java │ │ │ ├── SentinelFilterTest.java │ │ │ ├── fallback/ │ │ │ │ └── DubboFallbackRegistryTest.java │ │ │ ├── origin/ │ │ │ │ └── DubboOriginRegistryTest.java │ │ │ └── provider/ │ │ │ ├── DemoService.java │ │ │ └── impl/ │ │ │ └── DemoServiceImpl.java │ │ └── resources/ │ │ ├── spring-dubbo-consumer-filter.xml │ │ └── spring-dubbo-provider-filter.xml │ ├── sentinel-apache-httpclient-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── apache/ │ │ │ └── httpclient/ │ │ │ ├── SentinelApacheHttpClientBuilder.java │ │ │ ├── config/ │ │ │ │ └── SentinelApacheHttpClientConfig.java │ │ │ ├── extractor/ │ │ │ │ ├── ApacheHttpClientResourceExtractor.java │ │ │ │ └── DefaultApacheHttpClientResourceExtractor.java │ │ │ └── fallback/ │ │ │ ├── ApacheHttpClientFallback.java │ │ │ └── DefaultApacheHttpClientFallback.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── apache/ │ │ └── httpclient/ │ │ ├── SentinelApacheHttpClientTest.java │ │ ├── app/ │ │ │ ├── TestApplication.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ ├── config/ │ │ │ └── SentinelApacheHttpClientConfigTest.java │ │ └── fallback/ │ │ └── ApacheHttpClientFallbackTest.java │ ├── sentinel-api-gateway-adapter-common/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── gateway/ │ │ │ │ └── common/ │ │ │ │ ├── SentinelGatewayConstants.java │ │ │ │ ├── api/ │ │ │ │ │ ├── ApiDefinition.java │ │ │ │ │ ├── ApiDefinitionChangeObserver.java │ │ │ │ │ ├── ApiPathPredicateItem.java │ │ │ │ │ ├── ApiPredicateGroupItem.java │ │ │ │ │ ├── ApiPredicateItem.java │ │ │ │ │ ├── GatewayApiDefinitionManager.java │ │ │ │ │ └── matcher/ │ │ │ │ │ └── AbstractApiMatcher.java │ │ │ │ ├── command/ │ │ │ │ │ ├── GetGatewayApiDefinitionGroupCommandHandler.java │ │ │ │ │ ├── GetGatewayRuleCommandHandler.java │ │ │ │ │ ├── UpdateGatewayApiDefinitionGroupCommandHandler.java │ │ │ │ │ └── UpdateGatewayRuleCommandHandler.java │ │ │ │ ├── param/ │ │ │ │ │ ├── ConfigurableRequestItemParser.java │ │ │ │ │ ├── GatewayParamParser.java │ │ │ │ │ ├── GatewayRegexCache.java │ │ │ │ │ └── RequestItemParser.java │ │ │ │ ├── rule/ │ │ │ │ │ ├── GatewayFlowRule.java │ │ │ │ │ ├── GatewayParamFlowItem.java │ │ │ │ │ ├── GatewayRuleConverter.java │ │ │ │ │ └── GatewayRuleManager.java │ │ │ │ └── slot/ │ │ │ │ ├── GatewayFlowSlot.java │ │ │ │ └── GatewaySlotChainBuilder.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ │ └── com.alibaba.csp.sentinel.slotchain.ProcessorSlot │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── gateway/ │ │ └── common/ │ │ ├── api/ │ │ │ └── GatewayApiDefinitionManagerTest.java │ │ ├── param/ │ │ │ ├── GatewayParamParserTest.java │ │ │ └── GatewayRegexCacheTest.java │ │ └── rule/ │ │ ├── GatewayRuleConverterTest.java │ │ └── GatewayRuleManagerTest.java │ ├── sentinel-dubbo-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── dubbo/ │ │ │ │ ├── AbstractDubboFilter.java │ │ │ │ ├── DubboAdapterGlobalConfig.java │ │ │ │ ├── DubboAppContextFilter.java │ │ │ │ ├── DubboUtils.java │ │ │ │ ├── SentinelDubboConsumerFilter.java │ │ │ │ ├── SentinelDubboProviderFilter.java │ │ │ │ ├── fallback/ │ │ │ │ │ ├── DefaultDubboFallback.java │ │ │ │ │ ├── DubboFallback.java │ │ │ │ │ └── DubboFallbackRegistry.java │ │ │ │ └── origin/ │ │ │ │ ├── DefaultDubboOriginParser.java │ │ │ │ └── DubboOriginParser.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── dubbo/ │ │ │ └── com.alibaba.dubbo.rpc.Filter │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ ├── BaseTest.java │ │ │ └── adapter/ │ │ │ └── dubbo/ │ │ │ ├── AbstractDubboFilterTest.java │ │ │ ├── DubboAppContextFilterTest.java │ │ │ ├── DubboUtilsTest.java │ │ │ ├── SentinelDubboConsumerFilterTest.java │ │ │ ├── SentinelDubboProviderFilterTest.java │ │ │ ├── fallback/ │ │ │ │ └── DubboFallbackRegistryTest.java │ │ │ ├── origin/ │ │ │ │ └── DubboOriginRegistryTest.java │ │ │ └── provider/ │ │ │ ├── DemoService.java │ │ │ └── impl/ │ │ │ └── DemoServiceImpl.java │ │ └── resources/ │ │ ├── spring-dubbo-consumer-filter.xml │ │ └── spring-dubbo-provider-filter.xml │ ├── sentinel-grpc-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── grpc/ │ │ │ ├── SentinelGrpcClientInterceptor.java │ │ │ └── SentinelGrpcServerInterceptor.java │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── grpc/ │ │ │ ├── FooServiceClient.java │ │ │ ├── FooServiceImpl.java │ │ │ ├── GrpcTestServer.java │ │ │ ├── SentinelGrpcClientInterceptorTest.java │ │ │ └── SentinelGrpcServerInterceptorTest.java │ │ └── proto/ │ │ └── example.proto │ ├── sentinel-jax-rs-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── jaxrs/ │ │ │ ├── SentinelJaxRsClientTemplate.java │ │ │ ├── SentinelJaxRsProviderFilter.java │ │ │ ├── config/ │ │ │ │ └── SentinelJaxRsConfig.java │ │ │ ├── exception/ │ │ │ │ └── DefaultExceptionMapper.java │ │ │ ├── fallback/ │ │ │ │ ├── DefaultSentinelJaxRsFallback.java │ │ │ │ └── SentinelJaxRsFallback.java │ │ │ ├── future/ │ │ │ │ └── FutureWrapper.java │ │ │ └── request/ │ │ │ ├── DefaultRequestOriginParser.java │ │ │ ├── DefaultResourceNameParser.java │ │ │ ├── RequestOriginParser.java │ │ │ └── ResourceNameParser.java │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── jaxrs/ │ │ │ ├── ClientFilterTest.java │ │ │ ├── ProviderFilterTest.java │ │ │ ├── TestApplication.java │ │ │ └── TestResource.java │ │ └── resources/ │ │ ├── application-client.yml │ │ └── application-provider.yml │ ├── sentinel-motan-adapter/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── motan/ │ │ │ ├── MotanUtils.java │ │ │ ├── SentinelMotanConsumerFilter.java │ │ │ ├── SentinelMotanProviderFilter.java │ │ │ ├── config/ │ │ │ │ └── MotanAdapterGlobalConfig.java │ │ │ └── fallback/ │ │ │ ├── DefaultMotanFallback.java │ │ │ └── MotanFallback.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.weibo.api.motan.filter.Filter │ ├── sentinel-okhttp-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── okhttp/ │ │ │ ├── SentinelOkHttpConfig.java │ │ │ ├── SentinelOkHttpInterceptor.java │ │ │ ├── extractor/ │ │ │ │ ├── DefaultOkHttpResourceExtractor.java │ │ │ │ └── OkHttpResourceExtractor.java │ │ │ └── fallback/ │ │ │ ├── DefaultOkHttpFallback.java │ │ │ └── OkHttpFallback.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── okhttp/ │ │ ├── SentinelOkHttpInterceptorTest.java │ │ ├── app/ │ │ │ ├── TestApplication.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ ├── config/ │ │ │ └── SentinelOkHttpConfigTest.java │ │ ├── extractor/ │ │ │ └── OkHttpResourceExtractorTest.java │ │ └── fallback/ │ │ └── OkHttpFallbackTest.java │ ├── sentinel-quarkus-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ ├── sentinel-annotation-quarkus-adapter-deployment/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── quarkus/ │ │ │ │ └── annotation/ │ │ │ │ └── deployment/ │ │ │ │ └── SentinelAnnotationQuarkusAdapterProcessor.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── quarkus/ │ │ │ └── annotation/ │ │ │ └── deployment/ │ │ │ ├── FooService.java │ │ │ ├── FooUtil.java │ │ │ └── SentinelAnnotationQuarkusAdapterTest.java │ │ ├── sentinel-annotation-quarkus-adapter-runtime/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── quarkus-extension.yaml │ │ ├── sentinel-jax-rs-quarkus-adapter-deployment/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── quarkus/ │ │ │ │ └── jaxrs/ │ │ │ │ └── deployment/ │ │ │ │ └── SentinelJaxRsQuarkusAdapterProcessor.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── quarkus/ │ │ │ └── jaxrs/ │ │ │ └── deployment/ │ │ │ ├── SentinelJaxRsQuarkusAdapterTest.java │ │ │ └── TestResource.java │ │ ├── sentinel-jax-rs-quarkus-adapter-runtime/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ ├── quarkus-extension.yaml │ │ │ └── services/ │ │ │ └── javax.ws.rs.ext.Providers │ │ ├── sentinel-native-image-quarkus-adapter-deployment/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── quarkus/ │ │ │ └── nativeimage/ │ │ │ └── SentinelNativeImageProcessor.java │ │ └── sentinel-native-image-quarkus-adapter-runtime/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── quarkus/ │ │ │ └── nativeimage/ │ │ │ └── SentinelRecorder.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── quarkus-extension.yaml │ ├── sentinel-reactor-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── reactor/ │ │ │ ├── ContextConfig.java │ │ │ ├── EntryConfig.java │ │ │ ├── FluxSentinelOperator.java │ │ │ ├── InheritableBaseSubscriber.java │ │ │ ├── MonoSentinelOperator.java │ │ │ ├── ReactorSphU.java │ │ │ ├── SentinelReactorConstants.java │ │ │ ├── SentinelReactorSubscriber.java │ │ │ └── SentinelReactorTransformer.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── reactor/ │ │ ├── FluxSentinelOperatorTestIntegrationTest.java │ │ ├── MonoSentinelOperatorIntegrationTest.java │ │ └── ReactorSphUTest.java │ ├── sentinel-sofa-rpc-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── sofa/ │ │ │ │ └── rpc/ │ │ │ │ ├── AbstractSofaRpcFilter.java │ │ │ │ ├── SentinelConstants.java │ │ │ │ ├── SentinelSofaRpcConsumerFilter.java │ │ │ │ ├── SentinelSofaRpcProviderFilter.java │ │ │ │ ├── SofaRpcUtils.java │ │ │ │ └── fallback/ │ │ │ │ ├── DefaultSofaRpcFallback.java │ │ │ │ ├── SofaRpcFallback.java │ │ │ │ └── SofaRpcFallbackRegistry.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── sofa-rpc/ │ │ │ └── com.alipay.sofa.rpc.filter.Filter │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── sofa/ │ │ └── rpc/ │ │ ├── AbstractSofaRpcFilterTest.java │ │ ├── BaseTest.java │ │ ├── SentinelSofaRpcConsumerFilterTest.java │ │ ├── SentinelSofaRpcProviderFilterTest.java │ │ ├── SofaRpcUtilsTest.java │ │ ├── fallback/ │ │ │ ├── DefaultSofaRpcFallbackTest.java │ │ │ └── SofaRpcFallbackRegistryTest.java │ │ └── service/ │ │ ├── DemoService.java │ │ └── impl/ │ │ └── DemoServiceImpl.java │ ├── sentinel-spring-cloud-gateway-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── gateway/ │ │ │ │ └── sc/ │ │ │ │ ├── SentinelGatewayFilter.java │ │ │ │ ├── ServerWebExchangeItemParser.java │ │ │ │ ├── api/ │ │ │ │ │ ├── GatewayApiMatcherManager.java │ │ │ │ │ ├── SpringCloudGatewayApiDefinitionChangeObserver.java │ │ │ │ │ └── matcher/ │ │ │ │ │ └── WebExchangeApiMatcher.java │ │ │ │ ├── callback/ │ │ │ │ │ ├── BlockRequestHandler.java │ │ │ │ │ ├── DefaultBlockRequestHandler.java │ │ │ │ │ ├── GatewayCallbackManager.java │ │ │ │ │ └── RedirectBlockRequestHandler.java │ │ │ │ ├── exception/ │ │ │ │ │ └── SentinelGatewayBlockExceptionHandler.java │ │ │ │ └── route/ │ │ │ │ ├── AntRoutePathMatcher.java │ │ │ │ ├── RegexRoutePathMatcher.java │ │ │ │ └── RouteMatchers.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinitionChangeObserver │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── gateway/ │ │ │ └── sc/ │ │ │ ├── SentinelGatewayFilterTest.java │ │ │ └── SpringCloudGatewayParamParserTest.java │ │ └── resources/ │ │ └── mockito-extensions/ │ │ └── org.mockito.plugins.MockMaker │ ├── sentinel-spring-cloud-gateway-v6x-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── gateway/ │ │ │ │ └── sc/ │ │ │ │ ├── SentinelGatewayFilter.java │ │ │ │ ├── ServerWebExchangeItemParser.java │ │ │ │ ├── api/ │ │ │ │ │ ├── GatewayApiMatcherManager.java │ │ │ │ │ ├── SpringCloudGatewayApiDefinitionChangeObserver.java │ │ │ │ │ └── matcher/ │ │ │ │ │ └── WebExchangeApiMatcher.java │ │ │ │ ├── callback/ │ │ │ │ │ ├── BlockRequestHandler.java │ │ │ │ │ ├── DefaultBlockRequestHandler.java │ │ │ │ │ ├── GatewayCallbackManager.java │ │ │ │ │ └── RedirectBlockRequestHandler.java │ │ │ │ ├── exception/ │ │ │ │ │ └── SentinelGatewayBlockExceptionHandler.java │ │ │ │ └── route/ │ │ │ │ ├── AntRoutePathMatcher.java │ │ │ │ ├── RegexRoutePathMatcher.java │ │ │ │ └── RouteMatchers.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinitionChangeObserver │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── gateway/ │ │ │ └── sc/ │ │ │ ├── SentinelGatewayFilterTest.java │ │ │ └── SpringCloudGatewayParamParserTest.java │ │ └── resources/ │ │ └── mockito-extensions/ │ │ └── org.mockito.plugins.MockMaker │ ├── sentinel-spring-restclient-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── spring/ │ │ │ └── restclient/ │ │ │ ├── SentinelRestClientConfig.java │ │ │ ├── SentinelRestClientInterceptor.java │ │ │ ├── extractor/ │ │ │ │ ├── DefaultRestClientResourceExtractor.java │ │ │ │ └── RestClientResourceExtractor.java │ │ │ └── fallback/ │ │ │ ├── DefaultRestClientFallback.java │ │ │ └── RestClientFallback.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── spring/ │ │ └── restclient/ │ │ ├── ManualTest.java │ │ ├── SentinelRestClientConfigTest.java │ │ ├── SentinelRestClientInterceptorSimpleTest.java │ │ ├── app/ │ │ │ ├── TestApplication.java │ │ │ └── TestController.java │ │ ├── extractor/ │ │ │ └── DefaultRestClientResourceExtractorTest.java │ │ └── fallback/ │ │ └── DefaultRestClientFallbackTest.java │ ├── sentinel-spring-webflux-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── spring/ │ │ │ └── webflux/ │ │ │ ├── SentinelWebFluxFilter.java │ │ │ ├── callback/ │ │ │ │ ├── BlockRequestHandler.java │ │ │ │ ├── DefaultBlockRequestHandler.java │ │ │ │ └── WebFluxCallbackManager.java │ │ │ └── exception/ │ │ │ └── SentinelBlockExceptionHandler.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── spring/ │ │ └── webflux/ │ │ ├── SentinelWebFluxIntegrationTest.java │ │ └── test/ │ │ ├── WebFluxTestApplication.java │ │ ├── WebFluxTestConfig.java │ │ ├── WebFluxTestController.java │ │ └── WebFluxTestRouter.java │ ├── sentinel-spring-webmvc-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── spring/ │ │ │ └── webmvc/ │ │ │ ├── AbstractSentinelInterceptor.java │ │ │ ├── SentinelExceptionAware.java │ │ │ ├── SentinelWebInterceptor.java │ │ │ ├── SentinelWebTotalInterceptor.java │ │ │ ├── callback/ │ │ │ │ ├── BlockExceptionHandler.java │ │ │ │ ├── DefaultBlockExceptionHandler.java │ │ │ │ ├── RequestOriginParser.java │ │ │ │ └── UrlCleaner.java │ │ │ └── config/ │ │ │ ├── BaseWebMvcConfig.java │ │ │ ├── SentinelWebMvcConfig.java │ │ │ └── SentinelWebMvcTotalConfig.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── spring/ │ │ └── webmvc/ │ │ ├── ResultWrapper.java │ │ ├── SentinelSpringMvcIntegrationTest.java │ │ ├── SentinelWebInterceptorTest.java │ │ ├── TestApplication.java │ │ ├── config/ │ │ │ ├── InterceptorConfig.java │ │ │ └── SentinelSpringMvcBlockHandlerConfig.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ └── exception/ │ │ └── BizException.java │ ├── sentinel-spring-webmvc-v6x-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── spring/ │ │ │ └── webmvc_v6x/ │ │ │ ├── AbstractSentinelInterceptor.java │ │ │ ├── SentinelWebInterceptor.java │ │ │ ├── SentinelWebPrefixInterceptor.java │ │ │ ├── SentinelWebTotalInterceptor.java │ │ │ ├── callback/ │ │ │ │ ├── BlockExceptionHandler.java │ │ │ │ ├── DefaultBlockExceptionHandler.java │ │ │ │ └── RequestOriginParser.java │ │ │ └── config/ │ │ │ ├── BaseWebMvcConfig.java │ │ │ ├── SentinelPreWebMvcConfig.java │ │ │ ├── SentinelWebMvcConfig.java │ │ │ ├── SentinelWebMvcTotalConfig.java │ │ │ └── WebServletLocalConfig.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── spring/ │ │ └── webmvc_v6x/ │ │ ├── ResultWrapper.java │ │ ├── SentinelSpringMvcIntegrationTest.java │ │ ├── SentinelWebInterceptorHttpMethodPrefixTest.java │ │ ├── SentinelWebInterceptorTest.java │ │ ├── TestApplication.java │ │ ├── callback/ │ │ │ └── DefaultBlockExceptionHandlerTest.java │ │ ├── config/ │ │ │ ├── InterceptorConfig.java │ │ │ └── SentinelSpringMvcBlockHandlerConfig.java │ │ └── controller/ │ │ └── TestController.java │ ├── sentinel-web-adapter-common/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── web/ │ │ └── common/ │ │ └── UrlCleaner.java │ ├── sentinel-web-servlet/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── servlet/ │ │ │ ├── CommonFilter.java │ │ │ ├── CommonTotalFilter.java │ │ │ ├── callback/ │ │ │ │ ├── DefaultUrlBlockHandler.java │ │ │ │ ├── DefaultUrlCleaner.java │ │ │ │ ├── RequestOriginParser.java │ │ │ │ ├── UrlBlockHandler.java │ │ │ │ ├── UrlCleaner.java │ │ │ │ └── WebCallbackManager.java │ │ │ ├── config/ │ │ │ │ └── WebServletConfig.java │ │ │ └── util/ │ │ │ └── FilterUtil.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ ├── servlet/ │ │ │ ├── CommonFilterTest.java │ │ │ ├── FilterConfig.java │ │ │ ├── TestApplication.java │ │ │ └── TestController.java │ │ ├── servletcontext/ │ │ │ ├── CommonFilterContextTest.java │ │ │ ├── FilterContextConfig.java │ │ │ ├── TestContextApplication.java │ │ │ └── TestContextController.java │ │ └── servletmethod/ │ │ ├── CommonFilterMethodTest.java │ │ ├── FilterMethodConfig.java │ │ ├── TestApplication.java │ │ └── TestMethodController.java │ ├── sentinel-zuul-adapter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── adapter/ │ │ │ │ └── gateway/ │ │ │ │ └── zuul/ │ │ │ │ ├── RequestContextItemParser.java │ │ │ │ ├── api/ │ │ │ │ │ ├── ZuulApiDefinitionChangeObserver.java │ │ │ │ │ ├── ZuulGatewayApiMatcherManager.java │ │ │ │ │ ├── matcher/ │ │ │ │ │ │ └── RequestContextApiMatcher.java │ │ │ │ │ └── route/ │ │ │ │ │ ├── PrefixRoutePathMatcher.java │ │ │ │ │ ├── RegexRoutePathMatcher.java │ │ │ │ │ └── ZuulRouteMatchers.java │ │ │ │ ├── callback/ │ │ │ │ │ ├── DefaultRequestOriginParser.java │ │ │ │ │ ├── RequestOriginParser.java │ │ │ │ │ └── ZuulGatewayCallbackManager.java │ │ │ │ ├── constants/ │ │ │ │ │ └── ZuulConstant.java │ │ │ │ ├── fallback/ │ │ │ │ │ ├── BlockResponse.java │ │ │ │ │ ├── DefaultBlockFallbackProvider.java │ │ │ │ │ ├── ZuulBlockFallbackManager.java │ │ │ │ │ └── ZuulBlockFallbackProvider.java │ │ │ │ └── filters/ │ │ │ │ ├── EntryHolder.java │ │ │ │ ├── SentinelEntryUtils.java │ │ │ │ ├── SentinelZuulErrorFilter.java │ │ │ │ ├── SentinelZuulPostFilter.java │ │ │ │ └── SentinelZuulPreFilter.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinitionChangeObserver │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── adapter/ │ │ └── gateway/ │ │ └── zuul/ │ │ ├── fallback/ │ │ │ ├── ZuulBlockFallbackManagerTest.java │ │ │ └── ZuulBlockFallbackProviderTest.java │ │ ├── filters/ │ │ │ ├── SentinelZuulErrorFilterTest.java │ │ │ ├── SentinelZuulPostFilterTest.java │ │ │ └── SentinelZuulPreFilterTest.java │ │ └── route/ │ │ └── SentinelZuulRouteTest.java │ └── sentinel-zuul2-adapter/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── adapter/ │ │ │ └── gateway/ │ │ │ └── zuul2/ │ │ │ ├── HttpRequestMessageItemParser.java │ │ │ ├── api/ │ │ │ │ ├── ZuulApiDefinitionChangeObserver.java │ │ │ │ ├── ZuulGatewayApiMatcherManager.java │ │ │ │ ├── matcher/ │ │ │ │ │ └── HttpRequestMessageApiMatcher.java │ │ │ │ └── route/ │ │ │ │ ├── PrefixRoutePathMatcher.java │ │ │ │ ├── RegexRoutePathMatcher.java │ │ │ │ └── ZuulRouteMatchers.java │ │ │ ├── constants/ │ │ │ │ └── SentinelZuul2Constants.java │ │ │ ├── fallback/ │ │ │ │ ├── BlockResponse.java │ │ │ │ ├── DefaultBlockFallbackProvider.java │ │ │ │ ├── ZuulBlockFallbackManager.java │ │ │ │ └── ZuulBlockFallbackProvider.java │ │ │ └── filters/ │ │ │ ├── EntryHolder.java │ │ │ ├── endpoint/ │ │ │ │ └── SentinelZuulEndpoint.java │ │ │ ├── inbound/ │ │ │ │ └── SentinelZuulInboundFilter.java │ │ │ └── outbound/ │ │ │ └── SentinelZuulOutboundFilter.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinitionChangeObserver │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── adapter/ │ └── gateway/ │ └── zuul2/ │ └── fallback/ │ ├── ZuulBlockFallbackManagerTest.java │ └── ZuulBlockFallbackProviderTest.java ├── sentinel-benchmark/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── benchmark/ │ └── SentinelEntryBenchmark.java ├── sentinel-cluster/ │ ├── README.md │ ├── pom.xml │ ├── sentinel-cluster-client-default/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ ├── cluster/ │ │ │ │ │ └── client/ │ │ │ │ │ ├── ClientConstants.java │ │ │ │ │ ├── DefaultClusterTokenClient.java │ │ │ │ │ ├── NettyTransportClient.java │ │ │ │ │ ├── codec/ │ │ │ │ │ │ ├── ClientEntityCodecProvider.java │ │ │ │ │ │ ├── DefaultRequestEntityWriter.java │ │ │ │ │ │ ├── DefaultResponseEntityDecoder.java │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ ├── FlowRequestDataWriter.java │ │ │ │ │ │ │ ├── FlowResponseDataDecoder.java │ │ │ │ │ │ │ ├── ParamFlowRequestDataWriter.java │ │ │ │ │ │ │ ├── PingRequestDataWriter.java │ │ │ │ │ │ │ └── PingResponseDataDecoder.java │ │ │ │ │ │ ├── netty/ │ │ │ │ │ │ │ ├── NettyRequestEncoder.java │ │ │ │ │ │ │ └── NettyResponseDecoder.java │ │ │ │ │ │ └── registry/ │ │ │ │ │ │ ├── RequestDataWriterRegistry.java │ │ │ │ │ │ └── ResponseDataDecodeRegistry.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ClusterClientAssignConfig.java │ │ │ │ │ │ ├── ClusterClientConfig.java │ │ │ │ │ │ ├── ClusterClientConfigManager.java │ │ │ │ │ │ ├── ClusterClientStartUpConfig.java │ │ │ │ │ │ └── ServerChangeObserver.java │ │ │ │ │ ├── handler/ │ │ │ │ │ │ ├── TokenClientHandler.java │ │ │ │ │ │ └── TokenClientPromiseHolder.java │ │ │ │ │ └── init/ │ │ │ │ │ └── DefaultClusterClientInitFunc.java │ │ │ │ └── command/ │ │ │ │ ├── entity/ │ │ │ │ │ └── ClusterClientStateEntity.java │ │ │ │ └── handler/ │ │ │ │ ├── FetchClusterClientConfigHandler.java │ │ │ │ └── ModifyClusterClientConfigHandler.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.cluster.client.ClusterTokenClient │ │ │ ├── com.alibaba.csp.sentinel.cluster.codec.request.RequestEntityWriter │ │ │ ├── com.alibaba.csp.sentinel.cluster.codec.response.ResponseEntityDecoder │ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── cluster/ │ │ └── client/ │ │ └── codec/ │ │ └── data/ │ │ ├── FlowResponseDataDecoderTest.java │ │ ├── ParamFlowRequestDataWriterTest.java │ │ └── PingResponseDataDecoderTest.java │ ├── sentinel-cluster-common-default/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── cluster/ │ │ ├── ClusterConstants.java │ │ ├── ClusterErrorMessages.java │ │ ├── ClusterTransportClient.java │ │ ├── annotation/ │ │ │ └── RequestType.java │ │ ├── codec/ │ │ │ ├── EntityDecoder.java │ │ │ ├── EntityWriter.java │ │ │ ├── request/ │ │ │ │ ├── RequestEntityDecoder.java │ │ │ │ └── RequestEntityWriter.java │ │ │ └── response/ │ │ │ ├── ResponseEntityDecoder.java │ │ │ └── ResponseEntityWriter.java │ │ ├── exception/ │ │ │ └── SentinelClusterException.java │ │ ├── registry/ │ │ │ └── ConfigSupplierRegistry.java │ │ ├── request/ │ │ │ ├── ClusterRequest.java │ │ │ ├── Request.java │ │ │ └── data/ │ │ │ ├── FlowRequestData.java │ │ │ └── ParamFlowRequestData.java │ │ └── response/ │ │ ├── ClusterResponse.java │ │ ├── Response.java │ │ └── data/ │ │ └── FlowTokenResponseData.java │ ├── sentinel-cluster-server-default/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── cluster/ │ │ │ │ ├── flow/ │ │ │ │ │ ├── ClusterFlowChecker.java │ │ │ │ │ ├── ClusterParamFlowChecker.java │ │ │ │ │ ├── ConcurrentClusterFlowChecker.java │ │ │ │ │ ├── DefaultTokenService.java │ │ │ │ │ ├── rule/ │ │ │ │ │ │ ├── ClusterFlowRuleManager.java │ │ │ │ │ │ ├── ClusterParamFlowRuleManager.java │ │ │ │ │ │ └── NamespaceFlowProperty.java │ │ │ │ │ └── statistic/ │ │ │ │ │ ├── ClusterMetricNode.java │ │ │ │ │ ├── ClusterMetricNodeGenerator.java │ │ │ │ │ ├── ClusterMetricStatistics.java │ │ │ │ │ ├── ClusterParamMetricStatistics.java │ │ │ │ │ ├── concurrent/ │ │ │ │ │ │ ├── ClusterConcurrentCheckerLogListener.java │ │ │ │ │ │ ├── CurrentConcurrencyManager.java │ │ │ │ │ │ ├── TokenCacheNode.java │ │ │ │ │ │ ├── TokenCacheNodeManager.java │ │ │ │ │ │ └── expire/ │ │ │ │ │ │ ├── ExpireStrategy.java │ │ │ │ │ │ └── RegularExpireStrategy.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── ClusterFlowEvent.java │ │ │ │ │ │ └── ClusterMetricBucket.java │ │ │ │ │ ├── limit/ │ │ │ │ │ │ ├── GlobalRequestLimiter.java │ │ │ │ │ │ └── RequestLimiter.java │ │ │ │ │ └── metric/ │ │ │ │ │ ├── ClusterMetric.java │ │ │ │ │ ├── ClusterMetricLeapArray.java │ │ │ │ │ ├── ClusterParamMetric.java │ │ │ │ │ └── ClusterParameterLeapArray.java │ │ │ │ └── server/ │ │ │ │ ├── DefaultEmbeddedTokenServer.java │ │ │ │ ├── NettyTransportServer.java │ │ │ │ ├── SentinelDefaultTokenServer.java │ │ │ │ ├── ServerConstants.java │ │ │ │ ├── TokenServiceProvider.java │ │ │ │ ├── codec/ │ │ │ │ │ ├── DefaultRequestEntityDecoder.java │ │ │ │ │ ├── DefaultResponseEntityWriter.java │ │ │ │ │ ├── ServerEntityCodecProvider.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── FlowRequestDataDecoder.java │ │ │ │ │ │ ├── FlowResponseDataWriter.java │ │ │ │ │ │ ├── ParamFlowRequestDataDecoder.java │ │ │ │ │ │ ├── PingRequestDataDecoder.java │ │ │ │ │ │ └── PingResponseDataWriter.java │ │ │ │ │ ├── netty/ │ │ │ │ │ │ ├── NettyRequestDecoder.java │ │ │ │ │ │ └── NettyResponseEncoder.java │ │ │ │ │ └── registry/ │ │ │ │ │ ├── RequestDataDecodeRegistry.java │ │ │ │ │ └── ResponseDataWriterRegistry.java │ │ │ │ ├── command/ │ │ │ │ │ └── handler/ │ │ │ │ │ ├── FetchClusterFlowRulesCommandHandler.java │ │ │ │ │ ├── FetchClusterMetricCommandHandler.java │ │ │ │ │ ├── FetchClusterParamFlowRulesCommandHandler.java │ │ │ │ │ ├── FetchClusterServerConfigHandler.java │ │ │ │ │ ├── FetchClusterServerInfoCommandHandler.java │ │ │ │ │ ├── ModifyClusterFlowRulesCommandHandler.java │ │ │ │ │ ├── ModifyClusterParamFlowRulesCommandHandler.java │ │ │ │ │ ├── ModifyClusterServerFlowConfigHandler.java │ │ │ │ │ ├── ModifyClusterServerTransportConfigHandler.java │ │ │ │ │ └── ModifyServerNamespaceSetHandler.java │ │ │ │ ├── config/ │ │ │ │ │ ├── ClusterServerConfigManager.java │ │ │ │ │ ├── ServerFlowConfig.java │ │ │ │ │ ├── ServerTransportConfig.java │ │ │ │ │ └── ServerTransportConfigObserver.java │ │ │ │ ├── connection/ │ │ │ │ │ ├── Connection.java │ │ │ │ │ ├── ConnectionDescriptor.java │ │ │ │ │ ├── ConnectionGroup.java │ │ │ │ │ ├── ConnectionManager.java │ │ │ │ │ ├── ConnectionPool.java │ │ │ │ │ ├── NettyConnection.java │ │ │ │ │ └── ScanIdleConnectionTask.java │ │ │ │ ├── handler/ │ │ │ │ │ └── TokenServerHandler.java │ │ │ │ ├── init/ │ │ │ │ │ └── DefaultClusterServerInitFunc.java │ │ │ │ ├── log/ │ │ │ │ │ └── ClusterServerStatLogUtil.java │ │ │ │ ├── processor/ │ │ │ │ │ ├── FlowRequestProcessor.java │ │ │ │ │ ├── ParamFlowRequestProcessor.java │ │ │ │ │ ├── RequestProcessor.java │ │ │ │ │ └── RequestProcessorProvider.java │ │ │ │ └── util/ │ │ │ │ └── ClusterRuleUtil.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.cluster.TokenService │ │ │ ├── com.alibaba.csp.sentinel.cluster.codec.request.RequestEntityDecoder │ │ │ ├── com.alibaba.csp.sentinel.cluster.codec.response.ResponseEntityWriter │ │ │ ├── com.alibaba.csp.sentinel.cluster.server.EmbeddedClusterTokenServer │ │ │ ├── com.alibaba.csp.sentinel.cluster.server.processor.RequestProcessor │ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── cluster/ │ │ ├── AbstractTimeBasedTest.java │ │ ├── ClusterFlowTestUtil.java │ │ ├── flow/ │ │ │ ├── ClusterFlowCheckerTest.java │ │ │ ├── ConcurrentClusterFlowCheckerTest.java │ │ │ └── statistic/ │ │ │ ├── concurrent/ │ │ │ │ ├── CurrentConcurrencyManagerTest.java │ │ │ │ └── TokenCacheNodeManagerTest.java │ │ │ ├── limit/ │ │ │ │ ├── GlobalRequestLimiterTest.java │ │ │ │ └── RequestLimiterTest.java │ │ │ └── metric/ │ │ │ ├── ClusterMetricTest.java │ │ │ └── ClusterParamMetricTest.java │ │ └── server/ │ │ ├── AbstractTimeBasedTest.java │ │ ├── codec/ │ │ │ └── data/ │ │ │ └── PingResponseDataWriterTest.java │ │ ├── config/ │ │ │ └── ClusterServerConfigManagerTest.java │ │ └── connection/ │ │ ├── ConnectionGroupTest.java │ │ └── ConnectionManagerTest.java │ └── sentinel-cluster-server-envoy-rls/ │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ ├── sample/ │ │ └── k8s/ │ │ ├── README.md │ │ ├── envoy-legacy-v2-api.yml │ │ ├── envoy-v3-api.yml │ │ └── sentinel-rls.yml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── cluster/ │ │ │ └── server/ │ │ │ └── envoy/ │ │ │ └── rls/ │ │ │ ├── SentinelEnvoyRlsConstants.java │ │ │ ├── SentinelEnvoyRlsServer.java │ │ │ ├── SentinelEnvoyRlsServiceImpl.java │ │ │ ├── SentinelRlsGrpcServer.java │ │ │ ├── datasource/ │ │ │ │ └── EnvoyRlsRuleDataSourceService.java │ │ │ ├── flow/ │ │ │ │ └── SimpleClusterFlowChecker.java │ │ │ ├── log/ │ │ │ │ └── RlsAccessLogger.java │ │ │ ├── rule/ │ │ │ │ ├── EnvoyRlsRule.java │ │ │ │ ├── EnvoyRlsRuleManager.java │ │ │ │ └── EnvoySentinelRuleConverter.java │ │ │ └── service/ │ │ │ └── v3/ │ │ │ └── SentinelEnvoyRlsServiceImpl.java │ │ └── proto/ │ │ ├── envoy/ │ │ │ ├── api/ │ │ │ │ └── v2/ │ │ │ │ ├── core/ │ │ │ │ │ └── base.proto │ │ │ │ └── ratelimit/ │ │ │ │ └── ratelimit.proto │ │ │ ├── config/ │ │ │ │ └── core/ │ │ │ │ └── v3/ │ │ │ │ └── base.proto │ │ │ ├── extensions/ │ │ │ │ └── common/ │ │ │ │ └── ratelimit/ │ │ │ │ └── v3/ │ │ │ │ └── ratelimit.proto │ │ │ ├── service/ │ │ │ │ └── ratelimit/ │ │ │ │ ├── v2/ │ │ │ │ │ └── rls.proto │ │ │ │ └── v3/ │ │ │ │ └── rls.proto │ │ │ └── type/ │ │ │ └── v3/ │ │ │ └── ratelimit_unit.proto │ │ ├── udpa/ │ │ │ └── annotations/ │ │ │ ├── BUILD │ │ │ ├── migrate.proto │ │ │ ├── security.proto │ │ │ ├── sensitive.proto │ │ │ ├── status.proto │ │ │ └── versioning.proto │ │ └── validate/ │ │ └── validate.proto │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── cluster/ │ └── server/ │ └── envoy/ │ └── rls/ │ ├── SentinelEnvoyRlsServiceImplTest.java │ ├── rule/ │ │ └── EnvoySentinelRuleConverterTest.java │ └── service/ │ └── v3/ │ └── SentinelEnvoyRlsServiceImplTest.java ├── sentinel-core/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ ├── AsyncEntry.java │ │ │ ├── Constants.java │ │ │ ├── CtEntry.java │ │ │ ├── CtSph.java │ │ │ ├── Entry.java │ │ │ ├── EntryType.java │ │ │ ├── Env.java │ │ │ ├── ErrorEntryFreeException.java │ │ │ ├── ResourceTypeConstants.java │ │ │ ├── Sph.java │ │ │ ├── SphO.java │ │ │ ├── SphResourceTypeSupport.java │ │ │ ├── SphU.java │ │ │ ├── Tracer.java │ │ │ ├── annotation/ │ │ │ │ └── SentinelResource.java │ │ │ ├── cluster/ │ │ │ │ ├── ClusterStateManager.java │ │ │ │ ├── TokenResult.java │ │ │ │ ├── TokenResultStatus.java │ │ │ │ ├── TokenServerDescriptor.java │ │ │ │ ├── TokenService.java │ │ │ │ ├── client/ │ │ │ │ │ ├── ClusterTokenClient.java │ │ │ │ │ └── TokenClientProvider.java │ │ │ │ ├── log/ │ │ │ │ │ ├── ClusterClientStatLogUtil.java │ │ │ │ │ └── ClusterStatLogUtil.java │ │ │ │ └── server/ │ │ │ │ ├── ClusterTokenServer.java │ │ │ │ ├── EmbeddedClusterTokenServer.java │ │ │ │ └── EmbeddedClusterTokenServerProvider.java │ │ │ ├── concurrent/ │ │ │ │ └── NamedThreadFactory.java │ │ │ ├── config/ │ │ │ │ ├── SentinelConfig.java │ │ │ │ └── SentinelConfigLoader.java │ │ │ ├── context/ │ │ │ │ ├── Context.java │ │ │ │ ├── ContextNameDefineException.java │ │ │ │ ├── ContextUtil.java │ │ │ │ └── NullContext.java │ │ │ ├── eagleeye/ │ │ │ │ ├── BaseLoggerBuilder.java │ │ │ │ ├── EagleEye.java │ │ │ │ ├── EagleEyeAppender.java │ │ │ │ ├── EagleEyeCoreUtils.java │ │ │ │ ├── EagleEyeLogDaemon.java │ │ │ │ ├── EagleEyeRollingFileAppender.java │ │ │ │ ├── FastDateFormat.java │ │ │ │ ├── StatEntry.java │ │ │ │ ├── StatEntryFunc.java │ │ │ │ ├── StatLogController.java │ │ │ │ ├── StatLogger.java │ │ │ │ ├── StatLoggerBuilder.java │ │ │ │ ├── StatRollingData.java │ │ │ │ ├── SyncAppender.java │ │ │ │ └── TokenBucket.java │ │ │ ├── init/ │ │ │ │ ├── InitExecutor.java │ │ │ │ ├── InitFunc.java │ │ │ │ └── InitOrder.java │ │ │ ├── log/ │ │ │ │ ├── LogBase.java │ │ │ │ ├── LogConfigLoader.java │ │ │ │ ├── LogTarget.java │ │ │ │ ├── Logger.java │ │ │ │ ├── LoggerSpiProvider.java │ │ │ │ ├── RecordLog.java │ │ │ │ └── jul/ │ │ │ │ ├── BaseJulLogger.java │ │ │ │ ├── ConsoleHandler.java │ │ │ │ ├── CspFormatter.java │ │ │ │ ├── DateFileLogHandler.java │ │ │ │ ├── FormattingTuple.java │ │ │ │ ├── JavaLoggingAdapter.java │ │ │ │ ├── Level.java │ │ │ │ └── MessageFormatter.java │ │ │ ├── metric/ │ │ │ │ └── extension/ │ │ │ │ ├── AdvancedMetricExtension.java │ │ │ │ ├── MetricCallbackInit.java │ │ │ │ ├── MetricExtension.java │ │ │ │ ├── MetricExtensionProvider.java │ │ │ │ └── callback/ │ │ │ │ ├── MetricEntryCallback.java │ │ │ │ └── MetricExitCallback.java │ │ │ ├── node/ │ │ │ │ ├── ClusterNode.java │ │ │ │ ├── DefaultNode.java │ │ │ │ ├── EntranceNode.java │ │ │ │ ├── IntervalProperty.java │ │ │ │ ├── Node.java │ │ │ │ ├── NodeBuilder.java │ │ │ │ ├── OccupySupport.java │ │ │ │ ├── OccupyTimeoutProperty.java │ │ │ │ ├── SampleCountProperty.java │ │ │ │ ├── StatisticNode.java │ │ │ │ └── metric/ │ │ │ │ ├── MetricNode.java │ │ │ │ ├── MetricSearcher.java │ │ │ │ ├── MetricTimerListener.java │ │ │ │ ├── MetricWriter.java │ │ │ │ └── MetricsReader.java │ │ │ ├── property/ │ │ │ │ ├── DynamicSentinelProperty.java │ │ │ │ ├── NoOpSentinelProperty.java │ │ │ │ ├── PropertyListener.java │ │ │ │ ├── SentinelProperty.java │ │ │ │ └── SimplePropertyListener.java │ │ │ ├── slotchain/ │ │ │ │ ├── AbstractLinkedProcessorSlot.java │ │ │ │ ├── DefaultProcessorSlotChain.java │ │ │ │ ├── MethodResourceWrapper.java │ │ │ │ ├── ProcessorSlot.java │ │ │ │ ├── ProcessorSlotChain.java │ │ │ │ ├── ProcessorSlotEntryCallback.java │ │ │ │ ├── ProcessorSlotExitCallback.java │ │ │ │ ├── ResourceWrapper.java │ │ │ │ ├── SlotChainBuilder.java │ │ │ │ ├── SlotChainProvider.java │ │ │ │ └── StringResourceWrapper.java │ │ │ ├── slots/ │ │ │ │ ├── DefaultSlotChainBuilder.java │ │ │ │ ├── block/ │ │ │ │ │ ├── AbstractRule.java │ │ │ │ │ ├── BlockException.java │ │ │ │ │ ├── ClusterRuleConstant.java │ │ │ │ │ ├── Rule.java │ │ │ │ │ ├── RuleConstant.java │ │ │ │ │ ├── RuleManager.java │ │ │ │ │ ├── SentinelRpcException.java │ │ │ │ │ ├── authority/ │ │ │ │ │ │ ├── AuthorityException.java │ │ │ │ │ │ ├── AuthorityRule.java │ │ │ │ │ │ ├── AuthorityRuleChecker.java │ │ │ │ │ │ ├── AuthorityRuleManager.java │ │ │ │ │ │ └── AuthoritySlot.java │ │ │ │ │ ├── degrade/ │ │ │ │ │ │ ├── DefaultCircuitBreakerRuleManager.java │ │ │ │ │ │ ├── DefaultCircuitBreakerSlot.java │ │ │ │ │ │ ├── DegradeException.java │ │ │ │ │ │ ├── DegradeRule.java │ │ │ │ │ │ ├── DegradeRuleManager.java │ │ │ │ │ │ ├── DegradeSlot.java │ │ │ │ │ │ └── circuitbreaker/ │ │ │ │ │ │ ├── AbstractCircuitBreaker.java │ │ │ │ │ │ ├── CircuitBreaker.java │ │ │ │ │ │ ├── CircuitBreakerStateChangeObserver.java │ │ │ │ │ │ ├── CircuitBreakerStrategy.java │ │ │ │ │ │ ├── EventObserverRegistry.java │ │ │ │ │ │ ├── ExceptionCircuitBreaker.java │ │ │ │ │ │ └── ResponseTimeCircuitBreaker.java │ │ │ │ │ └── flow/ │ │ │ │ │ ├── ClusterFlowConfig.java │ │ │ │ │ ├── ColdFactorProperty.java │ │ │ │ │ ├── FlowException.java │ │ │ │ │ ├── FlowRule.java │ │ │ │ │ ├── FlowRuleChecker.java │ │ │ │ │ ├── FlowRuleComparator.java │ │ │ │ │ ├── FlowRuleManager.java │ │ │ │ │ ├── FlowRuleUtil.java │ │ │ │ │ ├── FlowSlot.java │ │ │ │ │ ├── PriorityWaitException.java │ │ │ │ │ ├── TrafficShapingController.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── DefaultController.java │ │ │ │ │ │ ├── ThrottlingController.java │ │ │ │ │ │ ├── WarmUpController.java │ │ │ │ │ │ └── WarmUpRateLimiterController.java │ │ │ │ │ └── tokenbucket/ │ │ │ │ │ ├── AbstractTokenBucket.java │ │ │ │ │ ├── DefaultTokenBucket.java │ │ │ │ │ ├── StrictTokenBucket.java │ │ │ │ │ └── TokenBucket.java │ │ │ │ ├── clusterbuilder/ │ │ │ │ │ └── ClusterBuilderSlot.java │ │ │ │ ├── logger/ │ │ │ │ │ ├── EagleEyeLogUtil.java │ │ │ │ │ └── LogSlot.java │ │ │ │ ├── nodeselector/ │ │ │ │ │ └── NodeSelectorSlot.java │ │ │ │ ├── statistic/ │ │ │ │ │ ├── MetricEvent.java │ │ │ │ │ ├── StatisticSlot.java │ │ │ │ │ ├── StatisticSlotCallbackRegistry.java │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── LeapArray.java │ │ │ │ │ │ ├── UnaryLeapArray.java │ │ │ │ │ │ └── WindowWrap.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── MetricBucket.java │ │ │ │ │ └── metric/ │ │ │ │ │ ├── ArrayMetric.java │ │ │ │ │ ├── BucketLeapArray.java │ │ │ │ │ ├── DebugSupport.java │ │ │ │ │ ├── Metric.java │ │ │ │ │ └── occupy/ │ │ │ │ │ ├── FutureBucketLeapArray.java │ │ │ │ │ └── OccupiableBucketLeapArray.java │ │ │ │ └── system/ │ │ │ │ ├── SystemBlockException.java │ │ │ │ ├── SystemRule.java │ │ │ │ ├── SystemRuleManager.java │ │ │ │ ├── SystemSlot.java │ │ │ │ └── SystemStatusListener.java │ │ │ ├── spi/ │ │ │ │ ├── Spi.java │ │ │ │ ├── SpiLoader.java │ │ │ │ └── SpiLoaderException.java │ │ │ └── util/ │ │ │ ├── AppNameUtil.java │ │ │ ├── AssertUtil.java │ │ │ ├── ConfigUtil.java │ │ │ ├── HostNameUtil.java │ │ │ ├── IdUtil.java │ │ │ ├── MethodUtil.java │ │ │ ├── PidUtil.java │ │ │ ├── StringUtil.java │ │ │ ├── TimeUtil.java │ │ │ ├── VersionUtil.java │ │ │ └── function/ │ │ │ ├── BiConsumer.java │ │ │ ├── Consumer.java │ │ │ ├── Function.java │ │ │ ├── Predicate.java │ │ │ ├── Supplier.java │ │ │ └── Tuple2.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── com.alibaba.csp.sentinel.init.InitFunc │ │ ├── com.alibaba.csp.sentinel.slotchain.ProcessorSlot │ │ └── com.alibaba.csp.sentinel.slotchain.SlotChainBuilder │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ ├── AsyncEntryIntegrationTest.java │ │ ├── AsyncEntryTest.java │ │ ├── ConfigPropertyHelper.java │ │ ├── CtEntryTest.java │ │ ├── CtSphTest.java │ │ ├── EntryTest.java │ │ ├── RecordLogTest.java │ │ ├── SphOTest.java │ │ ├── SphUTest.java │ │ ├── TracerTest.java │ │ ├── config/ │ │ │ └── SentinelConfigTest.java │ │ ├── context/ │ │ │ ├── ContextTest.java │ │ │ └── ContextTestUtil.java │ │ ├── eagleeye/ │ │ │ ├── EagleEyeCoreUtilsTest.java │ │ │ └── TokenBucketTest.java │ │ ├── log/ │ │ │ ├── LogBaseTest.java │ │ │ └── jul/ │ │ │ └── ConsoleHandlerTest.java │ │ ├── metric/ │ │ │ └── extension/ │ │ │ └── callback/ │ │ │ ├── FakeAdvancedMetricExtension.java │ │ │ ├── FakeMetricExtension.java │ │ │ ├── MetricEntryCallbackTest.java │ │ │ └── MetricExitCallbackTest.java │ │ ├── node/ │ │ │ ├── ClusterNodeTest.java │ │ │ ├── StatisticNodeTest.java │ │ │ └── metric/ │ │ │ ├── MetricNodeTest.java │ │ │ └── MetricWriterTest.java │ │ ├── slots/ │ │ │ ├── DefaultSlotChainBuilderTest.java │ │ │ ├── block/ │ │ │ │ ├── RuleManagerTest.java │ │ │ │ ├── authority/ │ │ │ │ │ ├── AuthorityPartialIntegrationTest.java │ │ │ │ │ ├── AuthorityRuleCheckerTest.java │ │ │ │ │ ├── AuthorityRuleManagerTest.java │ │ │ │ │ └── AuthoritySlotTest.java │ │ │ │ ├── degrade/ │ │ │ │ │ ├── CircuitBreakingIntegrationTest.java │ │ │ │ │ ├── DefaultCircuitBreakerRuleManagerTest.java │ │ │ │ │ ├── DefaultCircuitBreakerSlotTest.java │ │ │ │ │ ├── DegradePartialIntegrationTest.java │ │ │ │ │ ├── DegradeRuleManagerTest.java │ │ │ │ │ ├── DegradeRuleTest.java │ │ │ │ │ └── circuitbreaker/ │ │ │ │ │ ├── ExceptionCircuitBreakerTest.java │ │ │ │ │ └── ResponseTimeCircuitBreakerTest.java │ │ │ │ ├── flow/ │ │ │ │ │ ├── FlowPartialIntegrationTest.java │ │ │ │ │ ├── FlowRuleCheckerTest.java │ │ │ │ │ ├── FlowRuleComparatorTest.java │ │ │ │ │ ├── FlowRuleManagerTest.java │ │ │ │ │ ├── FlowSlotTest.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── DefaultControllerTest.java │ │ │ │ │ │ ├── ThrottlingControllerTest.java │ │ │ │ │ │ ├── WarmUpControllerTest.java │ │ │ │ │ │ └── WarmUpRateLimiterControllerTest.java │ │ │ │ │ └── tokenbucket/ │ │ │ │ │ └── TokenBucketTest.java │ │ │ │ └── system/ │ │ │ │ ├── SystemGuardIntegrationTest.java │ │ │ │ └── SystemRuleTest.java │ │ │ ├── clusterbuilder/ │ │ │ │ └── ClusterNodeBuilderTest.java │ │ │ ├── logger/ │ │ │ │ └── EagleEyeLogUtilTest.java │ │ │ ├── nodeselector/ │ │ │ │ └── NodeSelectorTest.java │ │ │ ├── statistic/ │ │ │ │ ├── base/ │ │ │ │ │ └── LeapArrayTest.java │ │ │ │ └── metric/ │ │ │ │ ├── ArrayMetricTest.java │ │ │ │ ├── BucketLeapArrayTest.java │ │ │ │ ├── FutureBucketLeapArrayTest.java │ │ │ │ └── OccupiableBucketLeapArrayTest.java │ │ │ └── system/ │ │ │ └── SystemRuleManagerTest.java │ │ ├── spi/ │ │ │ ├── SpiLoaderTest.java │ │ │ ├── TestFiveProvider.java │ │ │ ├── TestFourProvider.java │ │ │ ├── TestInterface.java │ │ │ ├── TestNoProviderInterface.java │ │ │ ├── TestNoSpiFileInterface.java │ │ │ ├── TestOneProvider.java │ │ │ ├── TestThreeProvider.java │ │ │ └── TestTwoProvider.java │ │ ├── test/ │ │ │ └── AbstractTimeBasedTest.java │ │ └── util/ │ │ ├── ConfigUtilTest.java │ │ ├── IdUtilTest.java │ │ ├── MethodUtilTest.java │ │ ├── StringUtilTest.java │ │ ├── TimeUtilTest.java │ │ ├── VersionUtilTest.java │ │ └── function/ │ │ └── Tuple2Test.java │ └── resources/ │ └── META-INF/ │ └── services/ │ ├── com.alibaba.csp.sentinel.spi.TestInterface │ └── com.alibaba.csp.sentinel.spi.TestNoProviderInterface ├── sentinel-dashboard/ │ ├── Dockerfile │ ├── README.md │ ├── Sentinel_Dashboard_Feature.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── dashboard/ │ │ │ ├── DashboardApplication.java │ │ │ ├── auth/ │ │ │ │ ├── AuthAction.java │ │ │ │ ├── AuthService.java │ │ │ │ ├── AuthorizationInterceptor.java │ │ │ │ ├── DefaultAuthorizationInterceptor.java │ │ │ │ ├── DefaultLoginAuthenticationFilter.java │ │ │ │ ├── FakeAuthServiceImpl.java │ │ │ │ ├── LoginAuthenticationFilter.java │ │ │ │ └── SimpleWebAuthServiceImpl.java │ │ │ ├── client/ │ │ │ │ ├── CommandFailedException.java │ │ │ │ ├── CommandNotFoundException.java │ │ │ │ └── SentinelApiClient.java │ │ │ ├── config/ │ │ │ │ ├── AuthConfiguration.java │ │ │ │ ├── AuthProperties.java │ │ │ │ ├── DashboardConfig.java │ │ │ │ └── WebConfig.java │ │ │ ├── controller/ │ │ │ │ ├── AppController.java │ │ │ │ ├── AuthController.java │ │ │ │ ├── AuthorityRuleController.java │ │ │ │ ├── DegradeController.java │ │ │ │ ├── DemoController.java │ │ │ │ ├── FlowControllerV1.java │ │ │ │ ├── MachineRegistryController.java │ │ │ │ ├── MetricController.java │ │ │ │ ├── ParamFlowRuleController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── SystemController.java │ │ │ │ ├── VersionController.java │ │ │ │ ├── cluster/ │ │ │ │ │ ├── ClusterAssignController.java │ │ │ │ │ └── ClusterConfigController.java │ │ │ │ ├── gateway/ │ │ │ │ │ ├── GatewayApiController.java │ │ │ │ │ └── GatewayFlowRuleController.java │ │ │ │ └── v2/ │ │ │ │ └── FlowControllerV2.java │ │ │ ├── datasource/ │ │ │ │ └── entity/ │ │ │ │ ├── ApplicationEntity.java │ │ │ │ ├── MachineEntity.java │ │ │ │ ├── MetricEntity.java │ │ │ │ ├── MetricPositionEntity.java │ │ │ │ ├── SentinelVersion.java │ │ │ │ ├── gateway/ │ │ │ │ │ ├── ApiDefinitionEntity.java │ │ │ │ │ ├── ApiPredicateItemEntity.java │ │ │ │ │ ├── GatewayFlowRuleEntity.java │ │ │ │ │ └── GatewayParamFlowItemEntity.java │ │ │ │ └── rule/ │ │ │ │ ├── AbstractRuleEntity.java │ │ │ │ ├── AuthorityRuleEntity.java │ │ │ │ ├── DegradeRuleEntity.java │ │ │ │ ├── FlowRuleEntity.java │ │ │ │ ├── ParamFlowRuleEntity.java │ │ │ │ ├── RuleEntity.java │ │ │ │ └── SystemRuleEntity.java │ │ │ ├── discovery/ │ │ │ │ ├── AppInfo.java │ │ │ │ ├── AppManagement.java │ │ │ │ ├── MachineDiscovery.java │ │ │ │ ├── MachineInfo.java │ │ │ │ └── SimpleMachineDiscovery.java │ │ │ ├── domain/ │ │ │ │ ├── ResourceTreeNode.java │ │ │ │ ├── Result.java │ │ │ │ ├── cluster/ │ │ │ │ │ ├── ClusterAppAssignResultVO.java │ │ │ │ │ ├── ClusterAppFullAssignRequest.java │ │ │ │ │ ├── ClusterAppSingleServerAssignRequest.java │ │ │ │ │ ├── ClusterClientInfoVO.java │ │ │ │ │ ├── ClusterGroupEntity.java │ │ │ │ │ ├── ClusterStateSingleVO.java │ │ │ │ │ ├── ConnectionDescriptorVO.java │ │ │ │ │ ├── ConnectionGroupVO.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ClusterClientConfig.java │ │ │ │ │ │ ├── ServerFlowConfig.java │ │ │ │ │ │ └── ServerTransportConfig.java │ │ │ │ │ ├── request/ │ │ │ │ │ │ ├── ClusterAppAssignMap.java │ │ │ │ │ │ ├── ClusterClientModifyRequest.java │ │ │ │ │ │ ├── ClusterModifyRequest.java │ │ │ │ │ │ └── ClusterServerModifyRequest.java │ │ │ │ │ └── state/ │ │ │ │ │ ├── AppClusterClientStateWrapVO.java │ │ │ │ │ ├── AppClusterServerStateWrapVO.java │ │ │ │ │ ├── ClusterClientStateVO.java │ │ │ │ │ ├── ClusterRequestLimitVO.java │ │ │ │ │ ├── ClusterServerStateVO.java │ │ │ │ │ ├── ClusterStateSimpleEntity.java │ │ │ │ │ ├── ClusterUniversalStatePairVO.java │ │ │ │ │ └── ClusterUniversalStateVO.java │ │ │ │ └── vo/ │ │ │ │ ├── MachineInfoVo.java │ │ │ │ ├── MetricVo.java │ │ │ │ ├── ResourceVo.java │ │ │ │ └── gateway/ │ │ │ │ ├── api/ │ │ │ │ │ ├── AddApiReqVo.java │ │ │ │ │ ├── ApiPredicateItemVo.java │ │ │ │ │ └── UpdateApiReqVo.java │ │ │ │ └── rule/ │ │ │ │ ├── AddFlowRuleReqVo.java │ │ │ │ ├── GatewayParamFlowItemVo.java │ │ │ │ └── UpdateFlowRuleReqVo.java │ │ │ ├── metric/ │ │ │ │ └── MetricFetcher.java │ │ │ ├── repository/ │ │ │ │ ├── gateway/ │ │ │ │ │ ├── InMemApiDefinitionStore.java │ │ │ │ │ └── InMemGatewayFlowRuleStore.java │ │ │ │ ├── metric/ │ │ │ │ │ ├── InMemoryMetricsRepository.java │ │ │ │ │ └── MetricsRepository.java │ │ │ │ └── rule/ │ │ │ │ ├── InMemAuthorityRuleStore.java │ │ │ │ ├── InMemDegradeRuleStore.java │ │ │ │ ├── InMemFlowRuleStore.java │ │ │ │ ├── InMemParamFlowRuleStore.java │ │ │ │ ├── InMemSystemRuleStore.java │ │ │ │ ├── InMemoryRuleRepositoryAdapter.java │ │ │ │ └── RuleRepository.java │ │ │ ├── rule/ │ │ │ │ ├── DynamicRuleProvider.java │ │ │ │ ├── DynamicRulePublisher.java │ │ │ │ ├── FlowRuleApiProvider.java │ │ │ │ └── FlowRuleApiPublisher.java │ │ │ ├── service/ │ │ │ │ ├── ClusterAssignService.java │ │ │ │ ├── ClusterAssignServiceImpl.java │ │ │ │ └── ClusterConfigService.java │ │ │ └── util/ │ │ │ ├── AsyncUtils.java │ │ │ ├── ClusterEntityUtils.java │ │ │ ├── MachineUtils.java │ │ │ └── VersionUtils.java │ │ ├── resources/ │ │ │ └── application.properties │ │ └── webapp/ │ │ └── resources/ │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── app/ │ │ │ ├── scripts/ │ │ │ │ ├── app.js │ │ │ │ ├── controllers/ │ │ │ │ │ ├── authority.js │ │ │ │ │ ├── cluster_app_assign_manage.js │ │ │ │ │ ├── cluster_app_server_list.js │ │ │ │ │ ├── cluster_app_server_manage.js │ │ │ │ │ ├── cluster_app_server_monitor.js │ │ │ │ │ ├── cluster_app_token_client_list.js │ │ │ │ │ ├── cluster_single.js │ │ │ │ │ ├── degrade.js │ │ │ │ │ ├── flow_v1.js │ │ │ │ │ ├── flow_v2.js │ │ │ │ │ ├── gateway/ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ ├── flow.js │ │ │ │ │ │ └── identity.js │ │ │ │ │ ├── home.js │ │ │ │ │ ├── identity.js │ │ │ │ │ ├── login.js │ │ │ │ │ ├── machine.js │ │ │ │ │ ├── main.js │ │ │ │ │ ├── metric.js │ │ │ │ │ ├── param_flow.js │ │ │ │ │ └── system.js │ │ │ │ ├── directives/ │ │ │ │ │ ├── header/ │ │ │ │ │ │ ├── header.html │ │ │ │ │ │ └── header.js │ │ │ │ │ └── sidebar/ │ │ │ │ │ ├── sidebar-search/ │ │ │ │ │ │ ├── sidebar-search.html │ │ │ │ │ │ └── sidebar-search.js │ │ │ │ │ ├── sidebar.html │ │ │ │ │ └── sidebar.js │ │ │ │ ├── filters/ │ │ │ │ │ └── filters.js │ │ │ │ ├── libs/ │ │ │ │ │ └── treeTable.js │ │ │ │ └── services/ │ │ │ │ ├── appservice.js │ │ │ │ ├── auth_service.js │ │ │ │ ├── authority_service.js │ │ │ │ ├── cluster_state_service.js │ │ │ │ ├── degrade_service.js │ │ │ │ ├── flow_service_v1.js │ │ │ │ ├── flow_service_v2.js │ │ │ │ ├── gateway/ │ │ │ │ │ ├── api_service.js │ │ │ │ │ └── flow_service.js │ │ │ │ ├── identityservice.js │ │ │ │ ├── machineservice.js │ │ │ │ ├── metricservice.js │ │ │ │ ├── param_flow_service.js │ │ │ │ ├── systemservice.js │ │ │ │ └── version_service.js │ │ │ ├── styles/ │ │ │ │ ├── main.css │ │ │ │ ├── page.css │ │ │ │ └── timeline.css │ │ │ └── views/ │ │ │ ├── authority.html │ │ │ ├── cluster/ │ │ │ │ ├── client.html │ │ │ │ └── server.html │ │ │ ├── cluster_app_assign_manage.html │ │ │ ├── cluster_app_client_list.html │ │ │ ├── cluster_app_server_list.html │ │ │ ├── cluster_app_server_overview.html │ │ │ ├── cluster_single_config.html │ │ │ ├── dashboard/ │ │ │ │ ├── home.html │ │ │ │ └── main.html │ │ │ ├── degrade.html │ │ │ ├── dialog/ │ │ │ │ ├── authority-rule-dialog.html │ │ │ │ ├── cluster/ │ │ │ │ │ ├── cluster-client-config-dialog.html │ │ │ │ │ ├── cluster-server-assign-dialog.html │ │ │ │ │ └── cluster-server-connection-detail-dialog.html │ │ │ │ ├── confirm-dialog.html │ │ │ │ ├── degrade-rule-dialog.html │ │ │ │ ├── flow-rule-dialog.html │ │ │ │ ├── gateway/ │ │ │ │ │ ├── api-dialog.html │ │ │ │ │ └── flow-rule-dialog.html │ │ │ │ ├── param-flow-rule-dialog.html │ │ │ │ └── system-rule-dialog.html │ │ │ ├── flow_v1.html │ │ │ ├── flow_v2.html │ │ │ ├── gateway/ │ │ │ │ ├── api.html │ │ │ │ ├── flow.html │ │ │ │ └── identity.html │ │ │ ├── identity.html │ │ │ ├── login.html │ │ │ ├── machine.html │ │ │ ├── metric.html │ │ │ ├── pagination.tpl.html │ │ │ ├── param_flow.html │ │ │ └── system.html │ │ ├── dist/ │ │ │ ├── css/ │ │ │ │ └── app.css │ │ │ └── js/ │ │ │ ├── app.js │ │ │ └── app.vendor.js │ │ ├── gulpfile.js │ │ ├── index.htm │ │ ├── index_dev.htm │ │ ├── license-stat.csv │ │ └── package.json │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── dashboard/ │ ├── client/ │ │ └── SentinelApiClientTest.java │ ├── config/ │ │ ├── DashboardConfigTest.java │ │ └── NoAuthConfigurationTest.java │ ├── controller/ │ │ └── gateway/ │ │ ├── GatewayApiControllerTest.java │ │ └── GatewayFlowRuleControllerTest.java │ ├── datasource/ │ │ └── entity/ │ │ ├── JsonSerializeTest.java │ │ └── SentinelVersionTest.java │ ├── discovery/ │ │ ├── AppInfoTest.java │ │ └── MachineInfoTest.java │ ├── repository/ │ │ └── metric/ │ │ └── InMemoryMetricsRepositoryTest.java │ ├── rule/ │ │ ├── apollo/ │ │ │ ├── ApolloConfig.java │ │ │ ├── ApolloConfigUtil.java │ │ │ ├── FlowRuleApolloProvider.java │ │ │ └── FlowRuleApolloPublisher.java │ │ ├── nacos/ │ │ │ ├── FlowRuleNacosProvider.java │ │ │ ├── FlowRuleNacosPublisher.java │ │ │ ├── NacosConfig.java │ │ │ └── NacosConfigUtil.java │ │ └── zookeeper/ │ │ ├── FlowRuleZookeeperProvider.java │ │ ├── FlowRuleZookeeperPublisher.java │ │ ├── ZookeeperConfig.java │ │ └── ZookeeperConfigUtil.java │ └── util/ │ └── VersionUtilsTest.java ├── sentinel-demo/ │ ├── README.md │ ├── pom.xml │ ├── sentinel-demo-annotation-cdi-interceptor/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── annotation/ │ │ │ └── cdi/ │ │ │ └── interceptor/ │ │ │ ├── DemoApplication.java │ │ │ ├── ExceptionUtil.java │ │ │ ├── TestService.java │ │ │ └── TestServiceImpl.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── beans.xml │ ├── sentinel-demo-annotation-spring-aop/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── annotation/ │ │ │ └── aop/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ └── AopConfiguration.java │ │ │ ├── controller/ │ │ │ │ └── DemoController.java │ │ │ └── service/ │ │ │ ├── ExceptionUtil.java │ │ │ ├── TestService.java │ │ │ └── TestServiceImpl.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-apache-dubbo/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── apache/ │ │ └── dubbo/ │ │ ├── FooConsumerBootstrap.java │ │ ├── FooConsumerExceptionDegradeBootstrap.java │ │ ├── FooProviderBootstrap.java │ │ ├── FooService.java │ │ ├── consumer/ │ │ │ ├── ConsumerConfiguration.java │ │ │ └── FooServiceConsumer.java │ │ └── provider/ │ │ ├── FooServiceImpl.java │ │ └── ProviderConfiguration.java │ ├── sentinel-demo-apache-httpclient/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── apache/ │ │ │ └── httpclient/ │ │ │ ├── ApacheHttpClientDemoApplication.java │ │ │ └── controller/ │ │ │ └── ApacheHttpClientTestController.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-apollo-datasource/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── datasource/ │ │ │ └── apollo/ │ │ │ ├── ApolloDataSourceDemo.java │ │ │ └── FlowQpsRunner.java │ │ └── resources/ │ │ └── log4j2.xml │ ├── sentinel-demo-basic/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ ├── AsyncEntryDemo.java │ │ ├── authority/ │ │ │ └── AuthorityDemo.java │ │ ├── degrade/ │ │ │ ├── ExceptionRatioCircuitBreakerDemo.java │ │ │ └── SlowRatioCircuitBreakerDemo.java │ │ ├── flow/ │ │ │ ├── FlowQpsDemo.java │ │ │ ├── FlowQpsRegexDemo.java │ │ │ ├── FlowThreadDemo.java │ │ │ ├── PaceFlowDemo.java │ │ │ ├── WarmUpFlowDemo.java │ │ │ └── WarmUpRateLimiterFlowDemo.java │ │ └── system/ │ │ └── SystemGuardDemo.java │ ├── sentinel-demo-cluster/ │ │ ├── pom.xml │ │ ├── sentinel-demo-cluster-embedded/ │ │ │ ├── README.md │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── demo/ │ │ │ │ └── cluster/ │ │ │ │ ├── DemoConstants.java │ │ │ │ ├── app/ │ │ │ │ │ ├── ClusterDemoApplication.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── AopConfig.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── ClusterDemoController.java │ │ │ │ │ └── service/ │ │ │ │ │ └── DemoService.java │ │ │ │ ├── entity/ │ │ │ │ │ └── ClusterGroupEntity.java │ │ │ │ └── init/ │ │ │ │ └── DemoClusterInitFunc.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ │ └── sentinel-demo-cluster-server-alone/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── cluster/ │ │ │ ├── ClusterServerDemo.java │ │ │ ├── DemoConstants.java │ │ │ └── init/ │ │ │ └── DemoClusterServerInitFunc.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ ├── sentinel-demo-command-handler/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── commandhandler/ │ │ │ ├── CommandDemo.java │ │ │ ├── EchoCommandHandler.java │ │ │ └── interceptor/ │ │ │ ├── AllCommandHandlerInterceptor.java │ │ │ └── EchoCommandHandlerInterceptor.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ └── com.alibaba.csp.sentinel.command.CommandHandlerInterceptor │ ├── sentinel-demo-dubbo/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── dubbo/ │ │ ├── FooService.java │ │ ├── consumer/ │ │ │ ├── ConsumerConfiguration.java │ │ │ └── FooServiceConsumer.java │ │ ├── demo1/ │ │ │ ├── FooConsumerBootstrap.java │ │ │ ├── FooProviderBootstrap.java │ │ │ ├── FooServiceImpl.java │ │ │ └── ProviderConfiguration.java │ │ └── demo2/ │ │ ├── FooConsumerBootstrap.java │ │ ├── FooProviderBootstrap.java │ │ ├── FooServiceImpl.java │ │ └── ProviderConfiguration.java │ ├── sentinel-demo-dynamic-file-rule/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── file/ │ │ │ └── rule/ │ │ │ ├── FileDataSourceDemo.java │ │ │ ├── FileDataSourceInit.java │ │ │ ├── FlowQpsRunner.java │ │ │ └── JarFileDataSourceDemo.java │ │ └── resources/ │ │ ├── DegradeRule.json │ │ ├── FlowRule.json │ │ └── SystemRule.json │ ├── sentinel-demo-etcd-datasource/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── datasource/ │ │ └── etcd/ │ │ ├── EtcdConfigSender.java │ │ └── EtcdDataSourceDemo.java │ ├── sentinel-demo-jax-rs/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── jaxrs/ │ │ │ ├── CustomExceptionMapper.java │ │ │ ├── HelloEntity.java │ │ │ ├── HelloResource.java │ │ │ ├── JaxRsClientDemo.java │ │ │ ├── JaxRsDemoApplication.java │ │ │ └── SentinelJaxRsConfig.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-log-logback/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── demo/ │ │ │ │ └── log/ │ │ │ │ └── logback/ │ │ │ │ ├── CommandCenterLogLoggerImpl.java │ │ │ │ └── RecordLogLoggerImpl.java │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ └── services/ │ │ │ │ └── com.alibaba.csp.sentinel.log.Logger │ │ │ └── logback.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── log/ │ │ └── logback/ │ │ ├── CommandCenterLogTest.java │ │ └── RecordLogTest.java │ ├── sentinel-demo-motan/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── motan/ │ │ │ ├── SentinelMotanConsumerService.java │ │ │ ├── SentinelMotanProviderService.java │ │ │ └── service/ │ │ │ ├── MotanDemoService.java │ │ │ └── impl/ │ │ │ └── MotanDemoServiceImpl.java │ │ └── resources/ │ │ └── sentinel.properties │ ├── sentinel-demo-nacos-datasource/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── datasource/ │ │ └── nacos/ │ │ ├── FlowQpsRunner.java │ │ ├── NacosConfigSender.java │ │ └── NacosDataSourceDemo.java │ ├── sentinel-demo-okhttp/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── okhttp/ │ │ │ ├── OkHttpDemoApplication.java │ │ │ └── controller/ │ │ │ └── OkHttpTestController.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-parameter-flow-control/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── flow/ │ │ └── param/ │ │ ├── ParamFlowQpsDemo.java │ │ └── ParamFlowQpsRunner.java │ ├── sentinel-demo-quarkus/ │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── build-native.sh │ │ ├── build.sh │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── docker/ │ │ │ │ ├── Dockerfile.jvm │ │ │ │ └── Dockerfile.native │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── demo/ │ │ │ │ └── quarkus/ │ │ │ │ ├── AppLifecycleBean.java │ │ │ │ ├── CustomExceptionMapper.java │ │ │ │ ├── GreetingFallback.java │ │ │ │ ├── GreetingResource.java │ │ │ │ └── GreetingService.java │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ └── resources/ │ │ │ │ └── index.html │ │ │ └── application.properties │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── quarkus/ │ │ ├── GreetingResourceTest.java │ │ └── NativeGreetingResourceIT.java │ ├── sentinel-demo-rocketmq/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── rocketmq/ │ │ ├── Constants.java │ │ ├── PullConsumerDemo.java │ │ └── SyncProducer.java │ ├── sentinel-demo-servlet/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── servlet/ │ │ │ ├── config/ │ │ │ │ └── SentinelConfig.java │ │ │ └── controller/ │ │ │ └── DefaultServlet.java │ │ ├── resources/ │ │ │ └── sentinel.properties │ │ └── webapp/ │ │ └── WEB-INF/ │ │ └── web.xml │ ├── sentinel-demo-slot-spi/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── slot/ │ │ │ ├── DemoApplication.java │ │ │ └── DemoSlot.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.slotchain.ProcessorSlot │ ├── sentinel-demo-slotchain-spi/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── slotchain/ │ │ │ ├── DemoDegradeRuleApplication.java │ │ │ ├── DemoFlowRuleApplication.java │ │ │ └── DemoSlotChainBuilder.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.slotchain.SlotChainBuilder │ ├── sentinel-demo-sofa-rpc/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── sofa/ │ │ │ └── rpc/ │ │ │ ├── DemoConsumer.java │ │ │ ├── DemoProvider.java │ │ │ └── service/ │ │ │ ├── DemoService.java │ │ │ └── impl/ │ │ │ └── DemoServiceImpl.java │ │ └── resources/ │ │ ├── log4j.xml │ │ └── sofa-rpc/ │ │ └── rpc-config.json │ ├── sentinel-demo-spring-cloud-gateway/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── spring/ │ │ │ └── sc/ │ │ │ └── gateway/ │ │ │ ├── GatewayConfiguration.java │ │ │ └── GatewayDemoApplication.java │ │ └── resources/ │ │ └── application.yml │ ├── sentinel-demo-spring-webflux/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── spring/ │ │ │ └── webflux/ │ │ │ ├── WebFluxDemoApplication.java │ │ │ ├── config/ │ │ │ │ ├── RedisConfig.java │ │ │ │ └── WebFluxConfig.java │ │ │ ├── controller/ │ │ │ │ ├── BazController.java │ │ │ │ └── FooController.java │ │ │ └── service/ │ │ │ ├── BazService.java │ │ │ └── FooService.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-spring-webmvc/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── spring/ │ │ │ └── webmvc/ │ │ │ ├── WebMvcDemoApplication.java │ │ │ ├── config/ │ │ │ │ ├── InterceptorConfig.java │ │ │ │ └── SentinelSpringMvcBlockHandlerConfig.java │ │ │ ├── controller/ │ │ │ │ └── WebMvcTestController.java │ │ │ └── vo/ │ │ │ └── ResultWrapper.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-transport-spring-mvc/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── transport/ │ │ │ └── springmvc/ │ │ │ └── TransportSpringMvcDemoApplication.java │ │ └── resources/ │ │ └── application.properties │ ├── sentinel-demo-zookeeper-datasource/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── datasource/ │ │ └── zookeeper/ │ │ ├── ZookeeperConfigSender.java │ │ └── ZookeeperDataSourceDemo.java │ ├── sentinel-demo-zuul-gateway/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── demo/ │ │ │ └── zuul/ │ │ │ └── gateway/ │ │ │ ├── GatewayRuleConfig.java │ │ │ ├── ZuulConfig.java │ │ │ └── ZuulGatewayDemoApplication.java │ │ └── resources/ │ │ └── application.yml │ └── sentinel-demo-zuul2-gateway/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── demo/ │ │ └── zuul2/ │ │ └── gateway/ │ │ ├── FiltersRegisteringService.java │ │ ├── GatewayRuleConfig.java │ │ ├── SampleServerStartup.java │ │ ├── ZuulBootstrap.java │ │ ├── ZuulClasspathFiltersModule.java │ │ ├── ZuulSampleModule.java │ │ └── filters/ │ │ ├── NotFoundEndpoint.java │ │ └── Route.java │ └── resources/ │ ├── application.properties │ └── log4j.properties ├── sentinel-extension/ │ ├── README.md │ ├── pom.xml │ ├── sentinel-annotation-aspectj/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── annotation/ │ │ │ └── aspectj/ │ │ │ ├── AbstractSentinelAspectSupport.java │ │ │ ├── MethodWrapper.java │ │ │ ├── ResourceMetadataRegistry.java │ │ │ └── SentinelResourceAspect.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── annotation/ │ │ └── aspectj/ │ │ ├── AbstractSentinelAspectSupportTest.java │ │ ├── MethodWrapperTest.java │ │ ├── ResourceMetadataRegistryTest.java │ │ └── integration/ │ │ ├── SentinelAnnotationIntegrationTest.java │ │ ├── config/ │ │ │ └── AopTestConfig.java │ │ └── service/ │ │ ├── BarService.java │ │ ├── FooService.java │ │ ├── FooUtil.java │ │ └── GlobalFallback.java │ ├── sentinel-annotation-cdi-interceptor/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── annotation/ │ │ │ │ └── cdi/ │ │ │ │ └── interceptor/ │ │ │ │ ├── AbstractSentinelInterceptorSupport.java │ │ │ │ ├── MethodWrapper.java │ │ │ │ ├── ResourceMetadataRegistry.java │ │ │ │ ├── SentinelResourceBinding.java │ │ │ │ └── SentinelResourceInterceptor.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── beans.xml │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── annotation/ │ │ │ └── cdi/ │ │ │ └── interceptor/ │ │ │ ├── AbstractSentinelInterceptorSupportTest.java │ │ │ ├── MethodWrapperTest.java │ │ │ ├── ResourceMetadataRegistryTest.java │ │ │ └── integration/ │ │ │ ├── SentinelAnnotationInterceptorIntegrationTest.java │ │ │ └── service/ │ │ │ ├── FooService.java │ │ │ └── FooUtil.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── beans.xml │ ├── sentinel-datasource-apollo/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── apollo/ │ │ └── ApolloDataSource.java │ ├── sentinel-datasource-consul/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── consul/ │ │ │ └── ConsulDataSource.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── consul/ │ │ └── ConsulDataSourceTest.java │ ├── sentinel-datasource-etcd/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── etcd/ │ │ │ ├── EtcdConfig.java │ │ │ └── EtcdDataSource.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── etcd/ │ │ └── EtcdDataSourceTest.java │ ├── sentinel-datasource-eureka/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── eureka/ │ │ │ └── EurekaDataSource.java │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── eureka/ │ │ │ ├── EurekaDataSourceTest.java │ │ │ └── SimpleSpringApplication.java │ │ └── resources/ │ │ └── application.yml │ ├── sentinel-datasource-extension/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ ├── AbstractDataSource.java │ │ ├── AutoRefreshDataSource.java │ │ ├── Converter.java │ │ ├── EmptyDataSource.java │ │ ├── FileInJarReadableDataSource.java │ │ ├── FileRefreshableDataSource.java │ │ ├── FileWritableDataSource.java │ │ ├── ReadableDataSource.java │ │ └── WritableDataSource.java │ ├── sentinel-datasource-nacos/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── nacos/ │ │ └── NacosDataSource.java │ ├── sentinel-datasource-redis/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── redis/ │ │ │ ├── RedisDataSource.java │ │ │ └── config/ │ │ │ ├── RedisConnectionConfig.java │ │ │ └── RedisHostAndPort.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── redis/ │ │ ├── ClusterModeRedisDataSourceTest.java │ │ ├── RedisConnectionConfigTest.java │ │ ├── SentinelModeRedisDataSourceTest.java │ │ └── StandaloneRedisDataSourceTest.java │ ├── sentinel-datasource-spring-cloud-config/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── datasource/ │ │ │ │ └── spring/ │ │ │ │ └── cloud/ │ │ │ │ └── config/ │ │ │ │ ├── SentinelRuleLocator.java │ │ │ │ ├── SentinelRuleStorage.java │ │ │ │ ├── SpringCloudConfigDataSource.java │ │ │ │ └── config/ │ │ │ │ └── DataSourceBootstrapConfiguration.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── spring.factories │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── spring/ │ │ │ └── cloud/ │ │ │ └── config/ │ │ │ ├── SimpleSpringApplication.java │ │ │ ├── client/ │ │ │ │ └── ConfigClient.java │ │ │ ├── server/ │ │ │ │ └── ConfigServer.java │ │ │ └── test/ │ │ │ ├── SentinelRuleLocatorTests.java │ │ │ └── SpringCouldDataSourceTest.java │ │ └── resources/ │ │ ├── bootstrap.yml │ │ ├── config-client-application.properties │ │ └── config-server-application.properties │ ├── sentinel-datasource-zookeeper/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── datasource/ │ │ │ └── zookeeper/ │ │ │ └── ZookeeperDataSource.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── datasource/ │ │ └── zookeeper/ │ │ └── ZookeeperDataSourceTest.java │ ├── sentinel-metric-exporter/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── metric/ │ │ │ │ ├── MetricExporterInit.java │ │ │ │ ├── collector/ │ │ │ │ │ └── MetricCollector.java │ │ │ │ └── exporter/ │ │ │ │ ├── MetricExporter.java │ │ │ │ └── jmx/ │ │ │ │ ├── JMXMetricExporter.java │ │ │ │ ├── MBeanRegistry.java │ │ │ │ ├── MetricBean.java │ │ │ │ ├── MetricBeanWriter.java │ │ │ │ └── MetricMXBean.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── cps/ │ │ └── sentinel/ │ │ └── metric/ │ │ └── exporter/ │ │ ├── MBeanRegistryTest.java │ │ └── MetricBeanWriterTest.java │ ├── sentinel-parameter-flow-control/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ ├── command/ │ │ │ │ │ └── handler/ │ │ │ │ │ ├── GetParamFlowRulesCommandHandler.java │ │ │ │ │ └── ModifyParamFlowRulesCommandHandler.java │ │ │ │ ├── init/ │ │ │ │ │ └── ParamFlowStatisticSlotCallbackInit.java │ │ │ │ └── slots/ │ │ │ │ ├── HotParamSlotChainBuilder.java │ │ │ │ ├── block/ │ │ │ │ │ └── flow/ │ │ │ │ │ └── param/ │ │ │ │ │ ├── ParamFlowArgument.java │ │ │ │ │ ├── ParamFlowChecker.java │ │ │ │ │ ├── ParamFlowClusterConfig.java │ │ │ │ │ ├── ParamFlowException.java │ │ │ │ │ ├── ParamFlowItem.java │ │ │ │ │ ├── ParamFlowRule.java │ │ │ │ │ ├── ParamFlowRuleManager.java │ │ │ │ │ ├── ParamFlowRuleUtil.java │ │ │ │ │ ├── ParamFlowSlot.java │ │ │ │ │ ├── ParameterMetric.java │ │ │ │ │ ├── ParameterMetricStorage.java │ │ │ │ │ ├── RollingParamEvent.java │ │ │ │ │ └── TokenUpdateStatus.java │ │ │ │ └── statistic/ │ │ │ │ ├── ParamFlowStatisticEntryCallback.java │ │ │ │ ├── ParamFlowStatisticExitCallback.java │ │ │ │ ├── cache/ │ │ │ │ │ ├── CacheMap.java │ │ │ │ │ └── ConcurrentLinkedHashMapWrapper.java │ │ │ │ └── data/ │ │ │ │ └── ParamMapBucket.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ │ ├── com.alibaba.csp.sentinel.init.InitFunc │ │ │ └── com.alibaba.csp.sentinel.slotchain.ProcessorSlot │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ ├── block/ │ │ │ └── flow/ │ │ │ └── param/ │ │ │ └── AbstractTimeBasedTest.java │ │ └── slots/ │ │ ├── block/ │ │ │ └── flow/ │ │ │ └── param/ │ │ │ ├── ParamFlowCheckerTest.java │ │ │ ├── ParamFlowDefaultCheckerTest.java │ │ │ ├── ParamFlowPartialIntegrationTest.java │ │ │ ├── ParamFlowRuleManagerTest.java │ │ │ ├── ParamFlowRuleUtilTest.java │ │ │ ├── ParamFlowSlotTest.java │ │ │ ├── ParamFlowThrottleRateLimitingCheckerTest.java │ │ │ ├── ParameterMetricStorageTest.java │ │ │ └── ParameterMetricTest.java │ │ └── statistic/ │ │ └── data/ │ │ └── ParamMapBucketTest.java │ └── sentinel-prometheus-metric-exporter/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── metric/ │ │ │ └── prom/ │ │ │ ├── MetricConstants.java │ │ │ ├── PromExporterInit.java │ │ │ ├── collector/ │ │ │ │ └── SentinelCollector.java │ │ │ ├── config/ │ │ │ │ └── PrometheusGlobalConfig.java │ │ │ └── types/ │ │ │ └── GaugeMetricFamily.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── metric/ │ └── prom/ │ ├── collector/ │ │ └── SentinelCollectorTest.java │ └── types/ │ └── GaugeMetricFamilyTest.java ├── sentinel-logging/ │ ├── pom.xml │ └── sentinel-logging-slf4j/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── logging/ │ │ │ └── slf4j/ │ │ │ ├── CommandCenterLogLogger.java │ │ │ └── RecordLogLogger.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.log.Logger │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── csp/ │ └── sentinel/ │ └── logging/ │ └── slf4j/ │ ├── AbstraceSlf4jLogTest.java │ ├── CommandCenterLogTest.java │ └── RecordLogTest.java ├── sentinel-transport/ │ ├── README.md │ ├── pom.xml │ ├── sentinel-transport-common/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ ├── command/ │ │ │ │ │ ├── CommandCenterProvider.java │ │ │ │ │ ├── CommandConstants.java │ │ │ │ │ ├── CommandHandler.java │ │ │ │ │ ├── CommandHandlerInterceptor.java │ │ │ │ │ ├── CommandHandlerProvider.java │ │ │ │ │ ├── CommandRequest.java │ │ │ │ │ ├── CommandRequestExecution.java │ │ │ │ │ ├── CommandResponse.java │ │ │ │ │ ├── annotation/ │ │ │ │ │ │ └── CommandMapping.java │ │ │ │ │ ├── handler/ │ │ │ │ │ │ ├── ApiCommandHandler.java │ │ │ │ │ │ ├── BasicInfoCommandHandler.java │ │ │ │ │ │ ├── FetchActiveRuleCommandHandler.java │ │ │ │ │ │ ├── FetchClusterNodeByIdCommandHandler.java │ │ │ │ │ │ ├── FetchClusterNodeHumanCommandHandler.java │ │ │ │ │ │ ├── FetchJsonTreeCommandHandler.java │ │ │ │ │ │ ├── FetchOriginCommandHandler.java │ │ │ │ │ │ ├── FetchSimpleClusterNodeCommandHandler.java │ │ │ │ │ │ ├── FetchSystemStatusCommandHandler.java │ │ │ │ │ │ ├── FetchTreeCommandHandler.java │ │ │ │ │ │ ├── InterceptingCommandHandler.java │ │ │ │ │ │ ├── ModifyRulesCommandHandler.java │ │ │ │ │ │ ├── OnOffGetCommandHandler.java │ │ │ │ │ │ ├── OnOffSetCommandHandler.java │ │ │ │ │ │ ├── SendMetricCommandHandler.java │ │ │ │ │ │ ├── VersionCommandHandler.java │ │ │ │ │ │ └── cluster/ │ │ │ │ │ │ ├── FetchClusterModeCommandHandler.java │ │ │ │ │ │ └── ModifyClusterModeCommandHandler.java │ │ │ │ │ └── vo/ │ │ │ │ │ └── NodeVo.java │ │ │ │ ├── heartbeat/ │ │ │ │ │ └── HeartbeatSenderProvider.java │ │ │ │ └── transport/ │ │ │ │ ├── CommandCenter.java │ │ │ │ ├── HeartbeatSender.java │ │ │ │ ├── client/ │ │ │ │ │ └── CommandClient.java │ │ │ │ ├── config/ │ │ │ │ │ └── TransportConfig.java │ │ │ │ ├── endpoint/ │ │ │ │ │ ├── Endpoint.java │ │ │ │ │ └── Protocol.java │ │ │ │ ├── init/ │ │ │ │ │ ├── CommandCenterInitFunc.java │ │ │ │ │ └── HeartbeatSenderInitFunc.java │ │ │ │ ├── log/ │ │ │ │ │ └── CommandCenterLog.java │ │ │ │ ├── ssl/ │ │ │ │ │ └── SslFactory.java │ │ │ │ └── util/ │ │ │ │ ├── HttpCommandUtils.java │ │ │ │ └── WritableDataSourceRegistry.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.command.CommandHandler │ │ │ └── com.alibaba.csp.sentinel.init.InitFunc │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── transport/ │ │ │ ├── command/ │ │ │ │ ├── GetRulesCommandHandlerInterceptor.java │ │ │ │ └── InterceptingCommandHandlerTest.java │ │ │ ├── config/ │ │ │ │ └── TransportConfigTest.java │ │ │ ├── endpoint/ │ │ │ │ └── EndpointTest.java │ │ │ └── init/ │ │ │ └── HeartbeatSenderInitFuncTest.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.command.CommandHandlerInterceptor │ ├── sentinel-transport-netty-http/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── transport/ │ │ │ │ ├── command/ │ │ │ │ │ ├── NettyHttpCommandCenter.java │ │ │ │ │ ├── codec/ │ │ │ │ │ │ ├── CodecRegistry.java │ │ │ │ │ │ ├── Decoder.java │ │ │ │ │ │ ├── DefaultCodecs.java │ │ │ │ │ │ ├── Encoder.java │ │ │ │ │ │ ├── StringDecoder.java │ │ │ │ │ │ └── StringEncoder.java │ │ │ │ │ └── netty/ │ │ │ │ │ ├── HttpServer.java │ │ │ │ │ ├── HttpServerHandler.java │ │ │ │ │ └── HttpServerInitializer.java │ │ │ │ └── heartbeat/ │ │ │ │ ├── HttpHeartbeatSender.java │ │ │ │ └── client/ │ │ │ │ └── HttpClientsFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.transport.CommandCenter │ │ │ └── com.alibaba.csp.sentinel.transport.HeartbeatSender │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── csp/ │ │ │ └── sentinel/ │ │ │ └── transport/ │ │ │ └── command/ │ │ │ ├── handler/ │ │ │ │ └── MultipleSlashNameCommandTestHandler.java │ │ │ └── netty/ │ │ │ ├── HttpServerHandlerTest.java │ │ │ ├── HttpServerInitializerTest.java │ │ │ └── HttpServerTest.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alibaba.csp.sentinel.command.CommandHandler │ ├── sentinel-transport-simple-http/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── alibaba/ │ │ │ │ └── csp/ │ │ │ │ └── sentinel/ │ │ │ │ └── transport/ │ │ │ │ ├── command/ │ │ │ │ │ ├── SimpleHttpCommandCenter.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── RequestException.java │ │ │ │ │ └── http/ │ │ │ │ │ ├── HttpEventTask.java │ │ │ │ │ └── StatusCode.java │ │ │ │ └── heartbeat/ │ │ │ │ ├── HeartbeatMessage.java │ │ │ │ ├── SimpleHttpHeartbeatSender.java │ │ │ │ └── client/ │ │ │ │ ├── SimpleHttpClient.java │ │ │ │ ├── SimpleHttpRequest.java │ │ │ │ ├── SimpleHttpResponse.java │ │ │ │ ├── SimpleHttpResponseParser.java │ │ │ │ └── SocketFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── com.alibaba.csp.sentinel.transport.CommandCenter │ │ │ └── com.alibaba.csp.sentinel.transport.HeartbeatSender │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── transport/ │ │ └── command/ │ │ └── http/ │ │ ├── CommandCenterTest.java │ │ └── HttpEventTaskTest.java │ └── sentinel-transport-spring-mvc/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── csp/ │ │ └── sentinel/ │ │ └── transport/ │ │ ├── command/ │ │ │ ├── SentinelApiHandler.java │ │ │ ├── SentinelApiHandlerAdapter.java │ │ │ ├── SentinelApiHandlerMapping.java │ │ │ ├── SpringMvcHttpCommandCenter.java │ │ │ └── http/ │ │ │ └── StatusCode.java │ │ └── heartbeat/ │ │ ├── SpringMvcHttpHeartbeatSender.java │ │ └── client/ │ │ └── HttpClientsFactory.java │ └── resources/ │ └── META-INF/ │ └── services/ │ ├── com.alibaba.csp.sentinel.transport.CommandCenter │ └── com.alibaba.csp.sentinel.transport.HeartbeatSender └── toolchains-example.xml