节点熔断

引入依赖

参考文档:依赖引入

初始化 polaris.yaml

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

SDK实例构建

当初始化好 polaris.yaml 文件之后,你可以直接使用 include polaris/consumer.h, 使用polaris::ProviderApi::CreateWithDefaultFile() 方法进行构造一个 ProviderAPI SDK 实例

  1. #include "polaris/consumer.h"
  2. int main(int argc, char** argv) {
  3. consumer_ = std::unique_ptr<polaris::ConsumerApi>(polaris::ConsumerApi::CreateWithDefaultFile());
  4. }

上报调用情况

  1. /// @brief 服务实例调用结果上报
  2. class ServiceCallResult : Noncopyable {
  3. public:
  4. /// @brief 设置服务实例的服务名
  5. void SetServiceName(const std::string& service_name);
  6. /// @brief 设置服务实例的命名空间
  7. void SetServiceNamespace(const std::string& service_namespace);
  8. /// @brief 设置服务实例ID
  9. void SetInstanceId(const std::string& instance_id);
  10. /// @brief 设置服务实例Host和Port,可选,如果设置了服务实例ID,则这个可不设置,优先使用服务实例ID
  11. /// @param host 服务实例Host
  12. /// @param port 服务实例Port
  13. void SetInstanceHostAndPort(const std::string& host, int port);
  14. /// @brief 设置调用返回状态码
  15. void SetRetStatus(CallRetStatus ret_status);
  16. /// @brief 设置调用返回码。可选,用于支持根据返回码实现自己的插件
  17. void SetRetCode(int ret_code);
  18. /// @brief 设置服务实例调用时延
  19. void SetDelay(uint64_t delay);
  20. /// @brief 设置主调服务ServiceKey
  21. void SetSource(const ServiceKey& source);
  22. /// @brief 设置被调服务labels信息
  23. void SetLabels(const std::map<std::string, std::string>& labels);
  24. };

上报请求调用结果

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

  1. consumer_->UpdateServiceCallResult(result)

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