Spring Cloud Alibaba 生态发展和近期规划 | 学习笔记

简介: 快速学习 Spring Cloud Alibaba 生态发展和近期规划

开发者学堂课程【2022阿里云云原生中间件开发者大会集锦Spring Cloud Alibaba 生态发展和近期规划学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1053/detail/15296


Spring Cloud Alibaba 生态发展和近期规划

 

内容介绍:

一、Spring Cloud Alibaba起源

二、Spring Cloud Alibaba与Spring Cloud 生态关系

三、Spring Cloud Alibaba集成rocketMQ之Spring Cloud Stream

四、回顾与展望

本节课主要来做 Spring Cloud 的生态发展相关的主题分享。希望通过分享,让大家对 Spring Cloud Alibaba 社区目前的情况有更多了解。


一、背景介绍

第一部分 Spring Cloud Alibaba起源。得益于过往数十年处理淘系电商,高并发,大流量业务所积累的技术经验,阿里巴巴内部沉淀了一套包括限流降级,分布式配置注册中心,分布式消息,分布式事务等在内的完整的微服务解决方案。

像下图展示了这些微服务解决方案,比如nacos,sentinel和rocketMQ这些,现在应该都不陌生。

另外阿里云于2015年六月,Spring Cloud第一个正式版本安卓发布后,由于Spring和 Spring boot奠定的用户群体基础,再加上Spring Cloud本身较为完善的解决方案能力和简单易上手的特点,迅速成为为服务技术圈的热点。

随后1到2年发展的事实证明。以Spring Cloud Netflix为代表的基于Spring Cloud规范一整套微服务解决方案,对中小企业技术发展产生了巨大影响,加速了大量中小企业从单体式应用向分布式微服务的转型节奏。当时也是受Spring Cloud Netflix这个项目的启发,考虑到Spring Cloud生态虽然设计理念非常好,但相关的微服务解决方案还并不是十分成熟,部分能力缺失。正好阿里内部其实向刚才介绍的早已经有了一套相对比较完整的解决方案,因此最早参与视频考到Spring Cloud阿里巴巴的几个同事就一拍即合,一起在2018年七月将阿里内部经过十多年技术打磨的一整套微服务解决方案,通过Spring Cloud阿里巴巴的方式贡献给Spring Cloud的生态如图所示image.png

通过Spring Cloud阿里巴巴在配套上一些阿里对外所提供的差异化存储,监控等方面的能力,对很多外部用户来说就可以非常方便低成本的构建微服务应用了。


二、Spring Cloud Alibaba与Spring Cloud 生态关系

介绍完Spring Cloud Alibaba的起源和由来,可能有的同学就会疑问,Spring Cloud AlibabaSpring Cloud Netflix常说的Spring consul之间究竟有什么联系和区别?

然后再第二部分将介绍Spring Cloud Alibaba与Spring Cloud生态关系来解答该问题。

1.两者关系

侧的图,可以看到圆圈内部颜色较深的橙色部分,表示Spring Cloud的,它是在Spring Cloud boot的基础上提供了一套完整的微服务解决方案标准,由一系列相关项目组成,具体包括,比如说open rest time play所定义的分布式rpc调用能力Spring Cloud commons和Spring Cloud config子项目抽象的统一注册配置中心能力。

Spring Cloud Stream子项目定义了分布式信息集成标准和Spring Cloud Creating子项目所定义的的统一限流降级能力等等。基于这些服务中的标准,Spring Cloud Alibaba给予了来自阿里巴巴内部的服务解决方案的实现,不仅给Spring Cloud生态带去了包括像rocketMQ,nacos,sentinel等这些微服务解决方案实现,另外还继承了一些阿里云平台服务,比如说像短信服务sms分布式任务调度schedulex等。Spring Cloud Netflix和Spring Cloud Alibaba跟Spring Cloud的关系是一样的,都是基于Spring Cloud这一整套微服务所定义的标准的一个具体的一个实现。image.png

2.Spring Cloud 子项目对比

目前Spring Cloud生态已经非常庞大和繁荣了,除了Spring Cloud AlibabaSpring Cloud Netflix外,另外像zookeeper和consul都分别以Spring Cloud zookeeper和Spring Cloud consul的项目形式贡献给了Spring Cloud社区,作为其中注册和配置中心解决方案的,一种实现,给予用户更多相关的一个选择。另外像Spring Cloud Kubernetes 也是一个云原生时代,非常有意思的一个子项目,它让Spring Cloud服务可以直接基于国内历史中服务的servies的概念,去调用Kubernetes,构建了微服务。

通过下面这张图对比,可以看到,Spring Cloud Alibaba和Spring Cloud Netflix互为补充Spring Cloud生态完整方面起到了重要的作用,另外,方案在一些组件上,在国内用户的受欢迎程度上超过了很多Spring Cloud 官方默认提供的一些组件,比如像nacos和rocketMQ已经逐渐成为国内分布式注册配置中心和分布式消息的试试标准,广泛应用在大量中小企业的生产环境中。image.png


三、Spring Cloud Alibaba 集成 rocketMQ 之 Spring Cloud Stream

基于前面两小节相关Spring Cloud Alibaba的内容介绍,以后有的同学可能就会产生疑问,原来基于Spring boot框架或者是基Spring框架,也可以用像nacos或者是rocketMQ这些中间件构造微服务应用。而今天所讲的Spring Cloud Alibaba,通过上述的一个中间件来构造服务相比传统的方式,除了在组建的一个完整性方面有优势以外,还有没有其它的一个优点?

接下来,将就Spring Cloud Alibaba基于Spring Cloud Stream规范实现的rocketMQ的使用方式来解答该问题。

1.rocketMQ

首先,简单介绍一rocketMQ。现在的rocketMQ是阿里巴巴中间件团队在2012年自主研发并对外开源的第三代分布式消息引擎。性能低延迟,抗堆积的特性稳定,支撑了历年阿里巴巴双11亿级数据洪峰业务。在2016年,阿里巴巴向阿帕奇软件基金会捐献了rocketMQ 项目。次年2017年rocketMQ 顺利从阿帕奇软件基金会毕业,简单说了一下,rocketMQ 历史

2.rocketMQ架构

来看一下rocketMQ 架构。如图所示。一个生产环境的rocketMQ系统,有name sever 集群,broker集群,生产者集群和消费者集群四个部分组成。image.png

Broker 集群用于存储消息。name sever 集群提供命名服务,它帮助消息生产者将消息发送到特定的 Broker 集群和帮助消费者从特定的Broker集群当中订阅消息

3.rocketMQ 产品特性

rocketMQ作为支撑淘系电商大促的核心中间件之不仅仅在可靠性和吞吐量方面经过了实战考验,优势显著。如下图所列,还提供了两种订阅模式,向广播订阅和集群订阅多种消息发送方式,以及包括普通消息,顺序消息,定时消息,延迟消息和事物消息等在内的多种消息类型。这些消息类型能够很好的帮助业务开发同学轻松的解决特定的一个业务诉求。image.png

4. Spring Cloud Stream

简单介绍了一下rocketMQ后,来看一下Spring Cloud Stream。Spring Cloud Stream作为Spring Cloud 定义的分布式消息解决方案。主要由message,binderbindings三部分组成。

(1)、message

message就是定义了统一的一个消息的一个结构,它能够起到将业务系统当中的一个消息的一个数据,通过这个统一的消息结构传递给特定的一个消息中间件当中的买水机message消息结构。

(2)、binder

然后binder它是Spring Cloud Stream中的的核心。它是负责与外部消息集成,比如说假如要跟rocketMQ集成,需要有一个rocketMQ的binder,如果kafka集成要有一个kafka binder,就是如左边的一个图所示,下半部分的middleware是表示的具体的一个消息中间件,它可以是rocketMQ也可以是kafka或者是sentinel等等,上半部分是使用Spring Cloud Stream连接消息中间件的应用程序。中间部分就是binder,它类似于一个连接器,连接应用程序与具体的消息文件,从而实现应用与外部的一个消息中间件的结偶image.png

(3)、bindings

最后一步,一个关键的内容就是bindings,它是由binder创建的,它主要是负责业务系统,能够与消息中心的一个通信,通过它消息的一个发送者和接收者,就可以将消息发送到binder里面,然后或者是从消息集群当中去订阅消息。

5. Spring Cloud Stream示例程序

最后来看一个程序,示例程序,然后这个程序,它是Spring Cloud Alibaba基于Spring Cloud Stream使用rocketMQ的案例,然后这个例子,也是在Spring Cloud Alibaba项目当中Spring Cloud Alibaba给里面可以找到,然后感兴趣的可以直播下来,也可以去找一下相关完整的程序,然后运行下,感受一下。这个例子中,消息生产者和消息消费者实现消息的发送和接收的代码分别如图中左边和右边所示image.png

它是一个非常简单的一个消息发送和接收的程序。消息生产者循环发送100次消息,消息消费者不断的从broker集群当中拉取消息进行消费,由施力代码所示,就整个程序是基于Spring Cloud Stream中的一个函数式编程的API进行编写,没有任何rocketMQ依赖和仅需在配置文件,就是假如是Spring Cloud的项目的话,就在其中的application runner producer的配置软件当中,配置一下rocketMQ集群当中name sever和Broker,就是集群的一个地址,就可以实现就是消极的一个发送和接收。

讲到这里其实就回答了一开始的问题通过Spring Cloud Alibaba中,基于Spring Cloud Stream实现去使用rocketMQ,比传统的技艺Spring框架去使用Spring boot框架,去使用rocketMQ是能够在代码层面实现消息中间件与业务代码的结偶,就比如说业务通过Spring Cloud Alibaba方式去使用rocketMQ,未来由于一些,就是原因,要替换消息中间件,这个时候,就是开发同学它是不需要去修改具体的业务代码的,仅需替换一下就是项目当中所依赖的一个中间件的依赖和application runner producer配置文件配置的就是相关的,一个集群的地址,然后就可以,就是轻松的,就是切换到其它的消息中间当中去。

通过上面的就是这个例子,现在觉得大家应该就比较清楚了,这Spring Cloud不仅可以帮助更好的构建微服应用,另外在帮助微服务应用跟具体的分布式中间件进行结偶方面也发挥了重要的价值。据了解,其实现在业界还是有很多企业,它是基于使用Spring框架或者使用Spring boot的框架,使用nacos配置中心或者是rocketMQ教育中间件,就是在这里就是建议为了一个业务系统具有比较好的一个后期维护性和比较好的一个生命周期,还是建议大家使用Spring Cloud Alibaba所实现的就是中间件使用方式去接入一个中间件去构建为服务应用。

 

四、回顾与展望

最后介绍一下,Spring Cloud Alibaba社区未来的一个短期发展规划。经过过去三年多接近四年的一个发展Spring Cloud Alibaba,一共发布了27个大版本。stars数目现在已经是达到了就是12.5k,fork和用户数目分别达到了7k和23.7k,这些就是github上面的一个相关的一个数据,其实,已经遥遥领先国内外,甚至Spring Cloud官方一个数据。image.png

2.未来规划

未来Spring Cloud Alibaba社区会通过以下两种方式进一步就是丰富项目的一个能力和促进社区的一个发展

然后,其中第一还是在社区建设方面,会把一些就是工作。然后比如第一点就是从去年下半年开始Spring Cloud Alibaba社区,已经开始定期举办了双周会,就是在每周的一个周四的晚上的八点到九点之间,然后再双周会当中,也会一起讨论,就是项目就github 上面过往两周的一个要求和pr的一些情况,另外在做会中也会组织一些像周边相关的一个主题内容的分享,然后周会信息的话一般会在Spring Cloud Alibaba交流群中进行同步。

然后,在这里感兴趣的同学可以到,就是Spring Cloud Alibaba各github项目的主页当中去找到相关的一个钉钉交流群,然后并申请加入,以便后续就是可以加入到一个社区双周会的讨论中来,另外的话,今年社区也联合中科院和阿里巴巴开源办公室,举办了开元之下和变成之下等活动,针对在校生同学就是通过暑期两到三个月的时间,在社区的导师的一对一带领下,完成这种某些事,然后最后,如果完成之后再把这些项目贡献给社区,然后这个的话也是,为广大的一个在校同学提供接触开元社区,了解开元项目提供更多的机会,最后就是受疫情影响,线下举办github,就这一两年的话是比较困难的,然后像这次大会一样,也会就是找一些时间,举办一些线上的峰会,为社区内外同学就是提供更多的一个交流机会。

然后讲完了社区建设,然后另外在社区项目的一个发展规划方面就是,如果说Spring Cloud Alibaba过去的第一阶段工作是丰富十分靠的生态,然后让广大外部用户能够轻松的拥抱微服务,未来就是在第二阶段的话,Spring Cloud Alibaba会通过自身努力,让外部的用户用好服务,构建微服务治理和业务高可用相关能力,满足用户在微服务使用过程当中的这些诚挚的一个诉求。具体的话就是像图中展示的,会通过全面支持rocketMQ5.0和sentinel2.0等等一些中间件给用户带来更丰富的一个中间件的使用体验,image.png

另外的话,社区的话也会投入一定的力量构建Spring Cloud的生态的微服微服务治理能力,微服务高可用和分布式任务调度等方面的一个能力。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3天前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
1月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
4天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
365 5
|
29天前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
54 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
1月前
|
人工智能 前端开发 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 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
478 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
1月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
1天前
|
人工智能 前端开发 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”即可获取源码。 🎯主要目标:
|
1月前
|
设计模式 Java 程序员
学习 Spring 源码的意义是什么呢?
研究Spring源码能深化框架理解,提升代码分析与设计能力,助您掌握设计模式及最佳实践,增强解决问题的效率,促进职业生涯发展,并激发技术热情。选择稳定版本,从核心模块开始,结合实际项目并参与社区,让学习之旅既充实又具乐趣。
|
1月前
|
Dubbo Java 调度
揭秘!Spring Cloud Alibaba的超级力量——如何轻松驾驭分布式定时任务调度?
【8月更文挑战第20天】在现代微服务架构中,Spring Cloud Alibaba通过集成分布式定时任务调度功能解决了一致性和可靠性挑战。它利用TimerX实现任务的分布式编排与调度,并通过`@SchedulerLock`确保任务不被重复执行。示例代码展示了如何配置定时任务及其分布式锁,以实现每5秒仅由一个节点执行任务,适合构建高可用的微服务系统。
52 0
|
1月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】