前言:之前看过周阳老师出的SpringCloud第一季,(基本上忘光了)现在又出了SpringCloud第二季,赶紧抓住机会,好好学习,并做好笔记记录下来,防止遗忘,也为了日后能好好复习。
那就结合者一二季的内容,做做笔记,主要以第二季为主。
作为小白,重新开始学起来。先了解一下基本的概念,然后再开始写代码。快开始吧!
springcloud相关概念
- 1.传统单体架构
- 2.服务化架构
- 3.微服务架构
- 4.什么是微服务
- 5.什么是springcloud
1.传统单体架构
单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个web容器,里面集成了所有的功能。这在小型项目里面时比较好维护的,毕竟功能不多,也不复杂,但扩展性和可靠性比较差,因为所有功能集成在一个服务中,修改某个功能时,需要所有服务重新打包。可能前期开发比较快,后期随着功能的增长,交互的周期会越变越长的。
2.服务化架构
服务化架构,也可以称之为SOA架构。
SOA代表面向服务的架构,将应用程序根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。
3.微服务架构
微服务架构是一种架构模式或者是一种架构风格,,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,
服务之间相互协调、互相配合,为用户提供最终价值。服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
微服务化的核心就是将传统一站式应用,根据业务拆成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能服务,一个服务做一件事。从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或者销毁,拥有自己独立的数据库。
4.什么是微服务
微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题的服务应用。
“微服务”与“微服务架构”有着本质的区别:“微服务”强调的是服务的大小,它关注的是某一个点。而“微服务架构”则是一种架构思想,需要从整体上对软件系统进行通盘的考虑。
微服务的优缺点:
服务的好处有:服务独立、扩展性好、可靠性强,但同时,也面临一些新的问题,比如运维复杂性,分布式复杂性、监控复杂性等等。
5.什么是springcloud
SpringCloud是基于SpringBoot的一整套实现微服务的框架。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,基于SpringBoot,会让开发微服务架构非常方便。
SpringCloud的版本关系
SpringCloud采用 英国伦敦地铁站的名称来命名,并由地铁名称字母A-Z一次类推的形式来发布迭代版本。
SpringCloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏,为了管理SpringCloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个SpringCloud对应的子项目版本,为了避免SpringCloud版本号与子项目版本号混淆,SpringCloud版本采用了名称而非版本号的命名,这些版本的名字采用伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。例如Angel是第一个版本,Brixton是第二个版本。当SpringCloud的发布内容积累到临界点或者一个重大BUG给解决后,会发布一个“service releases”版本,简称SRX版本,比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本。
SpringBoot和SpringCloud之间版本有约束,它们之间的对应关系:
关于springCloud各种组件的停更/升级/替换
X 说明已经停更
√ 是我们要重店掌握的。
本课程开发所需的版本
- cloud:Hoxton.SR1
- boot:2.2.2.RELEASE
- cloud alibaba:2.1.0.RELEASE
- java:java8
- Maven 3.5以上
- Mysql:5.7以上