spring远程仓库
SpringCloud:是一个分布式服务治理的框架,所以不会提供具体功能性的操作,更专注于提供服务之间的通讯,监控,熔断等。因此需要很多组件提供相关的功能。
Eureka:服务注册,和服务发现
Zull:服务网关,对客户端和前端请求的分发,对外提供统一的访问入口,再根据请求配置做请求分发,最后到具体的微服务
feign:简化微服务之间的调用复杂度
Hystrix:提供分布式系统的可用性,稳定性。对服务之间调用进行控制,加入调用延迟,依赖故障的容错机制
Eureka server 单点yml配置
hystrix的三个特性:断路器机制、fallback、资源隔离
zul网关配置。strip-prefix:调用服务时自动删除path
有zul网关的访问地址
eureka集群
Hystrix:
断路器机制
Fallback
资源隔离
sssdd
如果引入spring-cloud-starter-netflix-eureka-server失败,请更换父工程pom文件中的spring官方仓库
<repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/libs-milestone/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
<!-- 项目的打包类型, 即项目的发布形式, 默认为 jar. 对于聚合项目的父模块来说, 必须指定为 pom -->
<packaging>pom</packaging>
<name>imooc-homepage-spring-cloud</name>
<description>Project For ImoocHomepage SpringCloud</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<properties>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<!-- lombok 工具通过在代码编译时期动态的将注解替换为具体的代码,
IDEA 需要添加 lombok 插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 标识 SpringCloud 的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 配置远程仓库 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
SpringCloud Hystrix
1、服务雪崩是熔断器解决的最核心的问题。
解决: Hystrix的三个特性:断路器机制、Fallback、资源隔离
1.1 断路器机制:当Hystrix Command请求后端服务器失败数量超过一个阈值比值,断路器就会切换到开路状态
1.2 Fallback:降级回滚策略
1.3 资源隔离:不同的微服务调用使用不同的线程池来管理
数据库及表创建语句
用户信息表和用户课程表:homepage_user、homepage_user_course
数据表的设计与创建
继承zuulfilter
可能存在的问题:Server2、Server3还没完全启动起来,先启动的服务会报错
#mvn clean package -Dmaven.test.skip=true -U
课程总结
1、选择需要的SpringCloud组件去学习、使用
2、先理解组件的含义和功能,再去学习使用组件,最后再考虑研究其原理
3、在理解业务的基础上做服务拆分(注意经验积累)
4、做好服务熔断,避免引起服务雪崩
SpringCloud Hystrix
1、Hystrix的三个特性:断路机制、Fallback、资源隔离
2、断路器机制:当Hystrix Command请求后端服务器失败数量超过一个阈值比值,断路器就会切换到开路状态
3、Fallback:降级回滚策略
4、资源隔离:不同的微服务调用使用不同的线程池来管理
SpringCloud Hystrix
1、服务雪崩是熔断器解决的最核心的问题
SpringCloud Feign
1、Feign:定义接口,并在接口上面添加注释,消费者通过调用接口的形式进行服务消费
SpringCloud Ribbon
1、负载均衡算法
2、app_name转具体的ip:port
SpringCloud Ribbon和Feign
SpringCloudZuul
1、Zuul是一个API Gateway服务器,本质上是一个WebServlet应用
2、Zuul提供了动态路由、监控等服务,这些功能实现的核心是一系列的filters
SpringCloudEureka
1、EurekaServer
2、Eureka Client
课程前置知识
1、Java8
2、Maven
3、Spring
4、SpringBoot