Spring Cloud Tencent 概述

网友投稿 275 2022-09-24

Spring Cloud Tencent 概述

文章目录

​​1.Spring Cloud Tencent 模块详细介绍​​

​​1.1 服务注册与发现 (Spring Cloud Tencent Polaris Discovery)​​​​1.2 配置中心 (Spring Cloud Tencent Polaris Config)​​​​1.3 服务路由 (Spring Cloud Tencent Polaris Router)​​​​1.4 服务限流(Spring Cloud Tencent Polaris Ratelimit)​​​​1.5 服务熔断(Spring Cloud Tencent Polaris Circuitbreaker)​​

1.Spring Cloud Tencent 模块详细介绍

目前 Spring Cloud Tencent 主要提供了微服务领域常见的服务注册与发现、配置中心、服务路由、限流熔断以及元数据链路透传能力。接下去会详细介绍每一部分的能力。

服务注册和发现动态配置管理

服务治理服务限流服务熔断服务路由

1.1 服务注册与发现 (Spring Cloud Tencent Polaris Discovery)

服务注册与发现是 Spring Cloud Tencent 最为核心的功能之一,通过实现 Spring Cloud 的服务注册与发现的标准接口,提供微服务应用快速接入北极星服务注册中心的能力。开发者通过简单的引入 Spring Cloud Tencent 服务注册与发现的依赖,即可使用北极星的服务注册与发现功能。接入服务注册与发现之后,还能按需使用北极星提供的强大服务治理能力,例如场景化的服务路由能力、服务熔断能力等。方便开发者针对微服务的实际生产场景作出个性化的服务治理配置。

北极星的服务模型包括命名空间、服务和服务实例。

​​命名空间​​ 命名空间提供了一种在同一个注册中心下资源的逻辑隔离的机制,同一命名空间下的服务命名必须唯一,但是跨命名空间允许存在同名的服务。命名空间常用于区分不同的环境或者多个业务之间的服务隔离。​​服务​​ 服务也是逻辑的概念,提供一个特定业务领域的服务能力。例如订单服务,用户服务,转账服务等。​​服务实例​​ 服务实例是服务下的一个具体的物理节点。

​​Spring Cloud Tencent ​​​在基础的服​​务注册发现​​​上,提供了一些​​拓展能力​​​。首先,​​Spring Cloud Tencent​​ 集成了北极星的一些路由插件,通过在北极星控制台页面更改服务实例的隔离状态或者权重值,都可以实现服务实例的动态上下线的特性,如上图所示。

​​Spring Cloud Tencent​​​ 还提供了​​多服务注册与发现的进阶功能​​。举个例子,公司内部多个部门或组织使用了不同的服务注册中心,当决策技术栈统一或是迁移到北极星注册中心时,需要使用平滑的方式进行业务改造,而非直接替换原有的 SDK 接入北极星注册中心。此时可以使用 Spring Cloud Tencent 的多服务注册与发现的能力,帮助开发者的微服务应用过渡技术栈转换的尴尬期。

​​Spring Cloud Tencent​​ 提供的这样一系列针对服务注册与发现的周边功能,完善了微服务架构的治理与管控能力。

1.2 配置中心 (Spring Cloud Tencent Polaris Config)

北极星配置中心核心配置三元组模型为:

​​Namespace​​ 用于逻辑隔离集群的能力,例如常用于隔离环境。​​FileGroup​​ 配置文件组,一组配置文件的集合。在 Spring Cloud Tencent 里,我们推荐的最佳实践是一个应用为一个 FileGroup。对于框架类的配置,以框架名作为一个 FileGroup, 例如 dubbo。​​File​​ 配置文件,例如 properties 、yml 格式的配置文件。配置文件为最小管理单元,而不是配置文件里的配置项。

[Namespace, FileGroup, File] 唯一定位一份配置文件。我们在设计模型的时候,参考了业界主流的配置中心产品,我们认为配置文件、配置文件组的概念,是开发者广泛认知且理解成本最低的配置领域模型,例如本地磁盘的文件夹和文件的概念。

配置中心核心能力是配置管理能力以及动态实时推送能力。在配置管理方面,一个应用往往具有非常多的配置文件,如何清晰的管理配置文件是一个非常重要的能力。我们在管控台设计 UI 时,开创性的把文件名以 / 作为分隔符树状形式展示。如下图所示,可以按应用模块划分目录,通过目录方式能够清晰管理一个应用下杂乱的配置文件。

1.3 服务路由 (Spring Cloud Tencent Polaris Router)

在微服务领域,由于服务做了细粒度的拆分部署服务变的非常的轻量灵活。在结合 k8s 云原生极速弹性能力之后变的更加的强大。但是底层的 Paas 能力只是提供了基础弹性能力,真正发挥能力需要依赖上层的流量调配的能力。

放眼 Spring Cloud 生态,能够深度整合 Spring Cloud 提供场景化服务路由能力的组件套件并不多。这里解释一下场景化,服务调用框架根据一定的规则实现服务路由的能力我们称之为底层原子能力。原子能力是非常通用的能力,但是很多时候并不能直接用于具体的业务场景。例如常见的测试环境分组,就近路由,蓝绿发布等称之为场景。服务路由只有做了场景化之后,才能真正做到开箱即用服务于业务。

Spring Cloud Tencent Polaris Router 目前实现了两种场景化的路由能力以及一种非常灵活的规则路由的能力。

元数据路由规则路由

元数据路由

服务实例都会附属一组元数据,例如环境信息,机房信息等等。元数据路由简单的讲就是以元数据信息作为路由的依据进来路由。这样讲还是有些抽象,我们以一个测试环境例子来解释一下。

使用 Spring Cloud Tencent 为了达到以上的目的,只需要每个服务部署的时候,增加以下两个环境变量即可实现。

SCT_METADATA_CONTENT_ENV=dev1SCT_METADATA_CONTENT_TRANSITIVE=ENV

Spring Cloud Tencent Polaris Router 组件会自动读取以上环境变量,并在每次服务调用时优先调用到跟当前实例 ENV 值一样的目标实例。

规则路由

元数据路由本质上是基于服务实例的元数据进行筛选,是为了支持具体特定的场景而内置的服务路由能力。无需下发任何路由规则,使用起来非常简单。

而实际业务场景非常复杂,例如以下几种典型的业务场景:

内部员工路由到一套生产灰度环境,外部普通用户则路由到生产正式环境VIP 客户路由到一套高保环境,普通客户路由到普通环境

以上两种业务场景,则无法通过元数据路由实现。因为涉及到业务请求参数,而不是系统维度的环境变量。规则路由就是用于满足复杂业务场景而实现的一套基于规则的服务路由实现。

Spring Cloud Tencent 内置了一套表达式标签规则,自动从 HTTP 请求中解析标签值。目前支持的表达式规则有:

${Campus、同 Zone、同 Region 的优先级从高到低依次选取目标服务实例。核心是减少服务调用因物理距离增加的网络耗时。本质上,就近路由是一种基于特定一组位置元数据的元数据路由。

通过 Spring Cloud Tencent 实现就近路由,只需要在服务实例上打上以下环境变量即可。

SCT_METADATA_CAMPUSSCT_METADATA_ZONESCT_METADATA_REGION

1.4 服务限流(Spring Cloud Tencent Polaris Ratelimit)

随着业务发展的日益壮大,网络请求量也越来越多,导致在某些场景下,业务应用的服务端会出现爆发式的流量涌入,因此需要对服务提供方的给予一些保护手段。通过服务限流功能,开发者可以通过控制 QPS 的方式,以避免被瞬时的流量高峰冲垮,从而保障系统的高可用性。服务限流主要有两个应用场景, 过载保护 和 业务防刷 。​​过载保护​​​是​​保护业务​​不被突发流量打垮,业务防刷是防止恶意用户发送过多流量影响其他正常用户。Spring Cloud Tencent 内置了针对 Spring Web 和 Spring WebFlux 场景的限流 Filter 帮助业务快速接入北极星的限流能力。

Spring Cloud Tencent 支持北极星提供的两种类型的服务限流能力,即​​单机限流​​​与​​分布式限流​​。

单机限流

单机限流是针对单个被调实例的级别的限流,流量限额只针对当前被调实例生效,不共享,如下图所示。单机限流一般适用于保护服务自身不被打垮,按照每个服务集群单机的容量来计算配额。

单机限流的效果分为 快速失败 和 匀速排队 。快速失败指的是当 QPS 到达限流规则指定的配额时,立刻返回一个限流类型错误响应给所有超过阈值的请求。而匀速排队是一种基于漏桶算法实现的削峰填谷限流方式,帮助服务端能够在流量洪峰到达时,还能保证一个匀速处理的状态,让一部分请求在一段排队等待时间后还能被处理,而不是直接失败。

分布式限流

分布式限流是针对服务下所有实例级别的限流,多个服务实例共享同一个全局流量限额,如下图所示。分布式限流一般适用于保护第三方服务或者公共服务(比如保护数据库);或者是在网关层进行限流,对通过网关接入的后端服务进行保护。

1.5 服务熔断(Spring Cloud Tencent Polaris Circuitbreaker)

在微服务架构的运维场景下,有时候会遇到单点服务实例故障的情况,如果不能及时剔除,那么仍旧会有请求转发到故障的服务实例上。Spring Cloud Tencent 提供了服务熔断的能力,通过上报每次服务间调用的结果,判断被调方服务是否出现故障,进而将其屏蔽,并启动定时任务对熔断实例进行探活。在达到恢复条件后对其进行半开恢复。在半开恢复后,释放少量请求去进行真实业务请求探测。并根据真实业务探测结果去判断是否完全恢复。这个功能能有效剔除异常的服务实例,为服务治理提供了重要的帮助。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot+nodejs+vue高校就业信息管理系统
下一篇:营销最前线:阿里创新智能营销平台金投赏:以超级汇川帮助广告主更好增长!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~