Couchbase Sync Gateway 如何获取 Couchbase Server 的变化?
How does Couchbase Sync Gateway get Couchbase Server changes?
Couchbase Sync Gateway 使用什么机制来获取 Couchbase 服务器中的数据库更改。
- 它是进行长轮询还是创建 websocket 连接?
- 或者是否经常调用 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 服务器通信双方。
Couchbase Sync Gateway 使用什么机制来获取 Couchbase 服务器中的数据库更改。
- 它是进行长轮询还是创建 websocket 连接?
- 或者是否经常调用 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 服务器通信双方。