我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringCloud迈向云原生的步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringCloud迈向云原生的步骤

很多公司由于历史原因,都会有自研的RPC框架。

尤其是在2015-2017期间,Spring Cloud刚刚面世,Dubbo停止维护多年,很多公司在设计自己的RPC框架时,都会基于Spring Cloud做二次开发。并且会大量使用Spring Cloud Netflix相关的模块与代码。

因此,我们去梳理一下Spring Cloud的前世今生,以及未来云原生发展的趋势,可以给这些RPC框架的演进带来一些启发。

1、Spring Cloud的历史

Spring Cloud 自 2015 年 3 月推出之后,很快就在 Java 微服务生态中,成为开发人员的首选技术栈。

Spring Cloud 在 Spring Boot 的基础上,保留 Java 开发习惯,加入分布式特性,提供了一系列通用工具来帮助开发者在分布式系统里快速构建一些常见模式,现在已成为使用范围最广的微服务架构之一。

Spring Cloud提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、集群状态管理等组件。最重要的是,跟Spring Boot框架一起使用的话,会让你开发微服务架构非常方便。

Spring Cloud本身不是新的框架,它是一系列框架的有机组合,利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。

注意,并非所有组件都由Spring提供,Netflix扮演了重要的角色。注册中心Eureka、熔断器Hystrix、负载均衡组件Ribbon、网关Zuul等重要组件均由Netflix提供,主要贡献来自 Netflix OSS。

2、Spring Cloud的现在

由于Netflix在开源投入上的策略调整,Eureka、Hystrix、Ribbon 相继宣布停止维护,社区上人心惶惶,因为当时绝大部分开发者认为 Spring Cloud = Spring Cloud Netflix。

但实际上 Spring Cloud 是一套规范,这套规范并不是只有 Netflix OSS,还有 Spring Cloud Alibaba,Spring Cloud Zookeeper,Spring Cloud Consul,Spring Cloud Kubernetes 这些实现,最近腾讯也开源了Spring Cloud Tencent(暂时还没有进入Spring Cloud 官方社区)。

2.1 Spring Cloud Alibaba

Spring Cloud Alibaba(后面简称SCA) 是目前国内Spring Cloud最活跃、组件最多,也是最容易替代 Spring Cloud Netflix 的实现。

下面张图对相关功能和组件的映射关系表达得比较清晰了。

(来源:
https://www.oschina.net/question/4489239_2321891)

我们可以看到,SCA对Spring Cloud的实现,采用了几个目前非常热门的项目,基本上可以做到快速接入,稳定使用。

不过这里有个地方需要注意,从SCA 的2.2.7-RELEASE版本后,不再支持dubbo的快速接入了,而是直接使用了Spring Cloud的原生调用方式(OpenFeign和RestTemplate)。

为什么呢?查了下issue找到了社区相关讨论
https://github.com/alibaba/spring-cloud-alibaba/issues/2398。

总结起来有几点原因:

  • SCA的Spring Cloud Dubbo这个模块存在一些问题,且没有人力继续维护了,考虑到用的人不多,所以就不再继续维护。
  • SCA的目的是为了将阿里云相关组件能快速替换SpringCloud相关模块而诞生的,比如nacos、sentinal、seata、rocketMQ。

Dubbo自身生态非常成熟,一般不需要跟Spring Cloud混用,一般是二选一。尤其是Dubbo 3.x后支持了Mesh,通过rest方式调用完全可以自成体系。

2.2 Spring Cloud Tencent

Spring Cloud Tencent(后面简称SCT)是腾讯最近开源的SC实现框架,项目地址
https://github.com/Tencent/spring-cloud-tencent。

这是一整套自研的组件,以腾讯云polaris为核心,实现 注册中心、配置中心、服务路由、限流 等等。

目前相对来说腾讯集团内部使用较多,外界案例较少。

2.3 小结

Spring Cloud Netflix虽然不再维护,但是Spring Cloud依然火热,SCA目前看可能会成为国内最佳实现选择。

3、Spring Cloud与云原生

3.1 特性差异

首先,Spring Cloud认为自己还是比较符合云原生的

from https://github.com/spring-cloud/spring-cloud-commons:

Cloud Native is a style of application development that encourages easy adoption of best practices in the areas of continuous delivery and value-driven development. A related discipline is that of building 12-factor Applications, in which development practices are aligned with delivery and operations goals — for instance, by using declarative programming and management and monitoring. Spring Cloud facilitates these styles of development in a number of specific ways. The starting point is a set of features to which all components in a distributed system need easy access.

但是Spring Cloud 和目前最火热的云原生Service Mesh体系还是有非常大的差异。

可以从以下四个方面的对比

(表格来源:
https://medium.com/codex/a-spring-cloud-compatible-service-mesh-6ce58c571012)

前面谈到了,Spring Cloud体系实际上是定义了一套编程模型(规范),包括服务注册发现、负载均衡、熔断降级等等。

但是这里有些内容是否可以应用无关,下沉到基础设施中?

在云原生环境下,是可以的。

也就是Spring Cloud定义的部分规范,其实在云原生环境下可能略显冗余了,Service Mesh可以做到应用无关。

当然,Spring Cloud能做到Service Mesh做不到的一些事情,比如 接口级别的治理、更细粒度的链路追踪 等等。

另外,跨语言也是Service Mesh的一大杀器。

云原生环境下,容器化运行,多云部署,使得微服务不在关注到底是什么技术栈,python、c++、Nodejs都可以非常容易在云原生环境下运行。

但是Spring Cloud只适合java生态,并且侵入到java应用程序代码中,对于多语言是比较无力的。(其实这里也是 容器化 后,对java语言统治力的一种冲击)

3.2 成熟度

从成熟度来说,Service Mesh的istio + envoy的组合目前已经不少大中厂的实践案例,但是跟Spring Cloud比起来,还是差不少。

2022 年 9 月 24 日,由云原生社区主办的第一届 Service Mesh Summit 在上海成功举办,从大会内容上,我们可以看到,Service Mesh在 易用性、通用性、学习成本上,都还是比较高的。

市场在关注服务网格时更加得理性,而服务网格本身也更加“务实”,以实现快速平稳落地为出发点,解决落地过程中的各种问题,比如性能、资源占用、跨集群、多协议支持、功能扩展等等。解决这些问题,或者坚持在 Istio/Envoy 体系上继续优化;或者转投其他的实现,更换数据面代理,如 MOSN、Pipy、APISIX、Linkerd Proxy;再或者引入其他的技术来解决,如 eBPF、WASM、RDMA、DPDK 等等。

4、路在何方

4.1 只把k8s作为容器编排调度?

目前java为主的微服务体系还是比较完整的,所以即使使用了k8s,也可以仅仅把k8s用作容器编排,不需要对接istio的服务治理能力。

Spring Cloud全家桶肯定能满足java体系下的微服务一站式设计与实现,这点毋庸置疑。

当然,问题主要还是在云原生下,多语言的治理能力会有所缺失。

另外,流量管理上,和knative、seldon等平台打通会比较麻烦,它们都是直接对接istio进行流量管理的。

4.2 Spring Cloud 的路?

Mesh体系下,由于天然支持HTTP调用,因此Spring Cloud的调用接入还是比较方便的,也有Spring Cloud Kubernetes项目做了注册中心的打通。

核心的痛点在于对统一控制面的服务治理的接入。

对于Spring Cloud来说,就是要实现Proxyless体系,但是目前官方社区没有看到这方面的特别探索。

倒是Spring Cloud Alibaba的服务治理组件Sentinel有一些变化。

Sentinel 的历史

  • 2012 年,Sentinel 诞生,主要功能为入口流量控制。
  • 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。
  • 2018 年,Sentinel 开源,并持续演进。
  • 2019 年,Sentinel 朝着多语言扩展的方向不断探索,推出 C++ 原生版本,同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持,以解决 Service Mesh 架构下多语言限流的问题。
  • 2020 年,推出 Sentinel Go 版本,继续朝着云原生方向演进。
  • 2021 年,Sentinel 正在朝着 2.0 云原生高可用决策中心组件进行演进;同时推出了 Sentinel Rust 原生版本。同时我们也在 Rust 社区进行了 Envoy WASM extension 及 eBPF extension 等场景探索。
  • 2022 年,Sentinel 品牌升级为流量治理,领域涵盖流量路由/调度、流量染色、流控降级、过载保护/实例摘除等;同时社区将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现。

另外,Sentinel 社区正在将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现。有关 Sentinel 流控降级与容错 spec 的最新进展,请参考 opensergo-specification。

但是sentinel重点还是关注容错能力,路由能力是缺失的。

所以,只能继续关注OpenSergo会怎么补齐这块能力了。

4.3 学习Dubbo 3.0,全面拥抱云原生

与Spring Cloud体系一样闻名的Dubbo体系,我们已经可以看到dubbo 3.x从 Mesh 到 Proxyless 对云原生的全面拥抱。

不仅从服务注册发现模型上做了彻底改变(接口级别变成了应用级别),也在治理能力上对接xds。

dubbo 3.1.0作为一个重要的里程碑已经正式发布

也许跟随 Dubbo的脚步,可能可以更稳步走向云原生。

到此这篇关于SpringCloud怎么迈向云原生?的文章就介绍到这了,更多相关SpringCloud云原生内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringCloud迈向云原生的步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringCloud迈向云原生的步骤

这篇文章主要介绍了SpringCloud怎么迈向云原生,通过本文我们来梳理一下Spring Cloud的前世今生,以及未来云原生发展的趋势,可以给这些RPC框架的演进带来一些启发,感兴趣的朋友跟随小编一起看看吧
2022-11-13

迈向现代数据平台的两个步骤

在构建数据科学产品时,一个重要的方面是让您的数据可用并准备使用。您需要一个平台将数据带到一起,并在整个公司中服务。但是你如何发展这样一个数据平台?

Java 加持 Kubernetes:迈向云原生应用的快车道

通过将 Java 应用程序部署到 Kubernetes 上,企业可以加速云原生应用程序的开发和部署,从而充分利用云计算的优势。
Java 加持 Kubernetes:迈向云原生应用的快车道
2024-02-29

Kubernetes 掌控 ASP.NET Core 应用:迈向云原生之路

本文将探讨如何使用 Kubernetes 构建和部署 ASP.NET Core 应用,这对于希望将应用现代化并向云原生架构迈进的开发者来说非常有价值。 Kubernetes、ASP.NET Core、云原生、容器、微服务 Kubernetes简介 Kubernetes最初由谷歌开发,是一款开源的容器管理平台,用于自动化容器化应用的部署、扩展和管理。它通过将应用程序和服务打包到容器中来促进云计算和基础架构的现代化。
Kubernetes 掌控 ASP.NET Core 应用:迈向云原生之路
2024-02-21

迈向最优解-自如云原生实践与思考

欢迎大家参与10月22日下午14:00 -【T·Talk】技术分享活动

云原生业务转型的九个步骤

下面,我将提供一个指南,帮助公司确定他们的特定需求,以及他们成为云计算本机所必须经历的潜在变化。

迈向更具创新性企业文化的三个步骤

在后疫情时代的背景下,拥有一种创新型组织文化可能是各企业在 2021 年所面临的最大挑战之一。与任何一种企业文化一样,这不会是被动形成的。

扩展云原生策略的步骤有哪些?

迁移到云平台的企业数量呈爆炸式增长,具体而言,采用云原生策略在公共云、私有云和混合云环境中有效构建和运行应用程序的企业数量有所增加。

云原生下一步的发展方向是什么?

云原生技术是目前技术阶段,企业IT系统的最优模式的集合。云原生技术也是一个不断更新迭代的过程,相应的开发习惯和方法也会跟着改变。

Dubbo 迈出云原生重要一步 - 应用级服务发现解析

作者 | 刘军(陆龟) Apache Dubbo PMC概述社区版本 Dubbo 从 2.7.5 版本开始,新引入了一种基于实例(应用)粒度的服务发现机制,这是我们为 Dubbo 适配云原生基础设施的一步重要探索。版本发布到现在已有近半年
2023-06-03

云原生下一步的发展方向到底是什么?

云原生已经进入2.0时代,上云也从资源上云进一步向应用上云和业务上云升级,推动企业数字化转型和智能升级。

Rainbond云原生部署SpringCloud应用架构的方法

这篇“Rainbond云原生部署SpringCloud应用架构的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Rainb
2023-06-30

六个步骤搞定云原生应用监控和告警

云原生系统搭建完毕之后,要建立可观测性和告警,有利于了解整个系统的运行状况。基于Prometheus搭建的云原生监控和告警是业内常用解决方案,每个云原生参与者都需要了解。

芯片到云物联网:迈向 Web 3.0 的决定性一步

芯片到云物联网看起来是一种很有前途的方式,可以为所有人构建更安全、更有用和去中心化的技术。
芯片物联网2024-12-02

左手开源,右手商业, 青云科技帮助企业成功迈向云原生之路

QKCP(QingCloud KubeSphere Container Platform)就是帮助企业客户迈向适合自己的最佳云原生实践之路的伴侣。

亚马逊云科技成为瑞士电信首选公有云提供商,迈向云原生5G网络

6月30日,亚马逊云科技宣布正式成为瑞士领先的电信运营商和IT服务供应商瑞士电信的企业IT首选公有云提供商。瑞士电信正在推行云优先战略,并将使用亚马逊云科技来提升IT敏捷性与运营效率,缩短全新信息通信技术(ICT)功能和服务的上市时间。

华为云康宁:秉承共创、共享、共赢理念,向2024生态愿景稳步迈进

健康、繁荣的云生态,不仅是华为云和伙伴们快速成长的基础,更是加速数字经济发展的强大动力。“在“一切皆服务”战略指引下,华为云将秉承“共创、共享、共赢”的生态理念,持续赋能全球开发者,使能合作伙伴,助力千行百业数智化转型。
华为云2024-11-30

银行核心系统向云迁移的三个步骤

银行如何在不疏远客户或冒核心数据风险的情况下拥抱云?三个步骤非常关键:金融公司必须首先进行评估,然后准备并最终实施云方案来简化运营而又不增加风险。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录