# 服务注册原理
在微服务架构下,主要有三种角色:服务提供者(RPC Server)、服务消费者(RPC Client)和服务注册中心(Registry),三者的交互关系请看下面这张图。
- RPC Server 提供服务,在启动时,根据服务的编译和配置信息,向 Registry 注册服务,并向 Registry 定期发送心跳汇报存活状态。
- RPC Client 调用服务,在启动时,根据配置文件的信息,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。
- 当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地内存中缓存的服务节点列表。
- RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。
# 服务注册数据
名称 | 英文 | 示例 | 类型 |
---|---|---|---|
环境 | env | dev | 环境变量 |
地区 | region | beijing | 环境变量 |
可用区 | zone | zone1 | 环境变量 |
地址 | ip | 192.168.1.1 | 环境变量 |
端口 | port | 8080 | 环境变量 |
协议 | scheme | gRPC | 配置变量 |
权重 | weight | 100 | 配置变量 |
部署组 | deployment | red | 配置变量 |
框架版本号 | frameVersion | 2.0 | 编译变量 |
应用版本号 | appVersion | ahkfasgasdf | 编译变量 |
编译时间 | buildTime | 2020-10-14 10:00:00 | 编译变量 |
启动时间 | startTime | 2020-10-14 11:00:00 | 编译变量 |
通过这些信息,我们能够很方便的获得Provider的基本情况,并对他进行改变。例如可以调节流量比例、调度流量区域、灰度版本、排查应用的版本、编译时间、启动时间。
# 启动一个服务例子
example: