节点熔断

引入依赖

  1. go get github.com/polarismesh/polaris-go@latest

初始化 polaris.yaml

你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细

SDK实例构建

当初始化好 polaris.yaml 文件之后,你可以直接使用在 package github.com/polarismesh/polaris-go 下的 NewConsumerAPI 方法进行构造一个 ConsumerAPI SDK 实例

  1. import (
  2. ...
  3. "github.com/polarismesh/polaris-go"
  4. )
  5. func main() {
  6. consumer, err := polaris.NewConsumerAPI()
  7. }

上报调用情况

  1. type ServiceCallResult struct {
  2. // 上报的服务实例
  3. CalledInstance Instance
  4. // 调用接口方法
  5. Method string
  6. // 必选,本地服务调用的状态,正常or异常
  7. RetStatus RetStatus
  8. // 必选,本地服务调用的返回码
  9. RetCode *int32
  10. // 必选,被调服务实例获取接口的最大时延
  11. Delay *time.Duration
  12. // 可选,主调服务实例的服务信息
  13. SourceService *ServiceInfo
  14. }

上报请求调用结果

你在根据请求调用情况对 ServiceCallResult 结构体完成初始化后,只需要调用 ConsumerAPI.UpdateServiceCallResult 方法即可完成请求调用结果上报。SDK 内部会根据上报的调用结果信息,对实例进行信息统计并计算是否需要对实例进行熔断

  1. consumer.UpdateServiceCallResult(ServiceCallResult)

如何基于 polaris-go 客户端完成一个节点熔断的程序