Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发
单体架构和微服务
单体架构:
将所有的功能模块全部放在一个工程中开发使用,各个功能模块都是在这一个工程中相互调用,使用同一个数据库
微服务:
将功能拆分成多个模块,也就是多个服务进行开发,每个服务可以单独运行单独部署,每个
服务之间可以相互调用,每个服务可以使用不同的数据库
单体架构优缺点
优点:
-
可以节省功能服务之间调用的时间,直接本地调用,不需要远程调用
-
易于部署,只需要部署一个项目即可
-
易于测试,不需要开启多个服务进行测试
-
易于维护
缺点:
-
若功能较多,则显得臃肿,一个工程几个G不利于部署
-
难于理解,代码难以进行修改和重构
-
若一个模块发生错误那么会将整个工程停止并部署,浪费时间
-
一个模块出现问题可能会影响整个工程
-
技术栈会受到影响,一个工程只能用一种语言开发
-
启动时间长 ,开发速度慢、依赖大
微服务:
优点:
-
占用空间很小
-
易于理解开发维护
-
若一个模块发生错误,只需要修改对应的服务即可,不会影响整个工程
-
多个服务可以用多个语言进行开发
-
一个服务可能只需实现一个功能模块,所以开发简单、效率高
-
各个服务之间是松耦合的,每个服务之间是单独部署开发的
缺点:
-
分布式事务
-
会增加对于整个工程的维护难度
-
若服务数量很多,会增加管理的复杂度
-
会出现更多的操作,比如说使用zuul、eureka、config服务等
-
对于工程的跟踪难度加大
流程:
说明:
-
请求会统一通过zuul网关进行访问内部服务
-
网关接收到请求之后,会从注册中心获取到可用的服务地址
-
然后由ribbon进行负载均衡后来访问具体的服务
-
各个服务要将服务注册到服务中心,各个服务之间的调用可以使用Fegin进行通信,在微服务中也可以使用RestTemplete进行服务之间的通讯
-
Hystrix负责处理服务超时熔断
-
Turbine负责监控服务之间的调用和熔断相关的额指标