服务管理
服务注册
服务注册指的是被调方按照服务模型将自身的服务数据注册到北极星,以供主调方进行服务发现。
服务数据主要包括以下部分:
- 服务名:服务的唯一标识,区分大小写。
- 服务元数据:服务的标签信息,KV格式,可对服务进行分类,可用于过滤。
- 服务实例:提供服务的节点列表,以IP:PORT的方式提供。
- 服务实例元数据:服务实例的标签信息,KV格式,通常用于描述节点的集群、版本等,用于后续流量治理等操作。
服务注册的方式
北极星支持以下4种服务注册方式:
通过SDK注册
北极星提供了多语言SDK,服务可以通过集成SDK,调用registerInstance接口完成服务注册。
通过服务框架注册
服务框架会提供通用的服务注册接口,供应用在拉起的时候,自动往注册中心注册。
北极星对主流的服务框架(SpringCloud,Dubbo,gRPC)做了适配,用户无需修改业务逻辑代码,只需引入北极星的框架扩展库,即可实现自动注册。
通过k8s同步的方式注册
用户通过k8s部署服务,并注册为k8s的service,北极星通过controller的机制,从k8s中将service和endpoint信息同步到北极星,完成服务注册。
通过OpenAPI注册
北极星控制面提供基于Rest标准的OpenAPI,用户可通过OpenAPI完成服务注册的操作。
服务发现
服务发现指的主调方是根据服务名标识,拉取服务实例列表,以供后续进行服务调用的操作。
服务发现的方式
北极星支持以下4种方式进行服务发现:
通过SDK进行服务发现
北极星提供了多语言SDK,SDK通过ConsumerAPI提供3个接口进行服务发现:
- getAllInstances:获取服务下全量的服务实例列表,不做任何过滤。
- getHealthyInstances:获取服务下健康的服务实例列表,只包含健康实例,不包含被熔断、不健康、隔离、权重为0的实例。
- getOneInstances:针对健康的服务实例列表,进行动态路由和负载均衡,返回单个可用的服务实例。
通过服务框架进行服务发现
服务框架会提供通用的服务发现接口,应用在RPC之前,会自动进行服务发现,获取到可用的实例进行RPC调用。
北极星对主流的服务框架(SpringCloud,Dubbo,gRPC)做了适配,用户无需修改业务逻辑代码,只需引入北极星的框架扩展库,即可实现自动发现。
使用DNS进行服务发现
北极星通过polaris-sidecar提供DNS功能,用户程序可以通过DNS域名访问的方式,实现无侵入的服务发现。
使用OpenAPI服务发现
北极星控制面提供基于Rest标准的OpenAPI,用户可通过OpenAPI完成服务发现的操作。
健康检查
健康检查提供了一种机制,使得控制面可以在一定时间段内,感知服务实例出现异常,从而将异常节点剔除,并通知给所有的消费者。健康检查支持以下实现形式:
心跳上报
服务实例持续上报心跳给控制面,并与控制面约定TTL的时间段,控制面检查服务实例的心跳上报时间点,当发现当前时间相比实例最后一次上报时间已经超过3*TTL
,就将实例标记为不健康,并通知给该服务的消费者。