Sentinel Versions Save

A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

1.7.1

4 years ago

Features / Enhancements

  • Add Sentinel Spring Web MVC adapter module (#1104)
  • Improve async invocation support for Dubbo 2.7.2+ in sentinel-apache-dubbo-adapter (#1124)
  • Support configuration for the heartbeat API path in transport module (#515)
  • Refactor: Get the max allowed RT directly from SentinelConfig.statisticMaxRt() to avoid implicit dependency chain (#1173)
  • Support setting config file path via system environment and improve error handling in SentinelConfigLoader

Bug fixes

  • Fix the incorrect logic of handling the end separator of the log directory in LogBase (#1172)
  • Fix Content-Type matching bug in sentinel-transport-simple-http module (#1207)
  • Fix the incorrect logic of getting maxSuccessQps in StatisticNode (#1196)

Dashboard

  • Improve the ACL checking mechanism and add @AuthAction annotation support (#1042)
  • Change the charset of UrlEncodedFormEntity to UTF-8 in SentinelApiClient to support non-ASCII characters (#1207)

Thanks for the contributors: @agensi, @CodingSinger, @fangwentong, @hongjiev, @kaizi2009, @lkxiaolou, @nick-tan, @zhaoyuguang, @zhenxianyimeng

1.7.0

4 years ago

In this version, Sentinel provides an Envoy Global RLS implementation using Sentinel token server, so that Envoy service mesh could leverage the distributed flow control capability of Sentinel. See here for details.

Since 1.7.0, Sentinel supports configuration via arbitrary properties files. We could set the path of the properties file with the -Dcsp.sentinel.config.file property item. See here for more details.

Features / Enhancements

  • Add Sentinel Envoy RLS token server implementation (#1139)
  • Support arbitrary configuration properties file path for Sentinel (#804)
  • Improve the SPI ClassLoader mechanism to handle more complex scenarios (#1088)
  • Add support for resource classification and polish adapters (#1142)
  • Support customized block page HTTP status in sentinel-web-servlet-adapter (#1112)
  • Make rtSlowRequestAmount and minRequestAmount in DegradeRule configurable (#789)
  • Make maxParamByteSize configurable in ParamFlowRequestDataWriter of cluster client module and fix bugs (#823)
  • Improve Node and Metric interface to support conditional metric retrieval (#1115)
  • Support adding prefix to Dubbo service resource name in Sentinel Dubbo Adapter (#859)
  • Improve annotation aspect to support throwing original exception in fallback and blockHandler (#986)
  • Add Etcd DataSource extension (#1018)
  • Add Consul DataSource integration module (#979)
  • Add Spring Cloud Config data source extension (#899)
  • Improve the checking logic of SystemRule and enhance SystemRuleManager (#1050)
  • Support registering writable data-source for GatewayFlowRule and customized ApiDefinition (#1057)
  • Add init parameter to support unifying web context name in Sentinel Web CommonFilter (#1111)
  • Support URL exclusion using UrlCleaner in Spring WebFlux adapter (#1049)
  • Reuse connections of the same address in ZooKeeper data-source (#788)
  • Dependency update: fastjson to 1.2.62, nacos-client to 1.1.4, apollo-client to 1.5.0

Bug fixes

  • Fix the bug that resource name displayed in ClusterNode-related command APIs for SphU.entry(method) is incorrect (#1078)
  • Fix hookOnCancel handing logic in SentinelReactorSubscriber (#1089)
  • Fix the bug of getting the wrong current flow QPS in ClusterFlowChecker (#972)
  • Fix the numeric overflow bug of ping response data in the cluster module (#844)
  • Fix the bug of wrong RT and exception tracing in sentinel-grpc-adapter (#291 and #995)
  • Fix the bug that the Zuul adapter does not exit the entry with parameters (#1148)

Dashboard

  • Add version info in the left top of dashboard (#1015)
  • Support configuration for disabling login (#1004)

Thanks for the contributors: @aq0706, @ballenwen, @cat-coco, @chenledong, @CodingSinger, @complone, @cookiejoo, @fangjian0423, @HaojunRen, @huangxfchn, @lhl4546, @linlinisme, @lkxiaolou, @wangybgit, @wavesZh, @ycx627954927, @zhangyide, @zhaoyuguang, @0704681032

1.6.3

4 years ago

This version provides entire support for managing API gateway flow rules and customized API groups in Sentinel dashboard.

Features / Enhancements

  • Add support for managing gateway flow rules and customized API group in Sentinel dashboard (#869)
  • Add support for excluding some URLs in Web Servlet CommonFilter (#914)
  • Add Ordered interface support for Spring Cloud Gateway filter (#937)
  • Support displaying SystemRule of CPU usage strategy in the dashboard (#927)
  • Use the unified context name in Web Servlet filter (#944)

Bug fixes

  • Fix the empty value matching problem in GatewayParamParser (#937)

Thanks for the contributors: @cdfive, @Crazy10552, @jasonjoo2010, @linlinisme, @lym-ifae

1.6.2

4 years ago

Features / Enhancements

  • Add support for request item pattern matching in API gateway flow control (#842)
  • Support parsing cookie as request items in API gateway flow control (#814)
  • Add support for logging into console for common logs (#836)

Bug fixes

  • Fix the parsing bug for command name that contains multiple slash in sentinel-transport-netty-http module (#817)
  • Fix the bug that numeric overflow might occur when refilling tokens in ParamFlowChecker (#838)

Dashboard

  • Improve the edit dialog for FlowRule and ParamFlowRule (#845)
  • Update frontend dependencies in package.json to fix vulnerabilities

1.6.1

4 years ago

Features / Enhancements

  • Refactor API gateway common module to separate converted rules from other rule managers (#758)
  • Separate parameter metric storage from ParamFlowSlot and improve ParamFlowRuleUtil
  • Refactor FlowRuleChecker to improve code reuse
  • Add SPI extension for Sentinel internal statistics (#730)
  • Add exceptionsToTrace and exceptionsToIgnore support in Tracer (#766)
  • Make SentinelConfig.loadProps() thread-safe using CopyOnWriteArraySet (#706)
  • Add CPU usage and system load to metric collecting command API (#749)
  • Add getCpuUsageThreshold() method in SystemRuleManager (#770)

Bug fixes

  • Fix the bug that parameters are not carried when exiting entries in SentinelReactorSubscriber
  • Fix the bug that Chinese characters are malformed in response body of ZuulBlockFallbackProvider (#737)

Dashboard

  • Add ZooKeeper flow rule dynamic publisher sample (#714)

Thanks for the contributors: @haofangyuan, @jasonjoo2010, @kexianjun, @threedr3am, @yikangfeng, @yinjihuan

1.6.0

5 years ago

Breaking Changes

In 1.6.0, we refactored the statistic and flow control algorithm of parameter flow control. The old mechanism (LRU map + sliding window for the parameter) has been replaced by an algorithm like token bucket. Now parameter flow rule supports setting statistic interval (intervalSec), burst count (burst), traffic shaping mode (controlBehavior, currently supports default mode and throttling mode).

We've refactored and improved fallback support for @SentinelResource annotation to make it more understandable and common. See the document for more information.

Since 1.6.0, all API gateway adapter will be based on the sentinel-api-gateway-adapter-common module. There are some changes for Sentinel Zuul Adapter. In previous versions, the adapter will mark all serviceId and API path as resources. Since 1.6.0, the adapter will regard all route ID (aka. proxy) and customized API groups (defined in API gateway common module) as resources.

Features / Enhancements

  • Refactor rule, statistic and flow checking implementation for parameter flow control and support throttling traffic shaping mode (#677)
  • Add sentinel-api-gateway-adapter-common module for universal gateway rule and API definition management
  • Add Sentinel Spring Cloud Gateway adapter module and implementation (#695)
  • Refactor and improve Sentinel Zuul Adapter (#698)
  • Refactor and improve fallback support for @SentinelResource annotation (#693)
  • Support passing acquireCount and parameters to entry via SentinelReactorSubscriber in Sentinel Reactor Adapter (#630)
  • Support parsing HTTP POST request in sentinel-transport-netty-http and sentinel-transport-simple-http (#620)
  • Add FileInJarReadableDataSource to support reading config file in jar (#646)
  • Add @SpiOrder annotation and improve SPI loader to support loading SPI with highest precedence
  • Make CommandCenterProvider and HeartBeatSenderProvider choose the instance with highest precedence by default (#675)
  • Add exceptionsToIgnore configuration support in @SentinelResource annotation (#683)
  • Add appType property field in SentinelConfig (#696)

Bug fixes

  • Fix the NPE bug when passing null args to SphU.entry() and paramIdx is negative (#642)

Dashboard

  • Add a simple login page to support basic auth in Sentinel dashboard (#659)
  • Refinement and support HTTP POST request for update operations in SentinelApiClient (#620)
  • Fix CountDownLatch wait timeout in MetricFetcher when machine is dead (#645)

Thanks for the contributors: @cdfive, @dqing0, @jasonjoo2010, @luoxn28, @paulkennethkent, @shxz130, @yikangfeng, @zhaixiaoxiang

1.5.1

5 years ago

This version provides some bug fixes and enhancements.

Features / Enhancements

  • Add exceptionsToTrace configuration support in @SentinelResource annotation (#543)
  • Enhancements for handling Error in InitExecutor and LogBase (#613)
  • Improve ZookeeperDataSource to deal with bad connection when initializing (#597)
  • Add compatible adapter module sentinel-apache-dubbo-adapter for Apache Dubbo 2.7.x and above (#619)
  • Apply Alibaba p3c pmd plugin/rules and fix/ignore all violations of priority 1 (#574)
  • Improve field naming in ApolloDataSource (#593)

Bug fixes

  • Fix deadlock bug in Env static initialization (#610)
  • Fix bug of exiting entry with parameters in SentinelResourceAspect

Thanks for the contributors: @blindpirate, @beston123, @cdfive, @lawrencewu, @zhousiliang163

1.5.0

5 years ago

Breaking Changes

Since 1.5.0, the minimum JDK version has been updated to 1.7. JDK 1.6 is no longer supported.

There are some changes in Node interface: the return type of xxxQps methods (e.g. passQps, blockQps) has been changed from long to double to be more accurate.

In 1.5.0 we added common occupy mechanism in LeapArray so that Sentinel can occupy future buckets of the sliding window to support "final pass for prioritized requests when QPS exceeds the threshold". The Sph.entryWithPriority(xxx) method will take effect now in local flow control mode.

Features / Enhancements

  • Update minimum JDK version to 1.7 (for all modules)
  • Refactor Node interface: change return type of QPS get method to double (#564)
  • Add occupy mechanism for future buckets of sliding window to support "prioritized requests" (#568)
  • Add occupiable LeapArray support and code refactor/rearrangement
  • Add Sentinel Reactor module to support reactive integration (#545)
  • Add adapter module and implementation for Spring WebFlux (#556)
  • Add try-with-resources support for Entry class (#550)
  • Add an ApiCommandHandler to list all available commands and description (#491)
  • Add CPU usage checking support in system protection rule (#484)
  • Add a CommandCenterProvider to resolve and cache the CommandCenter instance (#409)
  • Automatically de-duplicate rules when loading rules (#571)
  • Support recording total inbound traffic data in metric file (#555)
  • Support passing args in Sph.entryWithPriority(xxx)
  • Allow negative paramIndex as reversed-order index in ParamFlowRule (#549)
  • Add AuthInfo parameter in the constructor of ZooKeeperDataSource to support ACL (#508)
  • Carry appName in FetchClusterServerInfo command
  • Optimize circuit breaking state transformation using CAS in DegradeRule (#538)
  • Improve sleeping-based tests to be more stable and optimize slow tests (#546)
  • Change default value of avgUsedTokens to zero to be more meaningful in DefaultController (#460)
  • Update fastjson dependency version to 1.2.56 (for sentinel-datasource-extension)
  • Update apollo-client version to 1.3.0 and add support for removing listener in sentinel-datasource-apollo (#562)

Bug fixes

  • Fix SimpleDateFormat concurrent issue in CspFormatter of sentinel-core (#548)
  • Fix Dubbo-related dependencies in sentinel-dubbo-demo (#534)

Dashboard

  • Support automatic/manual removal of unhealthy machines and disconnected applications in dashboard (#168)
  • Add basic interface for authentication and authorization in Sentinel dashboard (#503)
  • Improve management for foreign-app stand-alone token server in cluster page
  • Remove G2 lib tracking in frontend of Sentinel dashboard (#527)
  • Fix concurrent error in InMemoryMetricsRepository of the dashboard (#488)
  • Add Apollo flow rule publisher sample in Sentinel dashboard (#535)

Thanks for the contributors: @all4you, @ATAXGT, @cdfive, @HaojunRen, @hantianwei, @jasonjoo2010, @MickMo, @mjaow, @nick-tan, @xburning, @yikangfeng, @yklove

1.4.2

5 years ago

Features / Enhancements

  • Add Zuul 1.x adapter module for Sentinel (#188, @tigerMoon)
  • Add catch throwable logic in ClusterStateManager to detect fatal error when loading SPI
  • Add back thread count metric type support for parameter flow control
  • Carry the triggered rule in subclasses of BlockException (#469)
  • Support tracing exception count for specific entry or context in Tracer
  • Add volatile in double-checked locking field in ClusterBuilderSlot (@mjaow)
  • Improve ClusterServerConfigManager in sentinel-cluster-server-default and add basic test cases
  • Remove slf4j dependency in sentinel-annotation-aspectj module
  • Improve and fix bugs for ConnectionManager and add test cases
  • Update Nacos SDK version to 0.8 in Nacos data-source extension module and update Nacos namespace demo (#474, @yanlinly)
  • HashMap init optimize when adding new ClusterNode to cluster node map (#465, @luoxn28)
  • Make build faster by reducing fixed waiting time in tests (#449, @aalmiray)
  • Add some unit test for StatisticNode, ClusterNode and DefaultNodeBuilder class (#423, @cdfive)
  • Update dependency version of fastjson and jacoco-maven-plugin

Bug fixes

  • Fix negative waitTime bug in RateLimiterController (fixes #420)
  • Fix zero-count divide overflow bug in RateLimiterController (#461, @mjaow)
  • Fix error value type and rename variable in EntranceNode class (#457, @mjaow)
  • Fix NPE bug when creating connection group in ConnectionManager of token server (#467)
  • Fix NPE bug when adding event count concurrently for different parameter values in ParamMapBucket (#494)
  • Fix bug of calculating param size and amount in ParamFlowRequestDataWriter of Sentinel cluster (#495)

Dashboard

  • Rename dashboard package name from com.taobao.* to com.alibaba.* (#435)
  • Make fallbackToLocalWhenFail of cluster rule configurable in Sentinel dashboard (#370, @cdfive)
  • Fix data model problem in edit dialog of Sentinel dashboard (#370, @cdfive)
  • Add healthyMachineCount and totalCount information in sidebar of Sentinel dashboard (#376, @jz0630)
  • Change text of p_qps and b_qps to be more intuitive in monitoring page (#398, @Arlmls)
  • When clicking the first-level menu of sidebar, don't jump to the home page (#422, @cdfive)

Thanks for the contributors: @aalmiray, @all4you, @Arlmls, @cdfive, @jz0630, @kangyl, @kexianjun, @Leishunyu, @luoxn28, @mjaow, @pig4cloud, @tigerMoon, @wangjunwei87, @yanlinly

1.4.1

5 years ago

This is a milestone version that provides enhancements for cluster flow control.

Features / Enhancements

  • Improve Sentinel dashboard for cluster flow control management (#384)
  • Support multiple tokens per request entry (#380)
  • Improve retry and stop control logic in cluster token client
  • Improve cluster state manager to modify cluster mode more flexible
  • Enhance config and log for cluster token client
  • Improve namespace register logic for embedded cluster token server mode
  • Add cluster embedded mode handling logic for parameter flow checker
  • Add basic monitoring command API for cluster token server
  • Upgrade nacos-client version and construct NacosDataSource by Properties (#348, @fangjian0423)
  • Make the default statistic max RT value TIME_DROP_VALVE configurable (#292, @cdfive)
  • Rearrange the constructor of LeapArray to match with interval and sampleCount property
  • Refinement for heartbeat logic in sentinel-transport related module
  • Polish cluster flow control demo to be more instructive
  • Add some unit test for sentinel-transport-netty-http module (#321, @cdfive)

Bug fixes

  • Fix bug in search logic of metric files (#331)
  • Fix wrong empty check in FlowRuleApiPublisher of Sentinel dashboard (#353, @foreveryang321)

Thanks for the contributors: @allencloud, @canglang1973, @cdfive, @fangjian0423, @foreveryang321, @jz0630, @YoungHu