Sentinel 是阿里巴巴開源的,面向分散式服務架構的流量控制組件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統自適應保護等多個維度來幫助開發者保障微服務的穩定性。Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺、冷啟動、消息削峰填谷、集群流量控制、實時熔斷下游不可用服務等,是保障微服務高可用的利器,原生支持 Java/Go/C++ 等多種語言,並且提供 Envoy 全局流控支持來為 Service Mesh 提供高可用防護的能力。
近期,Sentinel Go 0.2.0 正式發布,完善易用性與開源生態,新增 gRPC、Gin、Dubbo-go 等框架的適配,新增動態文件數據源支持。在 0.2.0 版本中,用戶只需要簡單地對 Sentinel 進行初始化,並且為框架配置 Sentinel 的適配即可快速接入。比如針對 Gin Web 服務,我們只需要以下幾步即可快速接入 Sentinel:
1、在服務啟動的時候對 Sentinel 進行初始化:
import ( sentinel "github.com/alibaba/sentinel-golang/api")func init() { err := sentinel.InitDefault() if err != nil { log.Fatal(err) } }
2、在 Gin 的初始化代碼中引入 SentinelMiddleware:
import ( sentinelPlugin "github.com/alibaba/sentinel-golang/adapter/gin" "github.com/gin-gonic/gin") r := gin.New()// Sentinel 會對每個 API route 進行統計,資源名稱類似於 GET:/foo/:id// 默認的限流處理邏輯是返回 429 (Too Many Requests) 錯誤碼,支持配置自定義的 fallback 邏輯r.Use(sentinelPlugin.SentinelMiddleware())
3、配置流控規則。可以創建動態文件數據源,通過文件配置規則,或硬編碼配置規則。
詳細特性列表請參考 Release Notes,歡迎大家使用並提出建議。
同時,社區也在完善更多的特性和整合模塊,如 etcd 數據源、熔斷降級等。Sentinel Go 版本的演進離不開社區的貢獻,我們非常歡迎大家持續參與貢獻,一起來主導未來版本的演進。若您有意願參與貢獻,可以參考 貢獻指南 來入門。積極參與貢獻的開發者我們會重點關注,有機會被提名為 Committer。Now start hacking!
[admin
]