Dubbo-go 中提供了内置的限流组件,用户可根据自己的业务场景调整限流值、限流后的行为等,具体可 TpsLimiter 定义与具体实现。用户可通过类似以下方式在服务端设置简单的限流策略:
server.WithTpsLimiter("method-service") // 目前支持 method-service、polaris 等几个实现
server.WithTpsLimiterXxx() // 设置限流相关阈值,请根据具体方法填写
//tps.limit.strategy: "slidingWindow"
//tps.limit.rejected.handler: "default"
//tps.limit.interval: 1000
//tps.limit.rate: 3
Dubbo-go 内置限流策略相对简单,对于一些更复杂的场景,我们建议通过使用 Sentinel 等专业的第三方框架可以实现更丰富、更灵活的限流策略。
可在此查看 本示例完整源码,也可以参考 Dubbo+Sentinel 的 Java 示例 获得更多灵感。