Couchbase Sync Gateway 使用什么机制来获取 couchbase 服务器中的数据库更改。
- 它会进行长时间的轮询或创建 websocket 连接吗?
- 还是经常调用 Couchbase 服务器 REST API ?如果是这样,那么哪个 REST API 以及它在针对该 REST API 的 HTTP 请求中发送的查询是什么?
Couchbase Sync Gateway 使用什么机制来获取 couchbase 服务器中的数据库更改。
两者都不 - 它使用DCP(复制和 XDCR 使用的相同底层协议)来订阅来自 Couchbase 服务器的更新。
经过一番研究,我发现了以下几点。
1) sync_gateway 首先与 couchbase 服务器建立到端口 8091 的 tcp 连接,并通过该 tcp 连接发送 http GET 请求以调用 REST API /pools ad /pools/default。
2) 此后,每当用户发起文档更改时,sync_gateway 都会发送带有数据字段的 tcp 数据包,询问用户信息和正在更改的文档信息。
3) 现在 sync_gateway 发送另一个 TCP 数据包,该数据包的修订版本已修改,并从 couchbase 服务器获得文档已修改的响应。
4) 所有这些对话都是使用 TCP PSH ACK 数据包进行的。所以没有 HTTP 数据包流动。只有 TCP 服务器与双方通信。