Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发

单体架构和微服务

单体架构:

将所有的功能模块全部放在一个工程中开发使用,各个功能模块都是在这一个工程中相互调用,使用同一个数据库

微服务:

将功能拆分成多个模块,也就是多个服务进行开发,每个服务可以单独运行单独部署,每个
服务之间可以相互调用,每个服务可以使用不同的数据库
单体架构优缺点
优点:

  1. 可以节省功能服务之间调用的时间,直接本地调用,不需要远程调用
  2. 易于部署,只需要部署一个项目即可
  3. 易于测试,不需要开启多个服务进行测试
  4. 易于维护

缺点:

  1. 若功能较多,则显得臃肿,一个工程几个G不利于部署
  2. 难于理解,代码难以进行修改和重构
  3. 若一个模块发生错误那么会将整个工程停止并部署,浪费时间
  4. 一个模块出现问题可能会影响整个工程
  5. 技术栈会受到影响,一个工程只能用一种语言开发
  6. 启动时间长 ,开发速度慢、依赖大
微服务:

优点:

  1. 占用空间很小
  2. 易于理解开发维护
  3. 若一个模块发生错误,只需要修改对应的服务即可,不会影响整个工程
  4. 多个服务可以用多个语言进行开发
  5. 一个服务可能只需实现一个功能模块,所以开发简单、效率高
  6. 各个服务之间是松耦合的,每个服务之间是单独部署开发的

缺点:

  1. 分布式事务
  2. 会增加对于整个工程的维护难度
  3. 若服务数量很多,会增加管理的复杂度
  4. 会出现更多的操作,比如说使用zuul、eureka、config服务等
  5. 对于工程的跟踪难度加大

流程:

springcloud yml配置mysql数据源 springcloud数据库_微服务

说明:

  1. 请求会统一通过zuul网关进行访问内部服务
  2. 网关接收到请求之后,会从注册中心获取到可用的服务地址
  3. 然后由ribbon进行负载均衡后来访问具体的服务
  4. 各个服务要将服务注册到服务中心,各个服务之间的调用可以使用Fegin进行通信,在微服务中也可以使用RestTemplete进行服务之间的通讯
  5. Hystrix负责处理服务超时熔断
  6. Turbine负责监控服务之间的调用和熔断相关的额指标