初识微服务

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

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

架构优缺点

单体架构

简单方便、高度耦合、扩展性差,适合小型项目。

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

优点

  1. 架构简单
  2. 部署成本低

缺陷

  1. 耦合度高

分布式架构

松耦合,扩展性好。但架构复杂,难度大。适合大型互联网项目。

微服务是一种良好的分布式架构方案。

优点

  1. 降低耦合度
  2. 有利于服务升级扩展

缺点

  1. 复杂度增加
  2. 部署难度增加

技术栈

作用 \ 框架DubboSpring CloudSpring Cloud Alibaba
注册中心ZooKeeper、RedisEureka、ConsulNacos、Eureka
服务远程调用Dobbo 协议Feign (http 协议)Dubbo、Feign
配置中心Spring Cloud ConfigSpring Cloud Config、Nacos
服务网关Spring Cloud Gateway、ZuulSpring Cloud Gateway、Zuul
服务监控和保护dubbo-adminHystrixSentinel

常见技术栈组合

  1. Spring Cloud + Feign:使用 Spring Cloud 技术栈,服务接口采用 Restful 风格,服务调用采用 Feign 方式。
  2. Spring Cloud Alibaba + Feign:使用 Spring Cloud Alibaba 技术栈,服务接口采用 Restful 风格,服务调用采用 Feign 方式。
  3. Spring Cloud Alibaba + Dubbo:使用 Spring Cloud Alibaba 技术栈,服务接口采用 Dubbo 协议标准,服务调用采用 Dubbo 方式。
  4. Dubbo 原始模式:基于老旧的 Dubbo 技术体系,服务接口采用 Dubbo 协议标准,服务调用采用 Dubbo 方式。

框架介绍

Spring Cloud

Spring Cloud 是目前国内使用广泛的微服务框架。集成各种微服务功能组件,并基于 Spring Boot 实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

Spring Cloud 与 Spring Boot 版本需要对应,避免出现各种稀奇古怪问题:《如何选择 SpringCloud 与 SpringBoot 对应版本》