前言:spring全家桶早已在java中深深扎根,spring boot和spring cloud的项目框架也都已经烂大街了,但是还有很多刚入行的人还不是很了解到底什么是spring cloud以及它和spring boot项目的区别。接下来就由小编带领大家简单的了解一下,什么是spring cloud,以及它和spring boot项目的关系。

在解释spring cloud之前,先给大家讲讲什么是微服务。在前些年微服务概念还没有完全普及的时候,很多小点的项目所有的功能都是写在一起的,我们称之为单体架构。这种结构存在很多的缺点:

  • 项目迭代、功能丰富之后,代码的复杂度会越来越高(耦合度相对更高),运维和迭代的成本也越来越高。
  • 项目每次打包执行都是整体,项目部署都得基于整个项目来操作。
  • 业务流程的测试就更不必说,需要运行整个项目,所有配置等改动必须要满足启动需求,开发和测试都有着更高的成本。
  • 整体部署带来的资源浪费。绝大部分项目都存在分布式部署的需求,如此一来单体架构就会导致有些不需要甚至不能重复部署功能,比如一些定时任务,就需要打不同的包来进行部署,麻烦的同时还容易出错引发生产事故。

针对以上问题,面向服务的架构就诞生了。这种架构将整体的项目按功能服务进行拆分并模块化,从而实现代码的解耦。这里的服务我们可以简单的理解成一个功能的实现。解耦之后,每个单独的模块都可以单独的进行部署、开发,还可以针对业务的请求频度进行不同程度的分布式部署,当某一个模块报错了也不会影响其他模块的运行,扩展新模块也很方便。像这样将单体结构通过业务拆分成独立服务的框架,就称之为微服务(服务模块化)。

接下来讲讲spring boot和spring cloud。spring boot是spring的一套快速配置脚手架,熟悉老代码开发的应该还记得通过xml配置文件去搭建一套可以进行业务开发的环境有多麻烦。通过spring提供的这套基础环境可以直接开始进行简单的业务开发。每个spring boot都是一个单体结构,我们可以使用每个spring boot开发一部分业务功能,最后通过其他手段将所有的boot服务串起来,这个就是spring cloud。简单的说,spring cloud就是基于一个或多个boot(只有一个的话其实就不需要cloud了)加上各种功能组件(主要是为了实现高并发)。

最后简单讲讲spring cloud的通用框架结构图,以若依开源框架为例:

1.网关服务:核心是用于解析请求路径,进行服务分发。
2.认证服务:用于鉴权以及解析token获取用户信息。
3.A服务、B服务:各种业务服务,可以扩展更多。
4.异构服务:简单说就是支持其他语言的接入业务处理服务,比如一个业务在支持java的同时还要支持go语言,部署go语言的这套服务就算是一个异构服务。
5.服务注册中心:如nacos,用于统一管理、配置所有服务。

核心就是这五个地方,其他的Sky walking、ELK等等,以后会慢慢给大家普及。

在以上框架中,用户发起的请求完整的声明周期如下:

  • 用户的请求由客户端发起,根据路由识别发送至网关服务,其中由nacos注册中心来分配处理请求的具体服务器。
  • 网关服务处理完成之后根据配置决定是否要进行鉴权处理,需要的话会转发至认证服务进行鉴权,同上,其中由nacos注册中心来分配处理请求的具体服务器。
  • 认证之后,或者无需认证的请求会走到服务层(A、B等以及异构服务)进行具体的业务处理,其中服务之前可以通过feign进行调用,无需重新通过网关或认证服务。
  • 业务处理完成之后就可以带着结果返回给客户端了,到此一个完整、正常的请求声明周期就结束了。

通过这个声明周期我们可以看出,微服务的存在,可以十分灵活的配置各个服务所需资源,尤其是在docker容器部署的概念推广之后,可以更加灵活的对一台服务器的资源进行拆分利用,能最大化的提升系统的运行效率,同时也因为其可独立部署的特点,极大的方便了程序员的开发和测试工作。通过本篇文章,大家除了能更加清楚boot和cloud的关心,相信各位在本地测试springcloud模块业务的时候知道该如果通过不同的请求去启动不同的微服务了。

我是本篇的小编DJ,
遇到Bug需要帮助,
欢迎加wx:xmzl1988 ,
备注"csdn博客",
温馨提示此为有偿服务哦。

更多推荐

浅析SpringCloud