鹅长微服务发现与治理巨作PolarisMesh实践-上( 三 )


  • RPC调用过程的参与者主要涉及两个角色:主调方和被调方 。
  • 首先,被调方使用服务注册功能 , 向北极星注册自身服务数据,包括节点列表,治理规则等 。
  • 第二,主调方通过服务发现功能,拉取被调方的全量服务数据 。
  • 第三,主调方通过路由和负载均衡功能,筛选出一个合适的被调方实例,进行RPC调用 。
  • 第四,主调方记录RPC调用的成功失败结果,通过熔断降级功能,剔除出现故障的被调方节点 。
  • 第五 , 北极星通过健康检查功能,主动剔除已经下线的被调方节点 。
  • 第六,被调方通过访问限流功能 , 保护自身不被主调方的异常流量给击溃 。
服务注册服务注册指的是被调方按照服务模型将自身的服务数据注册到PolarisMesh , 以供主调方进行服务发现 。服务数据主要包括以下部分:
  • 服务名:服务的唯一标识,区分大小写 。
  • 服务元数据:服务的标签信息 , KV格式,可对服务进行分类 , 可用于过滤 。
  • 服务实例:提供服务的节点列表,以IP:PORT的方式提供 。
  • 服务实例元数据:服务实例的标签信息,KV格式,通常用于描述节点的集群、版本等,用于后续流量治理等操作 。

鹅长微服务发现与治理巨作PolarisMesh实践-上

文章插图
支持以下4种服务注册方式:
  • 通过SDK注册:北极星提供了多语言SDK,服务可以通过集成SDK,调用registerInstance接口完成服务注册 。
  • 通过服务框架注册:服务一般与服务框架集成(比如Spring Cloud Tencent (opens new window)) , 框架本身会提供服务自动注册功能,服务启动后,框架会将服务信息自动注册到北极星 。
  • 通过k8s同步的方式注册:用户通过k8s部署服务,并注册为k8s的service,北极星通过controller的机制,从k8s中将service和endpoint信息同步到北极星 , 完成服务注册 。
  • 通过OpenAPI注册:北极星控制面提供基于Rest标准的OpenAPI,用户可通过OpenAPI完成服务注册的操作 。
服务发现服务发现指的主调方是根据服务名标识,拉取服务实例列表,以供后续进行服务调用的操作 。
鹅长微服务发现与治理巨作PolarisMesh实践-上

文章插图
支持以下4种方式进行服务发现:
  • 通过SDK服务发现:北极星提供了多语言SDK,服务可以通过集成SDK,调用getAllInstances接口完成全量服务列表拉取 。
  • 使用框架服务发现:北极星支持对接多个主流的服务框架(比如Spring Cloud Tencent (opens new window)),主调方服务通过服务框架进行发现RPC请求,即可通过框架内部扩展机制使用北极星服务发现能力 。
  • 使用sidecar服务发现:北极星提供服务网格能力 , 服务程序可以基于sidecar的方式,通过DNS或者流量拦截,进行服务发现 。
  • 使用OpenAPI服务发现:北极星控制面提供基于Rest标准的OpenAPI , 用户可通过OpenAPI完成服务发现的操作 。
安装部署架构由于单机安装比较简单,我们这里就直接选择集群安装,准备好两台部署服务器,而MySQL、Redis、Promethes的安装可以参考前面对应的文章 , 这里就直接使用 。
鹅长微服务发现与治理巨作PolarisMesh实践-上

文章插图
组件类型功能说明polaris最新stable版本系统组件服务治理控制面polaris-console最新stable版本系统组件服务治理控制台MySQL>= 5.7第三方依赖服务数据存储Redis>=4.0第三方依赖心跳状态数据缓存Prometheus>=2.28.0第三方依赖可观测性集群安装
  • 初始数据导入
# 下载polaris最新版本v1.12.1wget https://github.com/polarismesh/polaris/releases/download/v1.12.1/polaris-server-release_v1.12.1.linux.amd64.zip# 下载polaris-console最新版本v1.9.1wget https://github.com/polarismesh/polaris-console/releases/download/v1.9.1/polaris-console-release_v1.9.1.linux.amd64.zip# 解压polaris-serverunzip polaris-server-release_v1.12.1.linux.amd64.zip# 解压polaris-consoleunzip polaris-console-release_v1.9.1.linux.amd64.zip# 进入polaris-server目录cd polaris-server-release_v1.12.1.linux.amd64# 执行mysql脚本导入到mysql数据库mysql -u root -p 123456 -h 192.168.50.100 < store/sqldb/scripts/polaris_server.sql将文件拷贝到两台服务器上,下面操作两台一样