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