【问题标题】:How does Couchbase Sync Gateway get Couchbase Server changes?Couchbase Sync Gateway 如何获得 Couchbase Server 更改?
【发布时间】:2016-02-03 14:54:36
【问题描述】:
Couchbase Sync Gateway 使用什么机制来获取 couchbase 服务器中的数据库更改。
- 它是做一个长轮询还是创建一个 websocket 连接?
- 还是经常调用 Couchbase 服务器 REST API ?如果是这样,那么哪个 REST API 以及它在针对该 REST API 的 HTTP 请求中发送的查询是什么?
【问题讨论】:
标签:
rest
couchbase
couchbase-sync-gateway
【解决方案1】:
两者都不 - 它使用DCP(复制和 XDCR 使用的相同底层协议)订阅来自 Couchbase 服务器的更新。
【解决方案2】:
经过一番研究,我发现了以下几点。
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 服务器与双方通信。