问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring cloud 微服务流行吗

发布网友 发布时间:2022-04-22 13:51

我来回答

1个回答

热心网友 时间:2023-11-07 10:19

两年前,第一次真正接触微服务的概念,但也只是简单地进行了使用,当时技术栈主要是 Spring Boot,那时 Spring Cloud 也比较流行,但是由于各种原因,并没有转向这套(甚至用 zookeeper 实现了简单的服务发现),理论上来说,用了 Spring Boot 再转向 Spring Cloud 应该是很正常的事情。当时也认为 Spring Cloud 各种理念很高级,实现上也不错,也有 Netflix 等之类的大公司背书,而且和 Spring 天然集成的,使用起来还是比较方便。当时可能觉得其他的 RPC 框架:如 Dubbo 和 Spring Cloud 相比简直差了一个档次,可能大家都认为 Spring Cloud 是未来。

从第一家公司离职后,去了另外一家公司,发现一个很奇怪的特点,这家公司的技术比较保守,基本还是十年前或者五六年前的技术架构。记得之前看过一本书上说过,技术不与时俱进,那就相当于自取灭亡,特别是技术驱动型公司,如果一直停滞不前,那就相当于你拿几十年前的武器和别人战斗,那结果自然是必然的。为什么技术要与时俱进,不是因为有了新技术就要去使用它,而是因为新技术往往可以提高业务的运转效率,同时也可以降低成本。不过在这个公司待了两个月,还是觉得有可取的地方,第一点是对代码质量的追求,由于业务的体量和特殊性(大概是亿级),所以对代码有较高的要求;第二点是对微服务整体架构的深入,虽然这个系统没有上 Spring Cloud ,甚至 Spring Boot 都没有,还是很老的一个架构,但其中微服务的思想已经有了,比如服务的拆分,服务的水平扩展,基于 Dubbo 的一些服务发现和治理,整体来说已经算是不错了,但是也总在思考,感觉还是少了什么东西。

容器化和 CI/CD

后来又到了一家比较年轻活跃的公司,接触到 Docker 的大规模使用以及 CI/CD,也是在这里,形成了整个对微服务完整生命周期的理解。 Docker 其实流行也很久了, 但是真正线上使用的并没有那么多,最近随着 Kubernetes( k8s ) 的流行,更多公司也开始关注起来。

首先为什么服务要容器化,第一点是不再依赖于运行环境,只要有 Docker 就可以跑起来,无论你是什么发行版的 Linux 系统,还是 Windows,Mac。这有点像 JVM,屏蔽底层的细节,一次编写,到处运行,用在容器上就是一次构建,到处运行。第二点是容器化可以更好的进行持续集成,由于第一点的缘故,部署一个服务容器将非常快捷,这更加适合目前 devops 的理念。

持续集成(Continuous Integration)简称 CI ,持续部署(Continuous Deployment)简称 CD,如果微服务不把 CI/CD 放在首位,那必然整个流程就是不流畅的。有些公司还是手动本地构建包,然后 上传 到服务器上跑起来,进行这样的人肉运维,人肉上线,要么考虑一下,是不是整个 CI/CD 有问题,或者根本就没有 CI/CD 。其次 CI/CD 流程要做到每次构建自动跑单元测试,集成测试,以及 API 测试,UI 测试等等,这些流程也没有自动化的话,也谈不上完整的 CI/CD。如果没有经过这些流程把包直接上传到服务器,不出问题,那应该要烧柱香,拜拜佛。

云原生应用和服务网格

云原生应用遵循 Twelve-Factor ,云原生应用是为了解决传统应用发布升级流程缓慢、架构复杂,可维护性差而提出的的一个思想集合,集中了 微服务,devops,云等多种思想。

云原生应用应用可以跑在任意一家云服务商上,也可以实现多家服务商同时使用,同时也支持公有云和私有云的混合部署,这只是它的一个特点,更多的特点还是集中在解决传统应用面临的问题,如灰度发布,不停机发布,A/B Test, 快速回滚,服务治理等。

服务网格(Service Mesh)是一个比较新的概念,但是核心思想并不新。Spring Cloud 以框架的形式侵入到程序中来解决微服务的各种问题,理论上来说,应该是效率最高,最灵活的一种做法。但是侵入性太强,而且只能 Spring 这套,异构语言的系统玩不转。Service Mesh 从另外一个角度来解决这个问题,也就是 sidecar 和 proxy,这样虽然性能上有些损失,但是扩展性却是比较灵活的,将这些基础能力(服务发现,服务治理,熔断限流,监控等)下放到基础设施中,做到对应用程序透明,是一个不错的进步。写业务逻辑不需要再去和这些东西纠结,代码逻辑也变得十分明朗。同时这样也解决了异构语言系统的问题,无论什么语言,都是可以完美的工作在一起,简直是一个完美世界。但是但是但是 Service Mesh 由于还比较新,目前还不能进行生产环境使用,就拿目前最流行的 Istio 来说,目前只发布了 0.8 版本,还不能实际使用,估计 1.0 也不行,可能得 1.2 才推荐生产,所以现在就面临一个困境,Service Mesh 是一个好东西,但是我们却用不了,呜呼哀哉。

Spring Cloud 和 Service Mesh

首先两者解决问题的方式不一样,Spring Cloud 是直接的方式,Service Mesh 是委婉的方式,这可能会造就两者之后的命运。如果目前已经上了 Spring Cloud 或者其他的,系统已经具有基础的服务治理能力,先不要考虑 Service Mesh ,要先去考虑容器化和 CI/CD ;如果没有太多的 历史 负担,则是可以考虑。

总结

技术发展太快,不能停滞不前,也不能盲目追风。当年的 SSH 也只剩下了 Spring,可是有人说 Spring 只能一个季节用,但是 Service Mesh 整年都可以用,好像很有道理。最后,路漫漫而修远兮,吾将上下而求索。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
干货| 手把手教你搭建一套OpenStack云平台 口碑最好的切菜刀 什么材质的菜刀最好用 菜刀的种类和用途 张九龄三首古诗词赏析(风格清淡,语言素练) word文字底纹颜色怎么设置在哪 东施效颦这则语言告诉人们一个怎样的道理,欲意又是什么呢 胜芳买房多少钱 胜芳谁最有钱 315儿童智能手表是哪个牌子 孕囊看男女准不准 BPM系统对企业有什么好处? spring cloud可以代替ssm吗? 鏈夐┈娑﹀湪灏辫屼簡锛屾垜浠鍦ㄤ笉鍦ㄦ剰涔変笉澶是什么字 C#开发平台里力软的框架算好吗? 虎年生黄姓女孩取名 springboot和springcloud哪个好 spring cloud 支持协议有哪些 考研报名后想改怎么办 SpringCloud主要的应用领域是哪些?主要做什么的? 陈刘悦汐名字好吗?求大神给出答案 汐悦旅行社的寓意 女孩起名,悦汐,好吗 外卖骑手送一单多少钱 美团签约骑手配送给多少钱呢? 上美团一年多少钱? 美团骑手送一单多少钱! 美团骑手要交多少押金? 如果给近千万骑手交社保,美团需要花多少钱? 全职美团一个月会被扣多少钱 美团骑手一个月大概收入有多少? 广州OA软件有哪几家比较好(oa办公软件有哪些品牌) on是开还是关呢? ON在电器开关里是开还是关? 开关上的“0N"是表示关还是开? 信用卡逾期不还的后果 小米8怎么降级到miui11 虚拟货币怎么得啊? 信用卡欠款还不上怎么办,有什么后果? 信用卡逾期的后果是什么? 信用卡逾期没钱还每月只还十元会怎么样 信用卡欠款五万还不上会有什么后果 windows10注册表编辑器怎么打开 扬雄的代表作是什么? 介绍一下三国志系列的作品 要5首近代的爱国诗词,最好是革命烈士写的~急急急~ 香港移动客服电话号码多少? 香港航空24小时客服电话? 你好 香港客服电话多少 香港联通客服的电话是多少?有人知道吗? 香港联通客服的电话是多少啊!