1、什么是微服务架构

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于http协议的Restful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的服务而言,应当从业务上选择合适的语言、工具对其进行构建。

2、服务架构演变

2.1 单体架构

2.1.1单体架构:

将业务的所有功能都集中在一个项目中开发,打成一个包部署

2.1.2单体架构的优点:

  • 架构简单
  • 部署成本低

    2.1.3单体架构的缺点:

  • 耦合度高

    2.2 分布式架构

    2.2.1分布式架构:

    根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务

    2.2.2分布式架构的优点:

  • 降低服务耦合度

  • 有利于服务拓展升级

    2.2.3服务治理:

  • 服务拆分粒度

  • 服务集群地址如何维护
  • 服务之间如何实现远程调用
  • 服务健康状态如何感知

    2.3微服务

    微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

    • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
    • 面向服务:微服务对外暴露业务接口
    • 自治:团队独立,技术独立,数据独立,部署独立
    • 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题

      3、微服务框架

      image.png

      3.1微服务技术对比

      | | Duubo | SpringCloud | SpringCloudAlibaba | | —- | —- | —- | —- | | 注册中心 | zookeeper、Redis | Eurka、Consul | Nacos、Eurka | | 服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo Feign | | 配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos | | 服务网关 | 无 | SpringCloudGateWay、Zuul | SpringCloudGateWay、Zuul | | 服务监控和保护 | dubbo-admin,功能弱 | Hystrix | Sentinel |

4、SpringCloud

  • SpringCloud是目前国内使用最广泛的微服务框架。
  • SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
  • image.png
  • SpringCloud与SpringBoot的版本兼容关系如下:image.png

    4.1服务拆分及远程调用

    4.1.1服务拆分注意事项

  1. 不同微服务,不要重复开发相同业务
  2. 微服务数据独立,不要访问其他微服务的数据库
  3. 微服务可以将自己的业务暴露为接口,供其他服务调用