使用 SDK

功能简介

北极星网格提供多语言 SDK 作为高性能接入方式:

以插件化和配置化的方式实现服务发现和治理功能:

  • 被调方功能:服务注册、上报心跳、限流
  • 主调方功能:服务发现、动态路由、负载均衡、熔断降级
  • 观测性功能:服务调用、熔断降级和限流的监控统计

接口说明

被调方功能接口

Register

功能:注册服务实例
描述:将实例注册到某个服务下,实例信息包含地址和元数据

Deregister

功能:反注册服务实例
描述:将某个服务下的实例反注册
Heartbeat

功能:上报心跳
描述:如果在注册服务实例时,开启服务端健康检查功能,需要定期上报心跳到服务端,不然服务实例状态异常
GetLimitQuota

功能:获取请求处理配额
描述:如果使用限流功能,在每次处理请求之前,获取请求处理配额。若有配额,则处理请求,否则拒绝处理请求

主调方功能接口

GetAllInstances

功能:获取全部实例
描述:获取注册到某个服务下的全部实例,包含健康、异常和隔离的实例。本接口只使用服务发现功能模块
GetOneInstance

功能:获取一个可用实例
描述:在每次服务调用之前,获取一个可用实例。本接口使用服务发现、动态路由、负载均衡和熔断降级功能模块
备注:几个功能模块采用插件化设计,默认插件配置适用于基本场景,可以根据业务场景调整插件配置

UpdateServiceCallResult

功能:上报服务调用结果
描述:在每次服务调用之后,上报本次服务调用的结果。服务调用结果用于熔断降级和监控统计

接口使用说明

服务被调方

// 在应用启动阶段,注册服务实例
Register(namespace, service, instance)

// 如果使用服务端健康检查功能,在应用运行阶段,需要定期上报心跳到服务端
{
    Heartbeat(namespace, service, instance)
}

// 如果使用限流功能,在每次处理请求之前,获取请求处理配额
{
    if( GetLimitQuota(limiter) ) {
        Handle(request)
    } else {
        Refuse(request)
    }
}

// 在应用停止阶段,反注册服务实例
Deregister(namespace, service, instance)

服务主调方

// 发起一次服务调用
{
    // 获取本次服务调用的实例
    instance = GetOneInstance(namespace, service)

    // 发起服务调用
    response = ServiceCall(instance.address, request)

    // 上报本次服务调用的结果
    UpdateServiceCallResult(instance.id, response.code, response.delay)
}

快速入门示例

各语言 SDK 的快速入门示例:

Java语言

Go语言

C++语言

PHP语言