SpringCloud和Kubernetes的区别

又见小道仙:
https://blog.csdn.net/Tomwildboar/article/details/129531315

对于SpringCloud在实际项目中并未使用过,只是自学过SpringCloud和SpringCloud Alibaba,也基于学习搭建过demo。

对于Kubernetes,目前这家公司就是使用的这个,但也只是管中窥豹,目前对于二者的关系,以及一些优缺点,还是有点认识的。

基于学习、总结的想法,然后就出了这篇文章,下面以对比的方式来介绍它们俩。
(其实也有点不了解两个的区别,感觉他们功能挺相似的)

springcloud的流程图
在这里插入图片描述

K8S的图(我对这个没啥研究,先记录,抽时间研究)
在这里插入图片描述

功能对比

SpringCloud 和 Kubernetes的区别:

Spring Cloud 和 Kubernetes 都是用于构建和管理云原生应用程序的工具,但它们有一些重要的区别。

Spring Cloud 是一组用于构建微服务架构的框架和库。它提供了一系列解决方案,如服务注册、配置管理、负载均衡、断路器、路由和追踪等功能。
Spring Cloud 建立在 Spring Framework 的基础上,它的目标是让开发人员能够更轻松地构建和管理微服务架构。Spring Cloud 可以运行在任何基础设施上,包括本地服务器、虚拟机和云环境。

Kubernetes 是一个容器编排平台,它允许用户自动化部署、扩展和管理容器化应用程序。Kubernetes 提供了许多功能,如服务发现、负载均衡、自动伸缩、滚动更新、容器存储和自动恢复等。Kubernetes 的设计目标是支持大规模的容器集群,它可以在任何基础设施上运行,包括本地服务器、公有云和私有云环境。

因此,Spring Cloud 和 Kubernetes 的主要区别在于它们的设计目标和重点。Spring Cloud 主要关注构建微服务架构,提供了一系列解决方案,而 Kubernetes 主要关注容器编排,提供了一套自动化部署、扩展和管理容器化应用程序的功能。当构建和管理微服务架构时,可以使用 Spring Cloud,当部署和管理容器化应用程序时,可以使用 Kubernetes。

可以相互补充

1、服务网关

网关简单来说就是一个大门,你想要去访问门后的东西,第一步就是跨过大门。

Cloud里面的网关代表有zuul、Gateway等,它们需要去连接一个注册中心,去注册中心拿到服务相关的信息,再去做相对的转发策略。
K8S的网关是 ingress,目前我们的服务是部署在阿里云上面的,使用的是 nginx ingress controller,本质上是基于nginx + luajit 来实现的,借助luajit框架可以让我们像编程一样的去操作nginx能力。(可以去看看开源框架 OpenResty)

以我的使用体验来看,我更喜欢 ingress,它依托k8s本身,新增服务的时候会自动的去发现服务,我们的服务本身没有任何的依赖,比如配置注册中心地址什么的,部署即刻生效。

2、服务注册/发现

Cloud的服务注册发现,是需要借助其它中间件比如Eureka、Nacos等,这些组件也还需要借助第三方的存储比如MySQL。
K8S的数据存储是ETCD,理所当然服务信息也会存储到这个里面,自然就形成了注册,ingress会从etcd里面获取信息,就形成了服务的发现,完全是K8S自带的。

3、服务调用

不管是cloud还是k8s,其实服务本身的通信是没有什么限制的,比如你可以使用HTTP,也可以用 RPC。

相对于cloud,k8s服务调用更有优势,你注册了一个服务,会生成一个服务内部调用地址,通过这个地址去调用服务走内部通信,一个是快,一个是自带负载均衡。

如果你想使用RPC调用,在K8S里面也是完全可以的,我们的服务就在慢慢的开始使用OpenFegin,目的是为了统一技术站,为后续服务治理做准备。

4、服务配置

Cloud 里面的配置中心有config、nacos等,可以做到热更新,也可以做到不同的环境不同的配置。
K8S里面可以使用configMap,它就是一个 key-value 格式的数据,我们的value可以是任何格式的数据,这取决于我们的服务想用什么比如 Java里面的 yaml,nginx里面的conf。
从功能来看nacos是全胜的,但是从业务场景来看,有时候configMap更适合我们

  • 热更新:nacos是支持热更新的,configMap不支持,不过K8S的pod支持滚动升级,偶尔的一次修改配置文件也可以做到用户无感知,只是操作稍微麻烦些,需要重启。
  • 编写体验:nacos有很好的编辑器,不同的文件会有不同的高亮显示,但是阿里云的configMap目前只是一个单纯的文本框。(这点我也无所谓,一般我都是复制出来的本地编辑再复制回去)
  • 难易度:毫无疑问configMap属于K8S本身肯定要简单很多不需要单独的服务并且代码无任何侵入。

5、服务熔断、降级

K8S和Cloud一样需要引入第三方中间件,如 sentinel和hystrix

在这里插入图片描述

6、分布式事务

同上,也需要引入第三方中间件,或自己做补偿机制

总结

个人觉得它们最大的区别在于一个是为了解决Java微服务架构问题,一个是容器架构和语言无关,所有功能都是自己这个架构所自带的,只是为了解决架构的某些问题而产生的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web APIs——事件监听以及案例

1、事件监听 什么是事件? 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为绑定事…

【RocketMQ集群】Linux搭建RocketMQ双主双从集群

在当今大数据时代,消息队列系统成为了构建高可用、可扩展和可靠的分布式应用的重要组件之一。而Apache RocketMQ作为一款开源的分布式消息中间件,以其高吞吐量、低延迟和可靠性而备受青睐。为了满足大规模应用的需求,搭建RocketMQ集群是一种常…

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#x…

Weights and Biases使用教程

Weights and Biases使用教程 安装和初始化实验跟踪跟踪指标跟踪超参数可视化模型检查日志 数据和模型版本控制使用Sweeps进行超参数调优数据可视化report Weights and Biases已经成为AI社区中最受欢迎的库之一。该团队在创建了一个平台,使机器深度学习学习工程师能够…

云安全—docker原理

0x00 前言 因为要学习docker相关的检测技术,所以需要对docker的原理进行基本的原因,不求彻底弄懂,但求懂点皮毛,如有不妥之处,还请斧正。 0x01 docker概述 docker起源 docker公司是在旧金山,由法裔美籍…

Java操作Elasticsearch(新增数据)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

广告掘金全自动挂机项目,单设备30+【软件脚本+技术教程】

广告掘金项目是一种越来越受欢迎的赚钱方式,它通过观看广告视频来获取收益。然而,手动观看每个广告视频可能会耗费大量时间和精力。为了简化操作并提升效率,我们可以利用全自动挂机脚本来完成这一任务。接下来,将为您介绍如何使用…

PLC单按钮启停算法汇总

单按钮启停在三菱PLC里可以通过简单的取反指令"ALT"实现,西门子PLC如何实现ALT指令,请参考下面文章链接,这篇博客我们汇总常用的单按钮启停实现方法,希望大家读了本篇博客后有所收获。 博途ALT指令 博途S7-1200/1500PLC 取反指令(ALT)-CSDN博客SMART PLC的ALT指…

安卓 实现60s倒计时的CountDownTimer(小坑)

安卓 实现60s倒计时的CountDownTimer(小坑) 前言一、CountDownTimer 是什么?二、代码示例1.使用2.小坑的点误差及时取消 总结 前言 前段时间写倒计时没有用线程,想换一种实现方式结果踩了个小坑,特此记录。 一、Count…

pymavlink简单使用

环境 windows10 python3.11 pymavlink2.4.40 工具 虚拟串口工具 Virtual Serial Port Driver 6.9 串口/网络调试助手 sscom5.13.1.exe 串口通信 虚拟串口 COM1, COM2 调试助手连接COM2 pymavlink连接COM1 from pymavlink import mavutil import timeconnect mavut…

LabVIEW应用开发——控件的使用(三)

接上文,这篇介绍簇Cluster控件。 LabVIEW应用开发——控件的使用(二) 1、簇Cluster 1)创建 蔟控件又称为组合、集群控件,顾名思义它是一个类似于C语言的结构体的一个数据结构控件。在描述一个对象的时候,…

SpringCloud 微服务全栈体系(三)

第五章 Nacos 注册中心 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba 也推出了一个名为 Nacos 的注册中心。 一、认识和安装 Nacos 1. 认识 Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eure…

“创新启变 聚焦增长”极狐(GitLab)媒体沟通会,共话智能时代软件开发新生态

10 月 18 日 北京 昨日,全球领先 AI 赋能 DevSecOps 一体化平台极狐(GitLab) 在北京举办了主题为“创新启变 聚焦增长”的媒体沟通会。极狐(GitLab) CEO 柳钢就“中国企业数字化转型、软件研发、技术自主可控等热点问题,以及 AI 大模型时代下&#xff0c…

论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election

论文链接: https://arxiv.org/abs/2008.08370 目录 摘要: Introduction Contributions Related Work Dataset Method Overview Surfacing Coordination in 2019 UK GE Analysis of Coordinated Behaviors 摘要: 协调的在线行为是信息…

SAP POorPI RFC接口字段调整后需要的操作-针对SP24及以后的PO系统

文章目录 问题描述解决办法 问题描述 在SAP系统的RFC接口结构中添加了字段,RFC也重新引用到了PO系统,Cache和CommunicationChannel都刷新或启停了,但是新增的字段在调用接口的时候数据进不到SAP系统,SAP系统内的值也出不来。经过…

异步编程详解(.NET)

在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,很多网站本身也做了不少的尝试。今天我们再来回答一下这个问题,同时我会做一个async和await在WinForm中的尝试,并且…

html5语义化标签

目录 前言 什么是语义化标签 常见的语义化标签 语义化的好处 前言 HTML5 的设计目的是为了在移动设备上支持多媒体。之前网页如果想嵌入视频音频,需要用到 flash ,但是苹果设备是不支持 flash 的,所以为了改变这一现状,html5 …

QWidget快速美化-蓝色边框圆角按钮

将代码复制进QPushButton的样式表 效果: 代码: QPushButton{ color:#52DCFE;border:2px solid #52DCFE;border-radius:5px; }QPushButton::hover{background-color:#52DCFE;color:#ffffff; }QPushButton::pressed,QPushButton::checked{background-color:#52DCFE;color:#ffff…

adb: error: 46-byte write failed: Invalid argument

使用adb pull可以,但是adb push fail。 貌似是adb的问题,将adb.exe 重命名为pdb,使用pdb push就行了。

用Node.js开发基于稳定扩散的AI应用

在本文中,我们将介绍如何构建一个 Web 应用程序,该应用程序使用 ChatGPT 和 Stable Diffusion 为你提供的任何网站描述生成徽标和合适的域名。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 1、介绍 人工智能正在接管世界。 这些技术每天都在震…