spring-cloud-alibaba
1.学习视频
https://www.bilibili.com/video/BV1Mt4y1i7JW?p=1
2.参考网站
2.1 版本选择
https://spring.io/projects/spring-cloud-alibaba
点击左边菜单 spring cloud/ spring cloud alibaba/ 可以看到稳定版本时2.2.1RELEASE版.
然后在https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
毕业版本依赖关系(推荐使用)中找到推荐使用的版本. 以此填写父pox.xml
2.2其他参考网址:
springboot集成 参见https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 注意参考它的完整示例代码
nacos官网 https://nacos.io/zh-cn/docs/what-is-nacos.html
nacos下载https://github.com/alibaba/nacos/releases/tag/2.0.0-bugfix
二. 项目构架
注意事项1. model,vo修改了,需要通知其他项目对应修改
注意事项2. 启动顺序. 先启动单体项目, 然后启动schedule项目(预热和定时任务). 再启动web(权限相关的请求), 最后启动网关(最终提供服务), 服务之前可以相互调用,但是不要相互pom依赖(依赖了运维不方便)
1.所有项目依赖于common项目, common提供通用的配置, 如设置openfeign调用传递header中的登录信息,日志的配置
2.schedule定时器,同时提供缓存预热
3.单体项目,只提供接口,通过OpenFeign相互调用
4.web只提供权限认证,jwt与springsecurity. jwt参见(https://blog.csdn.net/weixin_42552315/article/details/114536194)
5. gateway对外唯一暴露的接口(其他的只能通过内外ip访问), 转发规则不需要权限认证的直接转发到单体项目; 需要权限的转发到web项目
6.nacos服务治理,seata分布式事务.
三. 知识点
openfeign的引入
1. pom.xml添加spring-cloud-starter-openfeign依赖;
2. 主启动类加@EnableFeignClients
3.接口加注解,参见CarClient
4. 负载均衡,默认是轮询; 如果要实现权重, 必须自己实现AbstractLoadBalancerRule类, 然后application.yml中加
provider
5. 设置超时时间(默认1秒),application.yml中加
ribbon
6.openfeign调用传递header参数
A. filter获取本项目的userInfo, userInfo = request.getHeader("userInfo "); 并把userInfo 绑定到当前线程中; 这样本项目内到处都能获取到userInfo了
B. 写个拦截器TransmitUserInfoFeighClientIntercepter实现RequestInterceptor, 并配置为bean即可
seata使用
1.依赖引入
<!--seata需要的 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2.设置代理数据源为项目的数据源
3.model类中id指端必须写全注释
流量控制一般使用直接限流即可
降级处理 (降级是指给纠错机会) --(窗口期时指多久后重新开张)
rt模式: 从第一个超时开始算, 如果接下来1秒内的5个都超时,才抛异常. 5此纠错机会.
异常比例: 每秒x%报错. (该版本有问题)
1. 引入依赖
<!--sentinal流量控制, spring-boot-starter-actuator是监听的-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. yml配置配置监听路径和sentinal后台地址
#配置暴暴露地址, 去掉此段代码, 默认也会全部暴露 (这段可以不要)
management
四. 项目约定
1. 获取请求用@GetMapping
2. 添加/修改用@PostMapping
3. 删除用@DeleteMapping
4. 如果还有其他的用@PutMapping (一般不用)

浙公网安备 33010602011771号