SpringCloud(H版&alibaba)框架开发
-
什么是微服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cyQ3ZaKk-1591528513492)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200604162833981.png)]
-
主题词:基于分布式的微服务架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JmGRJ1ee-1591528513494)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200604163211795.png)]
- 服务注册与发现
- 服务调用
- 服务熔断
- 负载均衡
- 服务降级
- 服务消息队列
- 配置中心管理
- 服务网关
- 服务监控
- 全链路追踪
- 自动化构建部署
- 服务定时任务调度操作
- …
01、SpringCloud简介
-
是什么
SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmwWmZ4D-1591528513495)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200604163649260.png)]
02、SpringCloud技术栈
-
各个技术栈功能介绍
03、SpringBoot&SpringCloud版本选择
SpringBoot版本选择
Boot官方强烈建议升级2.X以上版本
SpringBoot git源码地址 https://github.com/spring-projects/spring-boot/releases
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CY2hQlLX-1591528513497)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200604165022372.png)]
SpringCloud版本选择
SpringCloud官网 https://spring.io/projects/spring-cloud
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLyK1cFk-1591528513500)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200604165158365.png)]
技术版本选择
SpringCloud | Hotin.SR1 |
---|---|
SpringBoot | 2.2.2.RELEASE |
SpringCloud alibaba | 2.1.0.RELEASE |
Maven | Java8 |
Java | 3.5及以上 |
Mysql | 5.7及以上 |
SpringCloud各种组件的停更、升级替换
由停更引发的“升级惨案”
-
停更不停用
- 被动修复bugs
- 不再接受合并请求
- 不再分布新版本
-
旧版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-35dNtQ4I-1591528513502)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200605144428053.png)]
- 新版本
- 服务注册中心:Zookeeper、consul、Nacos
- 服务调用:Ribbon、LoadBalancer
- 服务调用2:Feign、OpenFeign
- 服务降级:Hystrix、resilience4J、sentienl
- 服务网关:Zuul、gateway
- 服务配置:Config、Nacos
- 服务总线:Bus、Nacos
04、实践操作
- 编辑器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRhtrDns-1591528513502)(/Users/chenxiaotian/Library/Application Support/typora-user-images/image-20200605150025105.png)]
- 微服务SpringCloud整体聚合父工程-父工程步骤:
- 1、new Project
- 2、聚合总父工程名称
- 3、Maven选版本
- 4、工程名字
- 5、字符编码
- 6、注解生效激活
- 7、java编译版本选8
- 8、file Type过滤
- 父工程Pom文件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>12</maven.compiler.source>
<maven.compiler.target>12</maven.compiler.target>
<junit.version>4.12</junit.version>
<lombok.version>1.18.10</lombok.version>
<log4j.version>1.2.17</log4j.version>
<mysql.version>8.0.18</mysql.version>
<druid.version>1.1.21</druid.version>
<mybatis.spring.boot.version>2.1.1</mybatis.spring.boot.version>
</properties>
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>