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
相关文章
|
15天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
9天前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
35 9
|
29天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
30天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
23天前
|
消息中间件 自然语言处理 Java
知识科普:Spring Cloud Alibaba基本介绍
知识科普:Spring Cloud Alibaba基本介绍
55 2
|
29天前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
34 9
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
30天前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
19 1
|
1月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
56 2
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
86 1