使用 SDK

功能简介

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

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

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

接口说明

被调方功能接口

  1. Register
  2. 功能:注册服务实例
  3. 描述:将实例注册到某个服务下,实例信息包含地址和元数据
  4. Deregister
  5. 功能:反注册服务实例
  6. 描述:将某个服务下的实例反注册
  1. Heartbeat
  2. 功能:上报心跳
  3. 描述:如果在注册服务实例时,开启服务端健康检查功能,需要定期上报心跳到服务端,不然服务实例状态异常
  1. GetLimitQuota
  2. 功能:获取请求处理配额
  3. 描述:如果使用限流功能,在每次处理请求之前,获取请求处理配额。若有配额,则处理请求,否则拒绝处理请求

主调方功能接口

  1. GetAllInstances
  2. 功能:获取全部实例
  3. 描述:获取注册到某个服务下的全部实例,包含健康、异常和隔离的实例。本接口只使用服务发现功能模块
  1. GetOneInstance
  2. 功能:获取一个可用实例
  3. 描述:在每次服务调用之前,获取一个可用实例。本接口使用服务发现、动态路由、负载均衡和熔断降级功能模块
  4. 备注:几个功能模块采用插件化设计,默认插件配置适用于基本场景,可以根据业务场景调整插件配置
  5. UpdateServiceCallResult
  6. 功能:上报服务调用结果
  7. 描述:在每次服务调用之后,上报本次服务调用的结果。服务调用结果用于熔断降级和监控统计

接口使用说明

服务被调方

  1. // 在应用启动阶段,注册服务实例
  2. Register(namespace, service, instance)
  3. // 如果使用服务端健康检查功能,在应用运行阶段,需要定期上报心跳到服务端
  4. {
  5. Heartbeat(namespace, service, instance)
  6. }
  7. // 如果使用限流功能,在每次处理请求之前,获取请求处理配额
  8. {
  9. if( GetLimitQuota(limiter) ) {
  10. Handle(request)
  11. } else {
  12. Refuse(request)
  13. }
  14. }
  15. // 在应用停止阶段,反注册服务实例
  16. Deregister(namespace, service, instance)

服务主调方

  1. // 发起一次服务调用
  2. {
  3. // 获取本次服务调用的实例
  4. instance = GetOneInstance(namespace, service)
  5. // 发起服务调用
  6. response = ServiceCall(instance.address, request)
  7. // 上报本次服务调用的结果
  8. UpdateServiceCallResult(instance.id, response.code, response.delay)
  9. }

快速入门示例

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

Java语言

Go语言

C++语言

PHP语言