建设银行怀柔支行营业部网站,常州seo网站推广,网站建设月流量,深圳市罗湖区网站建设又见小道仙#xff1a; https://blog.csdn.net/Tomwildboar/article/details/129531315
对于SpringCloud在实际项目中并未使用过#xff0c;只是自学过SpringCloud和SpringCloud Alibaba#xff0c;也基于学习搭建过demo。
对于Kubernetes#xff0c;目前这家公司就是使用…又见小道仙 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。
相对于cloudk8s服务调用更有优势你注册了一个服务会生成一个服务内部调用地址通过这个地址去调用服务走内部通信一个是快一个是自带负载均衡。
如果你想使用RPC调用在K8S里面也是完全可以的我们的服务就在慢慢的开始使用OpenFegin目的是为了统一技术站为后续服务治理做准备。
4、服务配置
Cloud 里面的配置中心有config、nacos等可以做到热更新也可以做到不同的环境不同的配置。 K8S里面可以使用configMap它就是一个 key-value 格式的数据我们的value可以是任何格式的数据这取决于我们的服务想用什么比如 Java里面的 yamlnginx里面的conf。 从功能来看nacos是全胜的但是从业务场景来看有时候configMap更适合我们
热更新nacos是支持热更新的configMap不支持不过K8S的pod支持滚动升级偶尔的一次修改配置文件也可以做到用户无感知只是操作稍微麻烦些需要重启。编写体验nacos有很好的编辑器不同的文件会有不同的高亮显示但是阿里云的configMap目前只是一个单纯的文本框。这点我也无所谓一般我都是复制出来的本地编辑再复制回去难易度毫无疑问configMap属于K8S本身肯定要简单很多不需要单独的服务并且代码无任何侵入。
5、服务熔断、降级
K8S和Cloud一样需要引入第三方中间件如 sentinel和hystrix 6、分布式事务
同上也需要引入第三方中间件或自己做补偿机制
总结
个人觉得它们最大的区别在于一个是为了解决Java微服务架构问题一个是容器架构和语言无关所有功能都是自己这个架构所自带的只是为了解决架构的某些问题而产生的。