Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。
Spring Cloud Tencent 实现了Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 云原生分布式应用。
Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 PolarisMesh ,实现各种分布式微服务场景。
一、 PolarisMesh 是什么?
北极星是腾讯开源的服务治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题,针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。下面介绍北极星的应用场景、功能特性、系统组件和常见问题。支持多语言、多框架的云原生服务治理平台,服务管理、流量管理、故障容错、配置管理、可观测性。
1.1 一站式服务治理平台
北极星为服务治理提供一站式解决方案,覆盖服务注册中心、服务网格和配置中心的功能,提供业务监控、流量监控、事件中心和操作记录等全方位的可观测性能力,帮助用户快速构建微服务架构。
1.2 支持异构技术栈和环境
通过 Proxyless 和 Proxy 两种形态实现服务发现和治理,提供多语言 SDK、开发框架、Java Agent 和网格代理等接入方式,支持虚拟机、容器和混合云等部署环境,满足不同业务场景和开发模式。
1.3 支持常用开发框架
提供 Spring Cloud,Dubbo 和 gRPC 等开发框架无缝集成北极星的依赖包,使用开发框架的用户不需要改动业务代码即可接入。
1.4 兼容 Kubernetes
提供 K8s Controller,支持 K8s 服务注册和网格代理注入,可以实现 K8s 和非 K8s 服务、多个 K8s 集群之间的服务发现和治理。
二、具备那些功能?
北极星具备服务管理、流量管理、故障容错、配置管理和可观测性五大功能:
服务管理
:包含服务发现、服务注册、健康检查和元数据管理。- 服务发现:支持 HTTP、SDK 和 DNS 服务发现方式。
- 服务注册:支持 HTTP、SDK、控制台操作和 K8s 服务注册方式。
- 健康检查:支持服务实例上报心跳,通过心跳判断实例是否健康,及时剔除异常实例。
- 元数据管理:支持在服务和实例上配置协议、版本和位置等标签,实现动态路由等功能。
流量管理
:包含动态路由、负载均衡和访问限流。- 动态路由:支持自定义路由策略,将服务的部分请求路由到部分实例,用于灰度发布等应用场景。
- 负载均衡:支持权重轮训、权重随机和权重一致性 Hash 等负载均衡算法。
- 访问限流:支持本地和分布式两种模式,被限流的请求支持排队和自定义响应。
故障容错
:包含服务熔断和节点熔断。- 服务熔断:对服务或者接口进行熔断,如果服务或者接口发生熔断,返回自定义响应。
- 节点熔断:对服务实例进行熔断,不会将请求路由到熔断的服务实例,降低请求失败率。
- 主动探测:服务和节点熔断除了被动探测,还支持主动探测,进一步降低请求失败率。
配置管理
:包含配置变更、配置校验、版本管理和灰度发布等功能。可观测性
:提供业务流量、系统事件和操作记录等监控视图。
北极星的功能需要控制面和数据面配合实现:
控制面
:负责服务和配置数据的管理和下发,负责流量管理和熔断降级策略的管理和下发。数据面
:负责全部服务发现和治理功能的客户端实现,采用插件化设计,支持按需加载和使用。
数据面功能分为三个部分:
服务作为被调
:当一个服务被其他服务调用时,可以使用服务注册、上报心跳、访问限流和访问鉴权功能。服务作为主调
:当一个服务调用其他服务时,可以使用服务发现、动态路由、负载均衡和熔断降级功能。公共部分
:支持拉取配置数据和上报监控数据
三、 包含那些组件
北极星的系统组件分为控制台、控制面和数据面三个部分:
控制台
:提供简单易用的管理页面,支持用户和权限管理。控制面
:包含核心组件 Polaris 和可选的功能组件,核心组件可以满足绝大部分业务需求,可选的功能组件按需部署。数据面
:提供多语言 SDK、开发框架、Java Agent 和网格代理四种形态的实现,满足不同的业务场景和开发模式,支持异构服务的互联互通和统一治理。
控制面组件:
Polaris
:支持各种形态的数据面接入,支持服务和配置数据的管理和下发,支持流量管理和熔断降级策略的管理和下发,可以覆盖服务注册中心、服务网格控制面和配置中心的功能。Polaris Controller
:可选的功能组件,支持 K8s 服务同步和网格代理注入。K8s 服务同步将 K8s 服务按需同步到北极星,用户不需要在应用程序里显式地注册服务。网格代理注入按需在应用程序 Pod 里注入北极星 Sidecar,以流量代理的方式实现服务发现和治理功能。
数据面组件:
SDK
:北极星提供轻量级的多语言 SDK,使用方法和绝大部分客户端软件类似,用户在应用程序里引入北极星 SDK。这种数据面形态以无流量代理的方式实现服务发现和治理功能,没有额外的性能和资源损耗,不会增加现网运维和问题定位的成本。开发框架
:北极星 SDK 可以被集成到开发框架内部,如果用户使用开发框架,不需要显式地引入北极星 SDK。对于 Spring Cloud、Dubbo 和 gRPC 等开发框架,北极星提供可以无缝集成的依赖包。另外,go-micro、go-kratos、go-zero、GoFrame 和 CloudWeGo 等开发框架社区也提供北极星插件。Java Agent
:对于 Spring Cloud 和 Dubbo 等 Java 开发框架,北极星支持 Java 生态常用的 Agent 接入模式。用户只需要在应用程序的启动命令中引入 Polaris Java Agent,即可将北极星的服务发现和治理功能引入应用程序,不需要改动任何代码和配置文件。网格代理
:北极星网格代理在应用程序 Pod 里注入 Polaris Sidecar 和 Proxy,前者通过劫持 DNS 解析将请求转到后者,后者通过流量代理实现服务发现和治理功能。这种数据面形态适合性能和资源损耗不敏感的业务,要求业务具备网格代理的运维能力。
四、环境体验
-
管控台地址:
http://14.116.241.63:8080/
- 账号:polaris
- 密码:polaris
-
控制面地址:
grpc://183.47.111.80:8091
spring-cloud-tencent-example
下 example 地址都默认指向了体验服务地址(grpc://183.47.111.80:8091
),如果您只是体验 Spring Cloud Tencent,可直接一键运行任何 example。
五、项目概览
5.1 pom 结构图
5.2 模块依赖图
5.3 模块说明
模块名 | 模块说明 |
---|---|
spring-cloud-tencent-commons | 所有模块的基础模块,定义最核心的工具类,数据模型 |
spring-cloud-tencent-plugin-starters | 插件模块,提供常见场景的快速应用 |
spring-cloud-tencent-polaris-context | polaris 的上下文模块,例如装载 polaris 服务的地址信息等。所有 polaris starter 都依赖此模块 |
spring-cloud-tencent-polaris-loadbalancer | polaris 的负载均衡模块,用于承载 polaris 的路由插件 |
spring-cloud-tencent-rpc-enhancement | RPC调用增强模块,提供 Feign、RestTemplate 的增强拓展功能 |
spring-cloud-starter-tencent-metadata-transfer | 扩展 feign 的能力,自动在链路上传递元信息。例如用于路由标签信息传递、tracer上下文信息传递等 |
spring-cloud-starter-tencent-polaris-discovery | 北极星的服务发现模块 |
spring-cloud-starter-tencent-polaris-ratelimit | 北极星的限流模块 |
spring-cloud-starter-tencent-polaris-circuitebreaker | 北极星的熔断模块 |
spring-cloud-starter-tencent-polaris-router | 北极星的路由模块 |
spring-cloud-starter-tencent-polaris-config | 北极星的配置中心模块 |
5.4 目录结构
spring-cloud-tencent
|
-- pom.xml
|
-- spring-cloud-tencent-dependencies
|
-- spring-cloud-tencent-examples
|
-- spring-cloud-tencent-commons
|
-- spring-cloud-tencent-polaris-context
|
-- spring-cloud-tencent-polaris-loadbalancer
|
-- spring-cloud-starter-tencent-metadata-transfer
|
-- spring-cloud-starter-tencent-polaris-discovery
|
-- spring-cloud-starter-tencent-polaris-ratelimit
|
-- spring-cloud-starter-tencent-polaris-circuitbreaker
|
-- spring-cloud-starter-tencent-polaris-router
|
-- spring-cloud-starter-tencent-polaris-config
|
-- spring-cloud-tencent-rpc-enhancement
|
-- spring-cloud-tencent-plugin-starters
|
-- spring-cloud-tencent-featureenv-plugin
|
-- spring-cloud-tencent-gateway-plugin
六、 开源地址
github: https://github.com/Tencent/spring-cloud-tencent
gitee: https://gitee.com/Tencent/spring-cloud-tencent