SpringCloud-Alibaba学习(一):概述
1、单体架构
将项目所有功能模块全部一起打成一个 jar 或 war,然后部署运行
扩容伸缩方式:
运行多个容器实例,再通过 nginx 进行负载均衡
优点:
1、部署简单,直接一个 jar 部署
2、技术单一,一般一套技术栈就可以完成开发缺点:
1、系统启动慢,运行时进程包含了所有的业务模块,所以系统启动的时间会比较长
2、系统错误隔离性差、可用性差,一个模块的错误,会导致整个系统的崩溃
3、可伸缩性差,只能在整个项目级别扩容
4、线上问题修复周期长,需要整个项目的重新发布
5、跨语言差,整个项目需要使用统一的开发语言
6、安全性差,所有研发都有所有代码的权限
2、微服务架构
按照业务对项目进行拆分,拆分成高内聚的小的服务模块,每个服务单独开发、部署、运行,多个服务通过网络通信(HTTP、TCP等)完成业务功能。
微服务特点:
1、微服务是一种架构思想
2、微服务架构是一系列小服务的组合
3、任何一个微服务,都是一个独立的进程,可以独立开发、独立部署、独立维护
4、微服务之间通过网络通信(HTTP、TCP等)
5、服务粒度按照业务划分
6、去中心化管理,不同业务模块可以使用不同的语言,可以根据业务的特点,使用合适的技术栈完成
缺点:
- 服务太多,导致服务间的依赖错中复杂,运维难度大,需要一套服务治理方案
- 微服务放大了分布式架构的系列问题
- 分布式事务
- 分布式锁
- 服务注册发现
- 服务不稳定、调用异常,影响其他微服务
3、SpringCloud 与微服务
- SpringCloud 是微服务架构的一套解决方案
- SpringCloud 不是指单独的一个开发框架(如Dubbo、SpringBoot这种),而是一系列开源组件的集合体,基于 SpringBoot 集成这些组件,实现微服务架构下的服务治理、问题解决
一般来说,SpringCloud 是指 SpringCloud-netflix,但由于 netflix 公司对相关微服务组件的闭源和停更,现在更多的使用 SpringCloud-alibaba 系列组件
Spring Cloud官网:
https://spring.io/projects/spring-cloud-alibaba
学习大纲: