前台
一. 课程介绍
1.1 课程导学
-
什么是SpringCloudAlibaba?
- 阿里巴巴结合自身微服务实践,开源的微服务全家桶
- 在Spring Cloud项目中孵化,很可能成为Spring Cloud第二代标准的实现
- 在业界广泛使用,已有很多成功案例
-
Spring Cloud Alibaba真实应用场景
- 大型复杂的系统,例如大型电商系统
- 高并发系统,例如大型门户,秒杀系统
- 需求不明确,且变更很快的系统,例如初创公司业务系统
-
Spring Cloud Alibaba与Spring Cloud
- 简单来说,SpringCloud Alibaba是SpringCloud的子项目,它是SpringCloud第二代的实现;
- 图示如下:

- 总结来说:
- 组件性能更强
- 良好的可视化界面
- 搭建简单,学习曲线低
- 文档丰富并且是中文
-
阅读本博客你能学到什么?
- SpringCloud Alibaba核心组件的用法及实现原理
- SpringCloud Alibaba结合微信小程序,从“0”学习真正开发中的使用
- 实际工作如何避免踩坑,正确的思考问题方式
- SpringCloud Alibaba的进阶:代码的优化和改善,微服务监控
-
课程进阶会讲那些内容?

-
课程思路:
- 分析并拆解微服务
- 编写代码
- 分析现有架构问题
- 引入微服务组件
- 优化重构
-
SpringCloud Alibaba的重要组件精讲,如图所示:



1.2 项目环境搭建
-
课上用到的软件
- JDK8
- MySQL
- Maven安装与配置
- IDEA及一些快捷键
-
安装Maven:
- 我们可以用IDEA自带的Maven,也可以自行下载安装Maven使用
-
安装JDK和MySQL
- 我们可以通过网上搜索相关教程安装
二. SpringBoot基础
2.1 本章概述

2.2 Spring Boot是什么?能做什么?
- 是什么?
- SpringBoot是一个快速开发的脚手架
- 作用?
- 快速创建独立的、生产级的机遇Spring的应用程序
- 特性?
- 无需部署WAR文件
- 提供starter简化配置
- 尽可能自动配置Spring以及第三方库
- 提供“生产就绪”功能,例如指标、健康检查、外部配置等
- 无代码生成&无XML
2.3 编写第一个SpringBoot应用
- 需求:
- 整合Spring MVC
- /test路径,我们成为“端点”
- 使用Spring Initializr快速创建SpringBoot 应用
- 点击Create New Project -> Spring Initializr -> 配置JDK-> 选择Default-> 点击Next,如图所示:

- 根据自己实际配置好Group及Artifact,Type选Maven(若为Gradle项目也可以选Gradle),其他根据实际配置,如图所示:

- 选择需要的依赖,同时选择SpringBoot版本,其中如图所示的,除了2.1.5外,上方的都不是正式版,所以我们选择版本为2.1.5,如图所示:

我们可以自己部署一个Costom,结合官方文档和网上文章,当为内王环境时,自己就可以部署一个,如图所示:

复制代码
- 创建接口并启动访问,如图所示:

通过启动启动类,直接就可以运行项目,我们不需要打war包再放到tomcat中了;
2.4 Spring Boot应用组成分析
- 依赖:

- 注解:

- 配置:

- 静态文件:
- resource/static目录
- 模板引擎:
- 支持:Freemarker、Groovy、Thymeleaf、Mustache
- 现在逐渐前后端分离开发,模板引擎用的越来越少了
- resource/templates 目录
2.5 SpringBoot 开发三板斧
- 加依赖(整合什么,就加什么的依赖)
- 官方提供的starter格式: spring-boot-starter-xxx
- 非官方提供的starter格式: xxx-spring-boot-starter
- 写注解:
- 某些需要用到注解的,需要在启动类上或者指定的地方上加上注解
- 写配置:
- 可以是Bean类型的配置类
- 也可以是在resource下的yml&properties&等加配置
2.6 必会 Spring Boot Actuator
| 是什么? |
|---|
- 如何整合?
-
加依赖: org.springframework.boot spring-boot-starter-actuator 复制代码
-
直接启动,访问:ip:端口/actuator
- health: 健康检查
-
我们在application.yml中配置,让健康检查更加详细: management.endpoint.health.show-details=always 复制代码
-
如图所示:
-
- health: 健康检查
-

- status取值:
- UP: 正常
- DOWN: 遇到了问题,不正常
- OUT\_OF\_SERVICE: 资源未在使用,或者不该去使用
- UNKNOWN: 不知道
- info:不是用于监控的,我们一般用于描述应用,使用key-value形式去写,如图所示:

- 展示内容如图:

- 提供的监控端点如图(此处列的是常用的,可以去官方文档查看全部的):

- 激活所有的Acttuator端点,在application.yml中添加:

- 激活指定的端点: management.endpoints.web.exposure.include=metrics,health 复制代码
多个以逗号隔开
2.7 必会 Spring Boot 配置管理
-
支持的配置格式:
- application.yml
- application.yaml
- application.properties
properties中的值若为 * ,在yml中则需要改为 “*” yml>yaml>properties 执行顺序,如果有重复内容,则properties为最终的结果
-
环境变量:
- 以 ${xxx} 形式标记变量名,在IDEA中可在 Environment variables 中添加环境变量,如图所示:


- 外部配置文件
- spring-boot能够读取外部的配置文件,将其配置文件放同一路经下即可,且外部的配置文件优先级更高,如图所示:

- 命令行参数:
-
命令行中: java -jar xxx.jar --server.port=8081 复制代码
-
IDEA中:
-

2.8 必会 Profile
- 如何实现不同环境不同配置?
- 方式一:
- 配置如图:
- 方式一:

- 在IDEA中指定要启动的环境:

- 不指定环境配置的时候,就只执行公共部分的配置,我们可以配置默认的环境配置方案,如图所示:

- 方式二:
- 我们也可以创建出多个profile配置文件,然后在配置的时候选择指定的配置文件,如图所示:

2.9 本章总结
- 使用Spring Initialize快速创建应用
- 应用组成分析
- 三板斧
- Actuator
- 配置管理
- Profile
三. 微服务的拆分与编写
3.1 本章概述

3.2 单体应用
- 什么是单体架构?
- 一个归档包(例如War包)包含所有功能的应用程序,我们通常称为单体应用。而架构单体应用的方法论,就是单体应用架构
- 单体架构的优点
- 架构简单
- 开发、测试、部署方便
- 单体架构的缺点:
- 复杂性高
- 部署慢、频率低
- 扩展能力受限(比如IO操作多的,和CPU操作多的,不能物尽其用)
- 阻碍技术创新(更换技术栈不方便)
3.3 微服务
-
微服务定义
- 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动和部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术;
-
微服务的特性:
- 每个微服务可独立运行在自己的进程里
- 一系列独立运行的微服务共同构建起整个系统
- 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等
- 可使用不同的语言与存储技术(契合项目情况与团队实力)
- 微服务之间通过轻量的通信机制进行通信,例如通过REST API进行调用;
- 全自动的部署机制
-
微服务架构图:

-
微服务的优点:
- 单个服务更易于开发、维护
- 单个微服务启动较快
- 局部修改容易部署
- 技术栈不受限
- 按需伸缩
-
微服务的缺点:
- 运维要求高
- 分布式固有的复杂性
- 重复劳动
-
微服务的适用场景
- 大型、复杂的项目
- 服务压力大
- 变更较快的服务

这是一份全面介绍Spring Cloud Alibaba的教程,从微服务的拆分与编写开始,逐步讲解Spring Boot基础,深入探讨服务发现机制,重点介绍了如何使用Nacos进行服务注册与发现。教程还涵盖了负载均衡、Feign的使用以及Sentinel服务容错机制,旨在帮助开发者掌握微服务架构中的关键技术和最佳实践。
最低0.47元/天 解锁文章
1067





