Spring Cloud Tencent 腾讯开源的一站式微服务解决方案

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-contextpolaris 的上下文模块,例如装载 polaris 服务的地址信息等。所有 polaris starter 都依赖此模块
spring-cloud-tencent-polaris-loadbalancerpolaris 的负载均衡模块,用于承载 polaris 的路由插件
spring-cloud-tencent-rpc-enhancementRPC调用增强模块,提供 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值