12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- How to submit a content
- 1. Find physical volumes
- 1.c Create a hash value
- 1.d find a write logic volume id, and return [logic volume id, {physical volume ids}]
- 2. submit to physical volumes
- 2.c
- generate the cookie
- generate a unique id as key
- choose the right altKey
- send bytes to physical volumes
- 2.s each
- save bytes
- store map[key uint64, altKey uint32]<offset, size>
- for updated entry, set old entry's offset to zero
- 3.c
- wait for all physical volumes to finish
- store the /<logic volume id>/<key>_<cookie>_<altKey>.<ext>
- How to retrieve a content
- 1.c
- send logic volume id
- 1.d
- find least busy volume's id
- 2.c
- send URI /<physical volume id>/<key>_<cookie>_<altKey>.<ext>
- How to submit a content
- 1. send bytes to SeaweedFS, got <volume id, key uint64, cookie code>
- store <key uint64, volume id uint32, cookie code uint32, ext>, and other information
- To read a content
- 2. use logic volume id to lookup a <machine id>
- render url as /<machine id>/<volume id>/<key>/<cookie>.ext
- The directory server
- 0.init
- load and collect <logic volume id, machine ids> mapping
- 1.on submit content
- find a free logic volume id, start sending content to 3 machines
- if all of them finishes, return <logic volume id, key, cookie code>
- 2.on read content
- based on logic volume id, pick a machine with less load,
- return <machine id>
|