微服务架构

从前的项目是使用单体架构,单体架构是指将业务的所有功能集中在一个项目中开发,打成一个包部署

单体架构的优点是:

  • 架构简单;
  • 部署成本低。

缺点是模块之间的耦合度高,不利于大型项目开发。

随着互联网行业的发展,服务架构从单体架构逐渐演变为现在流行的微服务架构(属于分布式架构的一种)。

微服务架构

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

分布式架构的优点:

  • 降低服务之间的耦合;
  • 有利于服务升级拓展。

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

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责。
  • 自治:团队独立、技术独立、数据独立,独立部署和交付。
  • 面向服务:服务提供统一标准的接口,与语言和技术无关。
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

微服务按照服务的不同将项目分为不同的项目,每个项目运行一个服务。

例如,将用户服务和订单服务分为两个项目。

微服务技术栈

微服务技术栈包括:

  • 微服务技术
  • 异步通讯技术
  • 缓存技术
  • DevOps
  • 搜索技术

微服务技术

在国内知名的微服务落地技术有SpringCloud和阿里的Dubbo。

常见微服务技术的对比:


Dubbo SpringCloud SpringCloudAlibaba
注册中心 ZookeeperRedis Eureka、Consul Nacos、Eureka
服务远程调用 Dubbo协议 Feign(HTTP协议) Dubbo、Feign
配置中心 SpringCloudConfig SpringCloudConfig、Nacos
服务网关 SpringCloudGateway、Zuul SpringCloudGateway、Zuul
服务监控和保护 dubbo-admin(功能弱) Hystix Sentinel

SpringCloud 官网

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配。而SpringCloud与SpringBoot的之间的版本存在一个兼容关系,可通过官网的说明文档查看。