点击↑上方↑蓝色“编了个程”关注我~
每周至少一篇原创文章
这是本公众号的第 7 篇原创文章
Spring Cloud是什么?
Spring Cloud是一个主流的「微服务框架」。微服务的概念源于2014年3月「Martin Fowler」所写的一篇文章“Microservices”。
微服务是一种解决复杂应用的架构模式。它的理念是将复杂应用拆分成一个个微小的服务,每个服务运行在独立的环境(进程、虚拟机、容器等)中,彼此之间互不干扰,独立开发,独立构建和部署。最终集成在一起,相互协调,为用户提供价值。
微服务框架可以为这些微小的服务提供「统一的管理和必要的工具」,使它们更易于开发和维护。
为什么需要微服务?
微服务解决了什么痛点?你的应用到底需不需要微服务?
首先,如果对于业务简单、并发量较小的应用来说,其实是不需要使用微服务架构的。比如我的个人网站。但对于复杂的大型应用来说,是推荐使用微服务的。先来看看一个大型的单体应用可能有哪些痛点?
所有代码集成到一个项目,任何业务修改都需要重新部署整个项目
一个项目里面的代码量太大,难以管理,很难重构,出了BUG也很难排查
所有业务逻辑都在一个项目,测试量很大,每次都需要跑很久测试
难以水平扩展,很难处理突发流量激增的情况。
......
在微服务概念出现以前,有的团队为了解决上述痛点,开始使用“分布式系统”的理念去设计系统。
把应用拆成一个个小的应用,独立开发和部署。但由于缺乏统一的服务治理工具,所以需要集成一些外部的工具来完善这个系统。比如负载均衡、权限网关、路由、配置管理、状态监控等等工作都得自己做或者使用其它软件。这在一定程度上其实也增加了复杂性,尤其是运维的复杂性。
为什么使用Spring Cloud?
在Spring Cloud流行以前,其实已经有一些微服务解决方案。使用最广泛的就是阿里的「Dubbo」了。但Dubbo只提供了一些基础的功能,有点类似于上面提到的“分布式系统”的升级版,还不具备一个完善的微服务框架的功能。所以Dubbo往往也需要与其他框架进行集成,比如使用Zookeeper进行服务注册和发现。
「Spring Cloud」是Spring团队开发和维护,具有更完善的功能、更快的迭代速度、用户更多的特点。所以Spring Cloud是企业开始使用微服务的一个很好的技术选型。
还有最近比较火的「Service Mesh」的概念,被称为“下一代微服务”,它具有更先进的设计理念,把服务划分为一个个服务网格,并且架构更抽象,使得开发和运维分离,开发人员不需要学习太多的微服务知识便可以实现微服务。有兴趣的读者可以去了解一下Service Mesh,应该是以后的趋势。后续我可能也会学习Service Mesh并写点文章。
但身为一个开发人员,我认为还是有必要去学习一下Spring Cloud,可以让我们更深入地了解一些微服务的设计理念。之前也学习过Spring Cloud,但不够系统和深入。这次重新学习一遍,配合文章加深自己的理解。
所以最近会写一些Spring Cloud系列的文章,把自己所学的东西分享出来,欢迎关注。
关于作者
微信公众号:编了个程(blgcheng)
个人网站:https://yasinshaw.com
笔名Yasin,一个有深度,有态度,有温度的程序员。工作之余分享编程技术和生活,如果喜欢我的文章,可以顺手关注一下公众号,也欢迎转发分享给你的朋友~
推荐阅读