SpringCloud
理解
- 把一个项目根据业务拆分为一个个小项目,每个项目都是独立的,有自己的数据库。服务之间使用轻量级HTTP交互。每个项目都可以部署多份,达到高可用、高性能、高拓展性。
- 对springcloud的认识:把一个个springboot项目组合在一起,注册到注册中心,可以通过http请求的方式互相获取数据。
组件
一、组件
☆、nacos:服务注册、配置中心
使用:引入依赖、开启服务注册与发现功能@EnableDiscoveryClient
持久化:导入naocs持久化的表,在配置文件中添加数据库的连接信息。
☆、Feign:远程调用
使用:引入依赖、调用方启动类上开启远程调用功能,要指定远程调用功能放的基础包,@EnableFeignClients(basePackages=“com.atguigu.gulimall.member.feign”)、调用方里面编写接口,
在接口里声明@FeignClient(“gulimall-coupon”)他是一个远程调用客户端且要调用coupon服务,然后编写要调用哪个方法,要调用coupon服务的/coupon/coupon/member/list方法
☆、gateway:路由转发,权限校验,流量控制
使用:创建网关模块,开启服务的注册与发现、配置注册中心地址、配置文件中配置路由转发规则。
☆、sentinel:网关流控
☆、sleuth(追踪) +Zipkin(可视化)链路追踪:查看调用关系
使用:
1.下载zipkin的jar包并运行。
2.引入了zipkin的依赖(引入了zipkin就相当于引入了sleuth)。
3.配置文件中配置一下zipkin和sleuth,然后启动项目,启动项目后随便访问几个功能,浏览器输入192.168.56.10:9411去查看。
nacos
启动
☆、windows下启动:切到nacos的bin目录下,执行startup.cmd -m standalone(standalone单机模式,本地开发的时候用)
作为配置中心
初级
☆、可以就配一个bootstrap.properties文件,里面就配nacos的配置就行了
☆、项目中创建/src/main/resources/bootstrap.yml
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
#配置文件的格式,一定要加,不然找不到
file-extension: yml
server-addr: 127.0.0.1:8848
#命名空间ID
namespace: 6d309673-5cf9-41f3-9e3d-177f80aab1a8
☆、浏览器去nacos里的配置列表,点击+号,data ID:gulimall-coupon.yml,然后配置相关信息。
☆、拓展:
1.在配置了bootstrap.yml的情况下,bootstrap.yml的优先级高于application.yml。
2.实时获取nacos里面的参数可以在controller上加上@RefreshScope注解,不需要重启项目;如果修改了数据库配置等信息,需要重启项目。
命名空间
☆、分割dev 、test 、 prod环境。
☆、步骤
最后在bootstrap.yml里面配置命名空间ID
配置集
☆、一个命名空间里面写多个配置文件组合着用。也可以在一个命名空间里面把文件分成dev 、test 、 prod,改4就可以。
☆、bootstrap.yml文件
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
#-----1
group: dev
#命名空间ID-----2
namespace: 86453789-6c92-4e1c-a7a8-69131c344c94
server-addr: 127.0.0.1:8848
ext-config:
#----3
- data-id: datasource.yml
#---4
group: DEFAULT_GROUP
refresh: true
- data-id: mybatis.yml
group: DEFAULT_GROUP
refresh: true
- data-id: other.yml
group: DEFAULT_GROUP
refresh: true
热更新
feign
- 参数是集合时接收不需要用@RequestParam
设置超时时间
#设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
ConnectTimeout: 500
gateway
☆、参考谷粒笔记基础篇-1。
☆、配置写法。
sentinel
作用
- 限流 熔断 降级
集成
- 官方文档
自定义被限流后返回的内容
- 写一个配置类
对feign远程调用进行监控
- 集成参考官方文档
- 默认情况下,sentinel是不会对feign远程调用进行监控的,需要开启配置
feign:
sentinel:
enabled: true - 调用方feign接口中编写被限流后的处理类(这样被限流降级后不会调用到被调用方)。
@FeignClient(value = “gulimall-seckill”,
fallback = SeckillFallbackService.class) - 也可以设置被调用方的熔断策略
1.一般不这么做,在以下情况下可以这么做
2.要在被调用方写一个配置类,返回设置熔断后的返回数据。
自定义受保护的资源
- 代码的方式
- 注解的方式
网关流控
sleuth(追踪) +Zipkin(可视化)调用链路追踪
- 作用:查看调用关系,当调用慢时查看是网络慢还是服务慢。由于微服务项目模块众多,相互之间的调用关系十分复杂,因此为了分析工作过程中的调用关系,需要进行链路追踪。