基于 OpenSergo 标准构建 Spring Cloud Alibaba 流量路由能力(二)| 学习笔记

简介: 快速学习基于 OpenSergo 标准构建 Spring Cloud Alibaba 流量路由能力

开发者学堂课程【基于 OpenSergo 标准构建Spring Cloud Alibaba 流量路由能力 :基于 OpenSergo 标准构建 Spring Cloud Alibaba 流量路由能力(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1213/detail/18213


基于 OpenSergo 标准构建 Spring Cloud Alibaba 流量路由能力


三、opensergo 流量路由 v1alpha1 标准介绍

下面就是这节课的重点,就是 opensergo 的流量路由的 spec 的标准,以及在 Spring cloud alibaba 中的实现,首先是在流量治理的标准化的探索,希望通过右边的 spec 来对流量进行路由,

image.png

将流量路由的规则分为两个模块,首先第一部分是 traffirouterrule,目的就是对符合条件的流量进行匹配与路由,第二是 virtualworkloads,对符合条件的 workload 进行划分,看图,对于 x- user- Id;12345的流量路由至 l abel :gray 的 workload 上面,同时对 deployment:A-gray 以及 B-grey 这两个 deployment,这里可以是java,也可以是 Go 的应用,甚至可以是数据库的实例,或者说数据库的表,它其实是虚拟的,工作复杂的抽象,然后可以对workload 进行标记,比如,label:gray 这样的标记,这样的规则可以有映射关系,将 X-User-id:12345的流量路由至 label:grey 的 workload 中,即 Deployment:A-grey,B-grey 中,从而实现流量路由的能力,看右边,是opensergo 传媒 traffic root 的标准,只需 uplate,就能实现这样的服务,可以把它的 http 的 name 等,培训参数为深圳的的请求,路由至v2版本中,不符合条件的流量,可以将它默认的路由至 target,是 workload 的版本中,

image.png

以上是流量路由的场景,表明需要将目标的流量路由至具备相应特征的工作负载中,是这样的规则。在过程应该如何实现,首先需要刚才提到的右边  CRD,然后把 CRD 下发至 opensergo 的 plane,经 gRPC 转化成对应框架里识别的 config,先转换成 opensergo 的 config,然后经过 gRPC 通路下发至对应的 opensergo 中的 SDK 中,框架层通过 low- level config,可以很方便的对接 opensergo,alibaba 也是这么做的。下面是 Spring cloud alibaba 流量路由支持收购的完整的电路,简单做讲解,介绍完之后会进行简单的 demo,

image.png

可以看到目前当用户或者在控制台配置或者是 apply YAML,即 CRD 时,API serve 会把配置转换给 opensergo 的控制面,会根据对应 app 以及规则形式下发给 opensergo 的 SD K,SDK 会将 trafficrouterule 的配置转换成 SCA 中所识别的配置类型,能同时把工作负载中的标记也会下发至服务端的 opensergo 的 SDK 中,同时在服务注册时,会把标记给带上,流程结束。

下面进行简单的演示。可以看到下图是 alibaba 的 provider,

image.png

provider 是 v1 版本,另是 v2 版本,还有 consume,重新写这个 consume,

image.png

consume 重写只需要增加 opensergo 的模块依赖,这个过程是通过对接 opensergo 的 SDK,来监听 opensergo 的控制面的数据,下图是 opensergo 的控制面

image.png

是流量路由的 spec,重复使用,对 header,name,location 的值进行使用,然后看 Spring cloud 的 consume,通过 opensergo 的 Java SDK,收到刚才下发的配置,会在 SCA中生效,接下来来简单的验证一下,直接访问没有条件的流量可以看到访问的默认版本 v1,如果访问的是name的xiaoming,地址深圳,可以看到访问的版本是v2,通过这样简单流程就实现了流量路由的能力,name:xiaoming,location:cn-shenzhen 等请求会路由至v2版本,如果没有带条件就会至v1版本。通过简单的 demo,就演示 Spring cloud alibaba 的框架,通过集成 opensergo 的 SDK 就能具备流量路由,并且通过 opensergo 的流量路由的规则下发,就能按照需求来进行流量路由的能力。

展望与总结

一方面会介绍一下 opensergo 近期社区的进展以及 Mse 服务治理的 opensergo 对应的云产品,Mse 服务治理里的发展,然后也会进行简单的 Spring cloud alibaba 后期的在服务治理方面的规划。

首先先同步一下近期的社区的进展,首先 v 1alpha1 spec 发布,覆盖流量路由,流控降级与容错等微服务治理领域。opensergoSDK/operator 已和社区共同设计结构与方案,Java/Go SDK 及 operator 骨架搭建中,目前已具备初步对接能力。最后,cloudWeGo, kitex,krators,Spring cloud Alibaba,APISIX 等社区对接中,opensergo 流控CRD 与 sentinel Go demo 对接,演示完成。目前可以说阿里巴巴的流量路由的 CRD 的功能的 demo 演示完成了。

第二,重新讲一下开源框架通过 opensergo SDK 对接治理标准的方式,是 opensergo 的 SDK 提示在这里提供了订阅配置和获取配置的 API,框架接入 SDK 并且监听接受 opensergo 的标准配置,并且基于收到的配置对接到框架现有层面的流量治理的能力中,同时 openserge operator 作为控制平面,承载由 opensergo K8sCRD 到 low-level config 的转换,以及配置的监听管理与下发到 SDK 的链路 。框架对接的事例比如像 Go 语言的话题,只需要加initopensergo,然后 subscribeconfig 添加 listener 就可以拿到

opensergo的配置,能转化成框架自身已有的能力,从而实现复制品能力的对接。

image.png

另外介绍开源框架通过 sentinel 对接流量治理标准实现,sentinel2.0 作为流量治理标准的实现,会自带 opensergo流量治理的对接模块,社区可以直接通过对接 sentinel 或提供 sentinel adapter 快速对接 opensergo 流量治理的标准生态中,同时也可以利用 sentinel 的流量治理与容错的能力来保障稳定性。

image.png

image.png

最后是 opensergo 的社区展望,目前已经完成流量路由,流控降级的 spec 建设,最近会提出流量染色,数据库治理,离群实力摘除,流控服务协议等能力的 spec,在年底,会提供配置发现,缓存以及服务发现等安全治理等领域的 spec,当然这些都是从微服视角出发的能力,明年可能会面向更多的依赖的组件,分布式任务治理,MQ 治理,日志治理,多语言互通等方面领域的 spec,在社区合作方面近期与阿里巴巴已经完成了柳园路与能力落地,还有更多sentinel,kratos 等,目前都是紧密对接过程中。

image.png

最后提一下 opensergo 开放共建,是 spec 与  SDK 的演进其实离不开各个社区与各个企业的共建,可以参与进来建设 opensergo spec 的完善与共建,可以基于企业或者社区或者是微服务治理的场景与最佳实践,可以一起讨论来制定与完善微服务制定的标准,也可以参与到 SDK 的贡献中,opensergo operator 的共建以及各个语言的 opensergo SDK 的贡献,最后是社区生态的贡献,给贡献各个社区生态对接 opensergo 的代码,模块,文档以及整体的opensergo 文档。

最后是 opensergo 服务治理标准所对应的源上的产品,就是 Mse 服务治理,提供了全链路全方位的服务治理,从前端请求到网关再到后端应用,再到下游依赖,各个点位都提供了完整的服务治理能力比如全链路灰度以及在应用发布的服务治理里的各个阶段,比如像开发态,有服务测试还有互联等能力,以及在测试态,服务测试。发布态,全链路灰度,无损上下线,在运行态有流量降级,及时隔离或摘除,日志治理等等能力,同时面向各个组件,比如面向数据库,数据库的治理能力,微服务面向数据库的治理,比如满 SQL 的治理,数据库访问流量的分离,路由与分离,可以实现读写分离的能力以及面向其它服务的服务,不稳定第三方服务探测,融断与隔离,面向缓存热点 key 击穿防护等全部能力,这些能力目前都是跟 opensergo 紧密关联,会符合 opensergo 服务治理的标准。

image.png

相关文章
|
8天前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
2月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
2月前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
583 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
21天前
|
存储 数据采集 Java
Spring Boot 3 实现GZIP压缩优化:显著减少接口流量消耗!
在Web开发过程中,随着应用规模的扩大和用户量的增长,接口流量的消耗成为了一个不容忽视的问题。为了提升应用的性能和用户体验,减少带宽占用,数据压缩成为了一个重要的优化手段。在Spring Boot 3中,通过集成GZIP压缩技术,我们可以显著减少接口流量的消耗,从而优化应用的性能。本文将详细介绍如何在Spring Boot 3中实现GZIP压缩优化。
65 6
|
1月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
53 7
|
27天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
58 2
|
6天前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
16 0
|
2月前
|
Java 微服务 Spring
驾驭复杂性:Spring Cloud在微服务构建中的决胜法则
【8月更文挑战第31天】Spring Cloud是在Spring Framework基础上打造的微服务解决方案,提供服务发现、配置管理、消息路由等功能,适用于构建复杂的微服务架构。本文介绍如何利用Spring Cloud搭建微服务,包括Eureka服务发现、Config Server配置管理和Zuul API网关等组件的配置与使用。通过Spring Cloud,可实现快速开发、自动化配置,并提升系统的伸缩性和容错性,尽管仍需面对分布式事务等挑战,但其强大的社区支持有助于解决问题。
42 0
|
2月前
|
监控 Java API
Spring Boot中的异步革命:构建高性能的现代Web应用
【8月更文挑战第29天】Spring Boot 是一个简化 Spring 应用开发与部署的框架。异步任务处理通过后台线程执行耗时操作,提升用户体验和系统并发能力。要在 Spring Boot 中启用异步任务,需在配置类上添加 `@EnableAsync` 注解,并定义一个自定义的 `ThreadPoolTaskExecutor` 或使用默认线程池。通过 `@Async` 注解的方法将在异步线程中执行。异步任务适用于发送电子邮件、数据处理、外部 API 调用和定时任务等场景。最佳实践中应注意正确配置线程池、处理返回值和异常、以及监控任务状态,确保系统的稳定性和健壮性。
31 0
|
2月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
下一篇
无影云桌面