节点熔断
引入依赖
参考文档:依赖引入
初始化 polaris.yaml
你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细
SDK实例构建
当初始化好 polaris.yaml 文件之后,你可以直接使用 include polaris/consumer.h, 使用polaris::ProviderApi::CreateWithDefaultFile() 方法进行构造一个 ProviderAPI SDK 实例
#include "polaris/consumer.h"
int main(int argc, char** argv) {
consumer_ = std::unique_ptr<polaris::ConsumerApi>(polaris::ConsumerApi::CreateWithDefaultFile());
}
上报调用情况
/// @brief 服务实例调用结果上报
class ServiceCallResult : Noncopyable {
public:
/// @brief 设置服务实例的服务名
void SetServiceName(const std::string& service_name);
/// @brief 设置服务实例的命名空间
void SetServiceNamespace(const std::string& service_namespace);
/// @brief 设置服务实例ID
void SetInstanceId(const std::string& instance_id);
/// @brief 设置服务实例Host和Port,可选,如果设置了服务实例ID,则这个可不设置,优先使用服务实例ID
/// @param host 服务实例Host
/// @param port 服务实例Port
void SetInstanceHostAndPort(const std::string& host, int port);
/// @brief 设置调用返回状态码
void SetRetStatus(CallRetStatus ret_status);
/// @brief 设置调用返回码。可选,用于支持根据返回码实现自己的插件
void SetRetCode(int ret_code);
/// @brief 设置服务实例调用时延
void SetDelay(uint64_t delay);
/// @brief 设置主调服务ServiceKey
void SetSource(const ServiceKey& source);
/// @brief 设置被调服务labels信息
void SetLabels(const std::map<std::string, std::string>& labels);
};
上报请求调用结果
你在根据请求调用情况对 ServiceCallResult 结构体完成初始化后,只需要调用 ConsumerAPI.UpdateServiceCallResult 方法即可完成请求调用结果上报。SDK 内部会根据上报的调用结果信息,对实例进行信息统计并计算是否需要对实例进行熔断
consumer_->UpdateServiceCallResult(result)