Couchbase Sync Gateway用於在couchbase服務器中獲取數據庫更改的機制。Couchbase Sync Gateway如何獲取Couchbase Server更改?
- 它做了一個長時間的投票或創建一個websocket連接?
- 還是經常調用Couchbase服務器REST API?如果是這樣,那麼哪個REST API以及它在該REST API的HTTP請求中發送的查詢是什麼?
Couchbase Sync Gateway用於在couchbase服務器中獲取數據庫更改的機制。Couchbase Sync Gateway如何獲取Couchbase Server更改?
都不是 - 它使用DCP(與複製和XDCR使用相同的底層協議)訂閱來自Couchbase Server的更新。
經過一番研究,我發現了以下幾點。
1)sync_gateway首先與couchbase服務器建立tcp連接以連接8091端口,並通過該tcp連接發送http GET請求以調用REST API /池ad/pools/default。
2)之後,每當用戶發起文檔更改時,sync_gateway會發送帶有數據字段的tcp數據包,以詢問正在更改的用戶信息和文檔信息。
3)現在,sync_gateway發送另一個TCP數據包,並修改數據包的修訂版本,並從couchbase服務器獲取文檔已被修改的響應。
4)所有這些對話都使用TCP PSH ACK數據包進行。所以沒有HTTP數據包流動。只有通信雙方的TCP服務器。