什么是微服务

  • 微服务是一种项目架构
  • 微服务把一个庞大的单体应用拆分成一个个的小型服务,这些小型服务可以各自作为独立的SpringBoot项目运行

特点:

  1. 每个小型的微服务都可以独立部署和升级,就算整个系统崩溃,也只会影响一个服务的运行
  2. 微服务之间通过HTTP进行数据交互,不再是单体应用的内部交互了,不同的微服务甚至可以用不同的语言编写, 只需要发送和接收HTTP请求即可,大大的提升了项目的灵活性
  3. 微服务可以被部署到不同的主机上,单机的压力大大减小
  4. 同一个微服务可以存在多个,保证了系统的高可用性

image-20220322090754438

当一个项目的用户量或者项目本身的体量大到一定程度之后就需要进行架构上的升级

SpringCloud

  • 微服务并不是简单地将项目进行拆分,还需要考虑对各个微服务进行管理和监控。微服务通常是一整套的坚决方案,包括服务的注册和发现、容灾处理、配置管理等
  • 微服务维护较为困难
  • 分布式环境下单个服务的某些功能可能会变得更加难以设计和编写

SpringCloud是Spring提供的一整套分布式解决方案,集合了一些大型互联网公司的开源产品,其内包含了诸多的组件,共同形成了SpringCloud框架。上述提到的服务注册发现、配置中心、消息总线、均衡负载等均可以SpringBoot风格进行编写并做到一键启动和部署/

image-20220322102706256

常用组件

  • Eureka - 服务注册和发现
  • SpringCloudLoadBalancer - 提供均衡负载算法
  • Hystrix - 断路器,保护系统,控制故障范围。链路追踪等
  • SpringCloudGateway - api网关,负责请求的路由和分发
  • Config - 配置管理,实现配置文件的集中管理