微服务是一种经过良好架构设计的分布式架构方案,微服务具有以下特征:
- 单一职责:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
- 面向服务:微服务对外暴露业务接口。
- 自治:团队独立、技术独立、数据独立、部署独立。
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。
架构优缺点
单体架构
简单方便、高度耦合、扩展性差,适合小型项目。
将业务的所有功能集中在一个项目中开发,打成一个包部署。

优点
- 架构简单
- 部署成本低
缺陷
- 耦合度高
分布式架构
松耦合,扩展性好。但架构复杂,难度大。适合大型互联网项目。
微服务是一种良好的分布式架构方案。

优点
- 降低耦合度
- 有利于服务升级扩展
缺点
- 复杂度增加
- 部署难度增加
技术栈
作用 \ 框架 | Dubbo | Spring Cloud | Spring Cloud Alibaba |
---|---|---|---|
注册中心 | ZooKeeper、Redis | Eureka、Consul | Nacos、Eureka |
服务远程调用 | Dobbo 协议 | Feign (http 协议) | Dubbo、Feign |
配置中心 | 无 | Spring Cloud Config | Spring Cloud Config、Nacos |
服务网关 | 无 | Spring Cloud Gateway、Zuul | Spring Cloud Gateway、Zuul |
服务监控和保护 | dubbo-admin | Hystrix | Sentinel |
常见技术栈组合
- Spring Cloud + Feign:使用 Spring Cloud 技术栈,服务接口采用 Restful 风格,服务调用采用 Feign 方式。
- Spring Cloud Alibaba + Feign:使用 Spring Cloud Alibaba 技术栈,服务接口采用 Restful 风格,服务调用采用 Feign 方式。
- Spring Cloud Alibaba + Dubbo:使用 Spring Cloud Alibaba 技术栈,服务接口采用 Dubbo 协议标准,服务调用采用 Dubbo 方式。
- Dubbo 原始模式:基于老旧的 Dubbo 技术体系,服务接口采用 Dubbo 协议标准,服务调用采用 Dubbo 方式。
框架介绍
Spring Cloud
Spring Cloud 是目前国内使用广泛的微服务框架。集成各种微服务功能组件,并基于 Spring Boot 实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
Spring Cloud 与 Spring Boot 版本需要对应,避免出现各种稀奇古怪问题:《如何选择 SpringCloud 与 SpringBoot 对应版本》