在 dubbo-go 中,sentinel 是作为 filter 的形式集成的。这个示例展示了如何在 dubbo-go 中配置并使用 sentinel。
通过代码初始化 sentinel 并配置相关的限流规则,如下所示:
var err error conf := sentinelConf.NewDefaultConfig() err = api.InitWithConfig(conf) _, err = flow.LoadRules([]*flow.Rule{ { // protocol:consumer:interfaceName:group:version:method Resource: "dubbo:consumer:org.apache.dubbo.UserProvider:::GetUser()", TokenCalculateStrategy: flow.Direct, ControlBehavior: flow.Reject, Threshold: 1, StatIntervalInMs: 1000, }, })
Sentinel filter 分为 sentinel-consumer 和 sentinel-provider 两种,分别用于 consumer 端和 provider 端,如下所示:
# consumer filter config filter: "sentinel-consumer" # provider filter config filter: "sentinel-provider"
请参阅根目录中的 HOWTO.md 来运行本例。
[2021-03-10/10:55:46 main.main: client.go: 80] error: SentinelBlockError: FlowControl, message: flow reject check blocked