我有多个CouchDB服务器,想要让它们相互同步,并且我使用这些服务器来分享大文件(例如>100MB)。为了保持它们的同步,我让每个CouchDB实例从其他实例进行持续拉取复制。
以下是一个示例:我有三个CouchDB服务器A、B和C,它们都从彼此进行持续拉取复制,如下所示:
我的问题是,由于C还从B进行连续拉取复制,在C仍在传输来自A的文档时,C是否会开始复制相同的文档从B?
我猜这种情况会发生,因为据我所知,CouchDB复制并不会将目标上的复制文档存储(使用_bulk_docs API),直到文档(包括附件)已经完全从源获取[1]。我对这种情况感到担忧,因为这将是冗余的,并且浪费大量带宽。
以下是一个示例:我有三个CouchDB服务器A、B和C,它们都从彼此进行持续拉取复制,如下所示:
------- <------------- -------
| A | -------------> | B |
------- -------
^ | | ^
| | | |
| V | |
------- <---------------- |
| C | -------------------
-------
有人将一个带有500MB附件的文档上传到服务器A。B和C都从A开始复制该文档,而B在C之前完成了复制:
------- doc -------
| A |--------------->| B |
------- -------
|
| doc
V
-------
| C |
-------
我的问题是,由于C还从B进行连续拉取复制,在C仍在传输来自A的文档时,C是否会开始复制相同的文档从B?
------- -------
| A | | B |
------- -------
| doc |
doc| |------------------
| |
V V
-------
| C |
-------
我猜这种情况会发生,因为据我所知,CouchDB复制并不会将目标上的复制文档存储(使用_bulk_docs API),直到文档(包括附件)已经完全从源获取[1]。我对这种情况感到担忧,因为这将是冗余的,并且浪费大量带宽。
[1] https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm