欢迎来到彩壳资讯
彩壳资讯
当前位置:彩壳资讯 > 数码

从Netflix到阿里巴巴,Spring Cloud更好吗?

日期:2023-09-28 09:12

自2015年3月推出以来,Spring Cloud迅速成为Java微服务生态中开发者的首选技术栈。 Spring Cloud在Spring Boot的基础上保留了Java开发习惯,增加了分布式特性,并提供了一系列通用工具来帮助开发者快速构建分布式系统中的一些通用模式。它现在已经成为使用最广泛的微服务。结构之一。

2017年,阿里巴巴在Spring Cloud的基础上推出了Spring Cloud阿里巴巴,并正式进入Spring Cloud孵化器并于2019年7月正式毕业。目前Github上有超过13000个项目使用Spring Cloud Ali。

“希望Spring Cloud阿里巴巴能够成为所有Spring Cloud实现的首选。” Spring Cloud Ali 创始团队成员方剑认为,由于其组件优势,Spring Cloud Ali 是最容易取代 Spring Cloud Netflix 的实现。

Spring Cloud阿里巴巴有哪些优势? SpringCloud未来将如何发展?为了进一步了解 Spring Cloud 生态发展现状及未来发展,我们邀请了 Spring Cloud 阿里巴巴创始团队成员、《深入理解 Spring Cloud 与实战》作者 方剑 为大家讲述 Spring Cloud 生态与实战。

4 5日至11日,方剑还将做客专家问答专栏讨论Spring Cloud 有关以下问题预计!

Q:首先请您自我介绍一下。

A:大家好,我叫方剑,我的昵称是罗爷。我是Spring Cloud阿里巴巴创始团队成员的同学,也是《深入理解 Spring Cloud 与实战》一书的作者。

目前在阿里云从事微服务相关工作。对微服务感兴趣的同学可以一起交流。

了解 Spring Cloud 生态

问:您第一次接触Spring Cloud是什么时候?您通常如何了解Spring Cloud生态系统?你能分享一下你的经验吗?

A:我第一次接触Spring Cloud是在2016年,当时公司正在使用Spring Boot。后来了解到Spring家族也有Spring Cloud项目,才对它有了一个简单的了解。 2017年,由于工作的原因,我对Spring Cloud有了比较深入的接触。

关于如何学习Spring Cloud生态。相信每个人都有自己的学习方法。我在这里分享一下我个人学习Spring Framrwork的过程。

建议大家带着思考去学习。在深入接触Spring Cloud之前,我已经对Spring MVC和Spring Boot有了比较深入的了解。我在学习Spring MVC时,带着“在Controller方法中添加@ResponseBody注解,然后将Request Body解析为JSON”的问题解读源码;我在学习Spring Boot的时候就想到了“Spring Boot提供的starter里面什么都没有”的问题,一行Java代码引入后就可以使用starter的特效了。这是怎么做到的?”问题解读源码。

有了这些Spring的基础知识,学习Spring Cloud将会非常方便。 Spring Cloud本质上是基于Spring Boot的钩子机制,为微服务领域常见问题提供解决方案。

这里是我记录的学习文章。有兴趣的话可以关注:

SpringBoot源码分析系列:http://m.ccaike.com/2017/06/05/springboot-source-analysis-summary/

SpringMVC源码分析系列:https://m.ccaike.com/fangjian0423/p/springMVC-directory-summary.html

春云:《深入理解 SpringCloud 与实战》书中~

问:Spring Cloud生态系统非常庞大。您认为我们可以重点关注哪些领域?为什么?

A:我个人认为我们可以专注于常用的领域,比如服务注册/发现、服务断路器、服务调用、网关和消息传递。原因其实很简单。这些领域的使用场景最多。

当然,Spring Cloud体系还包括分布式调用链、批处理/流处理、Serverless等领域。

Q:现在云原生的概念越来越流行。以Kubernetes、Istio为代表的Go语言生态在国内也正在快速发展。包括阿里云在内的多家大公司都在跟进。那么以Spring Cloud为代表的Java生态架构未来会被Go语言取代吗?

A:首先我想声明一下,我不是Service Mesh方面的专家。我来分享一下我的理解。

在 Kubernetes 下运行 Spring Cloud 没有问题。这个问题其实就是Spring Cloud和Istio之间的关系。

如果是纯Spring Cloud或者Dubbo Java系统,我认为没有必要改用Istio,因为Java系统本身的微服务治理能力已经比较强了,没有必要迁移到Istio。

如果有多语言场景,我个人持乐观态度,想尝试Istio。

问:据说微服务架构本身其实是使用有一定规模的企业或者技术团队。你怎么认为?如何定义尺寸?

A:这个规模取决于企业规模、技术栈、开发、团队划分。很多单体应用不存在的问题在使用微服务架构后会出现,所以一定要做好准备。

我个人的看法是微服务有其优点,但并不适合所有团队。不要为了微服务而使用微服务。

问:之前部分NetflixOSS,如Eureka、Hystrix的停维护会对Spring Cloud产生什么影响?到目前为止,这些影响是如何消除的?

A:之前Eureka和Hystrix宣布停止维护,引起社区恐慌,但我个人认为没有什么影响。大多数开发者认为Spring Cloud = Spring Cloud Netflix,但实际上Spring Cloud是一套规范。这套规范不仅是Netflix OSS,还有Spring Cloud Obama、Spring Cloud Zookeeper、Spring Cloud Consul、Spring Cloud Kubernetes等完成。

Spring Cloud阿里巴巴组件最多,是替代Spring Cloud Netflix最简单的实现。

问:在您看来,为什么在微服务大行其道的情况下,Netflix 却退出了竞争?这对其他制造商有什么影响吗?

A:Netflix实际上并没有退出这个竞争领域。它内部的微服务架构还在,但是已经没有精力致力于开源了。这也正好说明,做开源是需要不断努力的事情。

云供应商将其开源并商业化。这是一个比较好的发展方式。我们看一下Spring Cloud GCP、Azure Spring Cloud、Spring Cloud AWS等云厂商的Spring Cloud实现,都是与自己的云产品结合起来的。

这是一则广告。阿里云提供了两种微服务产品:EDAS和MSE。你可以了解他们。

问:能介绍一下Spring Cloud阿里巴巴替代Netflix组件的方案吗?

A:服务注册发现:Netflix Eureka -> 阿里巴巴 Nacos 服务注册中心

服务中断:Netflix Hystrix -> 阿里巴巴哨兵

动态配置:Netflix Archaius -> 阿里巴巴 Nacos 配置

服务调用:Netflix Ribbon -> Spring Cloud LoadBalancer(Spring Cloud官方支持,Hoxton版本后支持)

服务路由:Netflix Zuul -> Spring Cloud Gateway(Spring Cloud官方支持,Finchley版本后支持)

Spring Cloud Ali 还在孵化器的时候,社区里就有同学写了《Spring Cloud Alibaba 迁移指南》(https://m.ccaike.com/article/691128)文章,将 Spring Cloud Netflix 迁移到 Spring Cloud Ali。

Spring Cloud阿里巴巴靠什么取胜?

问:您是Spring Cloud阿里巴巴项目的创始人之一。你最初为什么想做这样一个项目?

A:阿里云正在致力于“三位一体”,就是形成“自研技术”、“开源项目”、“商业产品”统一的技术体系,实现技术价值最大化,持续创新通过标准能力输出阿里巴巴的核心竞争力,让外部企业快速享受阿里巴巴的微服务能力,加速企业的数字化转型。

问:Spring Cloud阿里巴巴有什么区别于其他Spring Cloud XXX的独特优势吗?

A:我觉得这张图已经解释得很清楚了。

问:Spring Cloud阿里巴巴项目诞生以来,有哪些重要的开发节点可以介绍一下吗?

A:太多了。我在这里列出一些我认为比较重要的时间点。

2017.12 进入Spring Cloud孵化器。成为国内第一个入驻Spring Cloud孵化器的开源项目。

2018.11 第一个版本发布。包含 Nacos 和 Sentinel 组件。

2019.04 GA版本发布。

2019.04 Sentinel 成为官方推荐的断路器实现。

2019.07 正式毕业。

2019.08 Apache RocketMQ 成为官方推荐的 Spring Cloud Stream 实现。

2019.10 Spring Cloud 阿里巴巴官网上线Spring官网。

2020.02 Spring Initializr 上线 Spring Cloud Ali 组件。

2020.03 志东动手实验室m.ccaike.com上线。开发者可以直接使用阿里云提供的真实环境在浏览器中学习新技术,打通了学习云原生新技术的“最后一公里”。目前,Spring Cloud阿里巴巴、RocketMQ、Arthas等热门开源项目的教程均已在智动动手实验室推出。

2020.10阿里云函数计算成为官方推荐的Spring Cloud Function实现。

2020.12 使用的Github数据超过10k,成为Spring Cloud最大的实现。

问:Spring Cloud阿里巴巴现在在Spring Cloud生态中扮演什么角色?它能为整体生态带来什么?

A:Spring Cloud阿里巴巴是国内第一个在Spring Cloud社区孵化并成功毕业的开源项目。也是Spring社区中国内唯一有中文文档的Spring Cloud项目。

我们知道Spring生态目前是Java开发者的首选,进入这个社区就意味着接触更多的开发群体。目前Spring Cloud阿里巴巴在Github上的使用数据已超过13k。据我了解,Eureka停止维护后,目前用户群体数量一直在下降; Hashicorp在中国禁止使用Consul后,越来越多的开发者将放弃Consul。 Spring Cloud阿里巴巴的出现也给Spring Cloud社区带来了很大的影响。国外论坛Spring Blog和DZone社区都发表了有关Spring Cloud阿里巴巴的文章。

希望Spring Cloud阿里巴巴能够成为所有Spring Cloud实现的首选。

问:Spring Cloud Ali为什么选择集成Dubbo和RocketMQ?现在效果怎么样?

A:

RocketMQ:我发现大家对Spring Cloud的关注点几乎都集中在服务注册/发现、动态配置、服务调用等领域。事实上Spring Cloud Stream是一个非常优秀的项目。它是一个屏蔽消息细节并提供统一消息API的项目。当然,Apache RocketMQ的细节也可以屏蔽,所以我们提供了Spring Cloud Stream RocketMQ Binder模块。目前,Spring Cloud Stream的官方实现列表(https://m.ccaike.com/projects/spring-cloud-stream)包含了Apache RocketMQ的实现。

Dubbo:在Spring Cloud Ali出现之前,社区一直认为Spring Cloud和Dubbo是竞争关系。你只能选择两者之一。合并Dubbo的目的是为了表达两者不属于竞争关系。

问:您是《深入理解 Spring Cloud 与实战》这本书的作者。能否总结一下您对Spring Cloud的理解以及一些实践经验?

A:我理解的Spring Cloud本质上是一套基于Spring Boot的钩子机制,为微服务领域的常见问题提供解决方案。这些解决方案包括服务注册/发现、服务调用、服务路由、服务断路器、事件驱动、消息总线、网关、分布式调用链、批/流处理、Serverless等领域。

其中我列出了一些模块的功能。

1。 Spring Cloud Commons模块封装了服务注册/发现和服务断路器的编程模型。

2。 Spring Core中的Environment封装了配置编程模型。

3。 Spring Cloud Stream封装了一个消息编程模型,屏蔽了底层消息细节。

4。 Spring Cloud Bus封装了消息总线的编程模型。

5。 Spring Cloud Task 和 Spring Batch 提供批处理和任务处理编程模型。

至于实践部分,书上有提到。这里为您提供一些实际案例。

1。案例:应用程序流量控制

2。案例:Spring Cloud应用流量控制策略动态生效

3。案例:使用Sentinel保护应用,防止服务雪崩

4。案例:使用Spring Cloud Bus完成多节点配置动态刷新

5。流处理案例:信用卡反欺诈系统

6。批处理案例:统计GitHub仓库的各项指标数据

问:这本书适合谁?

A:我想任何对Spring Cloud感兴趣的读者都可以来读一读,谢谢。

关灯