2022.11.04更新
按下面方法依然解决不了问题,所以又有了一个想法,可不可以每次上传图片只选择固定的一台storage服务,另一台只做备份用,这样虽然同步有延时,但是图片回显的问题就可以解决了。
答案是当然可以了,下面是解决方法:
1、修改 tracker.conf 配置文件
修改tracker.conf 中 store_server=2,默认是0
- 选择哪个storage server 进行上传操作
- 0: 轮询方式
- 1: 根据 ip 地址进行排序选择最小ip
- 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)
# which storage server to upload file
# 0: round robin (default)
# 1: the first server order by ip address
# 2: the first server order by priority (the minimal)
store_server=2
重启 tracker
fdfs_trackerd /etc/tracker.conf restart
2、修改 storage.conf 配置文件
修改我们要选择的strage 服务中的 storage.conf中的 upload_priority=-1(此值越小优先级越高,可以为负数)
# the priority as a source server for uploading file.
# the lower this value, the higher its uploading priority.
# default value is 10
upload_priority=-1
重启 storage
fdfs_storaged /etc/storage.conf restart
============================================================================
============================================================================
FastDFS上传过程
- FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。Storage Server会定期的向Tracker Server发送自己的存储信息。
- 当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。
- 当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
FastDFS的同步
- 当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。
- 当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
- 写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。
场景:
在fastdfs新加了一台storage服务之后,
通过上传图片的组件上传成功之后,由于需要回显图片,如果存在延时,会出现图片破裂的情况,所以在这里需要把文件同步的时候调小。
vim /etc/storage.conf
# sync_binlog_buff_interval 参数调短即可。
# 然后重启storate服务
fdfs_storaged /etc/fdfs/storage.conf restart
问题得到解决: