初识微服务

编程 / 微服务 / Spring / 2022-08-17

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

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

架构优缺点

单体架构

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

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

Pasted image 20220817211633

优点

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

缺陷

  1. 耦合度高

分布式架构

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

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

Pasted image 20220817212053

优点

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

缺点

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

技术栈

作用 \ 框架 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

常见技术栈组合

  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 对应版本》