- 论坛徽章:
- 0
|
本帖最后由 wwwlovekaikai 于 2012-01-18 16:58 编辑
回复 #9 happy_fish100 的帖子
哥们,你这个系统做得貌似简单其实精巧!
仔细看了下机制,明白文件命名的好处了:
数据文件名由系统自动生成,包括4部分:存储服务器IP地址、当前时间(Unix时间戳)、文件大小(字节数)和随机数。文件名长度为22字节。
step1,tracker收到下载文件的请求时,从v1.2开始就可以直接从请求的文件名内解析出storage_ip和文件上传时间(Unix时间戳)、结合请求传来的的group;
step2.然后从该group存活的storage列表中找这个storage_ip(即该文件原来上传的ip,源ip),要是这个storage_ip停掉了即查找失败,则取该group内的存活的下一个storage_ip1并且比较文件上传时间和该storage_ip1同步时间戳,没有符合条件的好像会取该group内一个存活的ip给客户端。代码内这个机制要是注释清楚一些就更好了:)
step3,storage定期向tracker通报自己的最新做完的文件同步时间戳,这个时间戳需要退出tracker时才flush到storage_servers.dat,运行时我等了十来分钟都没看到更新进去。
storage_servers.dat中记录storage server相关信息,字段依次为:
……
16. stat.last_source_update:最近一次源头更新时间(更新操作来自客户端)
17. stat.last_sync_update:最近一次同步更新时间(更新操作来自其他storage server的同步)
非常感谢快乐鱼
上面是happy_fastdfs的一个回复BZ,FastDFS同步机制的一个回帖。
这个回贴是正确的么?如果正确,那么像这样的fileId:group1/M00/00/05/wKgEIk7oZ4XnI7_JAAFbsTBcHDA572.jpg.我们从哪里知道时间及storageIP的呢?还是后面的文件名是加密处理了? |
|