Couchbase Sync Gateway 如何获取 Couchbase Server 的变化?

How does Couchbase Sync Gateway get Couchbase Server changes?

Couchbase Sync Gateway 使用什么机制来获取 Couchbase 服务器中的数据库更改。

  1. 它是进行长轮询还是创建 websocket 连接?
  2. 或者是否经常调用 Couchbase 服务器 REST API?如果是,那么哪个 REST API 以及它在该 REST API 的 HTTP 请求中发送的查询是什么?

两者都不 - 它使用 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 服务器通信双方。