Skip to content

v1.0.0

Compare
Choose a tag to compare
@sczyh30 sczyh30 released this 26 Nov 13:22
· 71 commits to master since this release

We're happy to announce that Sentinel Go 1.0.0 has been released! This is a production-ready GA version with versatile fault-tolerance and flow control capabilities including rate limiting, concurrency limiting (semaphore isolation), throttling, circuit breaking, system adaptive protection and "hot-spot" traffic shaping. We've already provided plugins for commonly-used frameworks including Gin, go-micro, gRPC and dubbo-go. We've also made progress in cloud native evolution including Kubernetes CRD data-source, Kubernetes HPA based on Sentinel metrics and plugins for service meshes.

Features/Enhancements

  • Support arbitrary statistic duration for flow control and refactor internal implementation (#200)
    • Add StatIntervalInMs attribute in flow.Rule. When StatIntervalInMs > globalInterval or < bucketLength, we create a new sliding window for it.
    • Add stat reuse mechanism for flow rules.
    • Make threshold of flow rule "request amount per interval" rather than QPS.
  • Make internal logger structured and use JSON as default format (#247)
  • Add "isolation" package and move out concurrency limiting from flow module (#217)
  • Add Kubernetes CRD data-source implementation (sentinel-go-datasource-k8s-crd)
  • Refine fundamental public APIs (#238, #239)
  • Support configuring specific items for arbitrary kinds of objects in hotspot.Rule and polish data-source (#252)
  • Add cache mechanism for LoadRules in all rule managers (#268, #321, #322, #324)
  • Refine circuit breaker State atomic operation (#276)
  • Refine pooled EntryOptions recycle logic (#277)
  • Refactor the slot chain execution mechanism: support resource level slot chain to reduce unnecessary slot execution (#264)
  • Refactor slot chain mechanism and introduce slot order to support priority (#318)
  • Support config initialization with config parser (#290)
  • Unify logging style (#293)
  • Move all adapters and data-source implementations to sentinel-group
  • Upgrade gopsutil to support retrieving system load in Windows (#329)
  • Change semantic of waitMs to nanosToWait in TokenResult and polish related stat slots (#332)
  • Improve examples and add benchmarks for all fundamental slots
  • Performance optimization

Bug Fixes

  • Fix potential nil counter bug in currentBucketOfTime of leap array (#327)
  • Fix the bug that unsigned estimatedQueueingDuration in throttling checker may overflow (#332)
  • Fix the problem that requests will never be blocked when ratio threshold = 100% (#315)
  • Fix no limit of batch count in flow throttling checker (#302)

Thanks for all contributors: @louyuting, @sanxun0325, @luckyxiaoqiang, @sczyh30, @liqiangz, @sdttttt, @AlexStocks, @Jayice-zjw, @YUbuntu0109, @cncal, @weiyuanke