这是本公众号的第 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,一个有深度,有态度,有温度的程序员。工作之余分享编程技术和生活,如果喜欢我的文章,可以顺手关注一下公众号,也欢迎转发分享给你的朋友~
Spring Cloud介绍_第1张图片

推荐阅读

  • 在Java代码中打日志需要注意什么?
  • 看了这篇文章,比同事更快找到bug!
  • 也来聊聊《后浪》
  • 带你通关全栈树型结构设计:从数据库到前端
  • 我为什么要做公众号?
  • 一个慢SQL引起的惨案