目录
1.1、配置依赖、配置yml文件、主启动类加注解(开启服务)(单机)编辑
十一、SpringCloud Alibaba(后面几章的内容都是围绕Alibaba)
Spring Cloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。
版本选择去官网看:
一、IDEA新建project工作空间
1、工程重构:重复代码整合
重复的代码
二、服务注册与发现
1、Eureka
1.1、配置依赖、配置yml文件、主启动类加注解(开启服务)(单机)![](https://img-blog.csdnimg.cn/0cafb7b66ad84671a6d23be0d9243f3a.png)
2.2、启动使用(单机)
让某某类注册到服务中
启动结果
2.3、修改映射配置添加进hosts文件(集群配置)
2.4、配置yml文件(集群配置)
将8001端口注册到7001端口和7002端口服务中,
8001的yml配置:
2.5、负载均衡
控制类:
这个注解默认是轮询,两个端口换着访问
2.6、优化
优化前:
解决方案:
修改yml文件:
优化后:
2.7、yml文件最终配置、主启动类的注解
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
#单机版
#defaultZone: http://localhost:7001/eureka
#集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8001
prefer-ip-address: true #访问路径可以显示IP地址
2.8、关闭保护机制
2、Zookeeper
2.1、添加依赖、yml配置文件、主启动类
如果版本冲突就换依赖:
2.2、测试
3、Consul
3.1、添加依赖、配置yml文件、主启动类
4、Nacos
5、前三种服务注册中心的解析
三、服务调用、负载均衡
1、Ribbon负载均衡服务调用
1.1、概述
1.2、Ribbon负载均衡演示
添加依赖:
一般配合RestTemplate的使用
使用:
1.3、Ribbon核心组件IRule
替换方式:
写类的内容:
在主启动类中添加新注解:
1.4、Ribbon负载均衡算法
2、OpenFeign服务接口调用
2.1、概述
2.2、使用步骤:
添加依赖:
主启动类上开启:
2.3、OpenFeign超时控制
设置yml配置文件
2.4、OpenFeign日志打印功能
首先,建config包,在包里建FeignConfig类
在yml配置文件配置:
五、服务降级(解决服务雪崩)、服务熔断、服务限流、服务隔离
1、Hystrix(断路器)
1.1、服务降级
1.4的解决方案
8001端口(支付微服务)设置降级服务
80端口(消费者)
配置yml文件
主启动类加注解
业务类代码
目前还会有以下问题
解决:
8001端口处理方式
80端口处理方式
1.2、服务熔断
1.4问题在1.1的解决方案上继续优化
8001端口(服务端)
Service类中
说明
1.3、服务限流
1.4、使用
可以用在客户端和服务端,一般会用在客户端
添加坐标
高并发测试导致的故障现象和原因
解决方案
对方服务(8001)ok,调用者(80)自己出故障或有自我要求(自己的等待时间小于服务提供者),自己处理降级
解决方案:上面有详细过程
1.5、服务监控hystrixDashboard
新建一个类
添加依赖
主启动类添加新注解
其他主启动类要被hystrix监听的话,要加上这一个配置(放在主启动类中)
启动之后
被监听的类都必须带有以下两个依赖
监听端口号
查看情况并分析
六、服务网关
1、Gateway新一代网关
介绍
1.1、入门配置
引入依赖
1.2、路由:
配置yml文件:方式一,少量路由可以用
当数量庞大的话就用:方式二,配置类
使用返回结果
1.3、断言:
1.4、过滤:
自定义过滤器
新建包、新建类
七、服务配置
为什么需要服务配置
因为项目越大,application.yml配置文件越来越多,里面的重复代码也越来越多。
1、Config
1.1、使用
3344端口
添加依赖
配置yml文件
主启动类加注解
修改windows的hosts文件
获取GitHub上的配置文件
新建3355端口去获取3344的全局环境配置(3344从GitHub上获取的全局环境配置信息)
添加依赖
配置yml文件(bootstrap.yml)
配置解析
实现成功
1.3、Config客户端之动态刷新
为什么要用动态刷新
解决:
在3355端口
添加依赖
添加yml配置文件
在控制类中添加新注解
需要多做一步控制类的注解才会生效
多个端口的情况
需要用到消息总线(服务总线)的功能可以解决
八、服务总线
这是七里的问题
1、Bus
1.1、概述
1.2、RabbitMQ环境配置
自行安装Rabbit MQ
1.3、Spring Cloud Bus动态刷新全局广播
设计思想
1):
2):
选择:
使用:
3344端口:
添加依赖
配置yml文件(application.yml)
15672是rabbit的web管理页面的端口,5672才是rabbit的默认服务端口
记得rabbitmq前面有空格,并且在spring下面
3355、3366端口:
添加依赖
配置yml文件(bootstrap.yml)
刷新
1.4、Spring Cloud Bus动态刷新定点通知
九、消息驱动
1、Spring Cloud Stream
1.1、消息驱动生产者
8801端口
添加依赖
配置yml文件
建service
建controller
1.2、消息驱动消费者
8802和8803端口
引入依赖
配置yml文件
写controller类
1.3、分组消费和持久化
重复消费的问题,以及解决
分组,不同组会造成重复消费
修改yml文件
同组不会造成重复消费
解决持久化问题
原因
解决方案还是yml配置gruop分组属性
十、分布式请求链路跟踪
1、SpringCloud Sleuth
1.1、概述
1.2、搭建链路监控步骤
第一步:下载zipkin,并运行
解释上图
第二步:在8001和80端口引入依赖、配置yml文件
第三步:查看
十一、SpringCloud Alibaba(后面几章的内容都是围绕Alibaba)
1、能干什么
2、使用
引入依赖
十一、Nacos服务注册和配置中心(Alibaba)
切换模式的命令
1、安装
2、服务注册的使用
新建9001和9002端口(服务提供者)
添加依赖
配置yml文件
主启动类添加注解
新建83端口(服务消费者)
添加依赖
配置yml文件
主启动类添加注解
运行效果
3、配置中心的使用
新建3377端口
添加依赖
配置yml文件(bootstrap配置全局配置、application配置自己的配置)
bootstrap
application
主启动类添加注解
controller类
在配置中心配置yml文件
3.1、多环境多项目管理![](https://img-blog.csdnimg.cn/ddf76f84949c4a1683403c37338e1588.png)
分组
命名空间
配置yml文件
3.2、Nacos集群和持久化配置
持久化配置
Linux配置nacos集群
修改startup.sh文件
执行
总结
十二、Sentinel实现熔断与限流(Alibaba)
1、安装运行
运行
2、使用
创建8401端口
添加依赖
配置yml文件
主启动类添加注解
总结
3、流控规则
预热
4、降级规则
5、热点key限流
配置:资源名与@SentinelResource的value属性同名
另一种情况
配置
6、系统规则
7、@SentinelResource(兜底方案)
注意:该注解不支持private方法
自定义兜底方案
解决代码膨胀
8、服务熔断功能 fallback
8.1、 Sentinel整合Ribbon
fallback只负责运行时异常
忽略属性
8.2、Sentinel整合Feign
84端口
添加依赖
配置yml文件
主启动类添加注解
service层
8.3、总结:熔断框架区别
9、持久化规则
配置8401端口
添加依赖
配置yml文件
添加Nacos业务规则配置
十三、Seata处理分布式事务(Alibaba)
1、Seata-Server安装和修改配置
service模块
store模块
在seata库建表
修改registry.conf配置文件
先启动nacos再启动seata
2、使用
创建数据库和表
创建业务模块
订单端口2001
库存2001端口
账号2002端口
添加依赖
配置yml文件
添加file.conf文件,并将seata的file.conf文件拷贝进来
添加registry.conf文件,并将seata的registry.conf文件拷贝进来
主启动类
测试