架构比较简单,分为三部份:Haystack Directory, Haystack Cache, Haystack Store
Directory: 即所谓的 meta Server
1. 生成 FID,维护 logical volume 与 physical volume 映射关系,解决上传时的负载均衡问题。
2. 新加入的 Store Server 要在这里注册。
3. 维护 logical volume 的 read-only 属性,只读的 logical volume 不再接受 upload 请求。
4. 决定请求走 CDN 还是内部 Haystack Cache Server.
Cache: 所谓的内部 CDN
1. 对图片 FID 采用一致性 hash 算法保存。
2. 只缓存用户请求,而不是来自 CDN 的请求。
3. 只缓存 write-enabled store 图片,由于上传的时间序,相当于只缓存最新生成的图片。比如说用户刚上传的图片,可能就会存到 Cache 中预热。
Store: 最终落地存储服务
1. 图片顺序追加到一个大文件中,内存中维护图片在文件中的 Offset 和 Size 的索引信息。