版本配置(避免冲突换版本麻烦):
SpringBoot : 2.6.13
SpringCloud alibaba : 2021.0.5.0
nacos : 2.2.0
nacos依赖 : 2021.0.5.0
bootstrap : 3.1.1
文章目录
SPRING CLOUD微服务框架概要介绍
一、三种架构介绍
1.1 单体架构与分布式架构
1.1.1 单体架构
概述:将业务的所有功能集中在一个项目中开发,打成一个包部署
优点: 架构简单、部署成本低
缺点: 耦合度高
部署到Tomcat,用户直接访问。用户量增加后就多部署几台服务器形成集群。
1.1.2 分布式架构
**概述:**根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
优点: 降低服务耦合、利于服务升级拓展
但由于分布式架构的特性也引申出了以下几个问题:
服务拆分粒度如何?
服务集群地址如何维护?
服务之间如何实现远程调用?
服务健康状态如何感知?
为了解决分布式带来的问题,微服务出现了
1.2 微服务架构
微服务是一种经过良好架构设计的分布式架构方案
微服务架构具备以下特征:
单一职责: 微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
面向服务: 微服务对外暴露业务接口
自治: 队独立、技术独立、数据独立、部署独立
隔离性强: 服务调用做好隔离、容错、降级,避免出现级联问题(避免某个模块宕机造成影响)
1.3 三种架构特点总结
序号 | 架构 | 优点 | 缺点 |
---|---|---|---|
1 | 单体架构 | 简单方便 | 高度耦合,扩展性差,只适合小型项目 |
2 | 分布式架构 | 松耦合,扩展性好 | 架构复杂,难度大,适合中大型互联网项目 |
3 | 微服务架构 | 拆分粒度更小、服务更独立、耦合度更低 | 架构复杂,运维、监控、部署难度提高 |
二、SPRING CLOUD微服务框架
2.1 框架结构
微服务架构是一种将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些服务的集中管理几乎没有,它可以用不同的编程语言编写并使用不同的数据存储技术。
他具有以下特点:
1. 将一个完成的项目,拆分成多个模块去分别开发。
2. 每一个模块都是单独的运行在自己的容器中。
3. 每一个模块都是需要相互通讯的。 Http(Spring Cloud),RPC(Dubbo),MQ(Spring Cloud)。
4. 每一个模块之间是没有依赖关系的,单独的部署。
5. 可以使用多种语言去开发不同的模块。
6. 使用MySQL、Redis、ES、Mongo等存储数据,也可以使用多个同种数据库。
在微服务架构中,配置中心和注册中心是两个重要的组件。
配置中心用来统一管理项目中所有配置,各种参数、各种开关,全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。当各个服务需要获取配置的时候,就来「配置中心」的接口拉取。
注册中心则是用来管理服务实例的注册和发现的。各个服务实例在启动时会向注册中心注册自己的信息(如IP地址和端口号),其他服务实例可以通过注册中心来发现并调用这些服务。
2.2 技术对比
序号 | 模块名称 | Dubbo | SpringCloud | SpringCloudAlibaba |
---|---|---|---|---|
1 | 注册中心 | Zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
2 | 服务远程调用 | Dubbo | Feign | Dubbo、Feign |
3 | 配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
4 | 服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
5 | 服务监控和保护 | Dubbo-admin | Hystrix | Sentinel |