FastDFS分析: 是分布式文件系统,linux(本身就是一个文件系统)操作系统上的文件系统,只需要调用api即可,因为linux不能很好有效的管理文件,使用 FastDFS等同于操作linux, FastDFS可以很好的对文件,视频等进行管理
FastDFS 架构工作原理:
Tracker server (调度服务器)和 Storage server(存储服务器)。客户端(发起请求)请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
1.客户端发起文件上传请求,来到调度服务器进行负载均衡的策略,将存储服务器地址给到客户端
1.1存储服务器在启动的时候会将自己的地址交给调度服务器
2.调度服务器将存储服务器的地址
3.客户端拿到地址发送请求进行调用存储服务器
4.告诉客户端文件上传成功/失败
Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。(多个组之间的数据是不一样的,组里面的成员有相同的数据(备份))
文件上传分析:
客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
文件下载分析:
客户端下载请求到Tracker服务,Tracker返回给客户端storage的信息,客户端根据这些信息进行请求storage获取到文件。
FastDFS的使用: ---默认端口是22122
1.导入依赖
2.配置文件中配置FastDFS
3.注入FastFileStorageClient对象,完成文件上传
缓存:
实现缓存的方式:
1.每个接口单独控制缓存逻辑
2.统一控制缓存逻辑
-
Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;
-
Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache ,ConcurrentMapCache等;
-
每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。
-
使用Spring缓存抽象时需关注的两点:
- 确定方法需要被缓存以及他们的缓存策略
- 从缓存中读取之前缓存存储的数据
- 缓存使用在服务消费者类中
- 在服务消费者启动类中开启缓存
- 需要在服务消费者中加入SpringDataRedis 的依赖,配置文件中需要进行配置
名称 | 解释 |
---|---|
Cache | 缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等 |
CacheManager | 缓存管理器,管理各种缓存(cache)组件 |
@Cacheable | 主要针对方法配置,能够根据方法的请求参数对其进行缓存 |
@CacheEvict | 清空缓存 |
@CachePut | 保证方法被调用,又希望结果被缓存。 与@Cacheable区别在于是否每次都调用方法,常用于更新 |
@EnableCaching | 开启基于注解的缓存 |
keyGenerator | 缓存数据时key生成策略 |
serialize | 缓存数据时value序列化策略 |
@CacheConfig | 统一配置本类的缓存注解的属性 |
SpEL提供了多种运算符 :
类型 | 运算符 |
---|---|
关系 | <,>,<=,>=,==,!=,lt,gt,le,ge,eq,ne |
算术 | +,- ,* ,/,%,^ |
逻辑 | &&,||,!,and,or,not,between,instanceof |
条件 | ?: (ternary),?: (elvis) |
正则表达式 | matches |
其他类型 | ?.,?[…],![…],^[…],$[…] |