如何在网络上实时同步两个进程(比如客户端和服务器)之间的数据?
我在服务器上构建了各种文档/数据集,由客户端下载并显示。一旦下载完成,文档就会不断更新以保持新鲜。
这似乎是一个简单而常见的概念,但我找不到任何提供这种抽象级别的工具。我甚至不确定我在寻找什么。也许有类似的概念具有坚实的工具支持?也许需要组合不同的工具链?以下是我考虑过的:
- 我需要在单个跳(0.5 RTT)中传播每个变化,这排除了轮询(通常> 10 RTT)和缓存失效技术(1.5 RTT)。 - 数据复制和简单通知广播不是选择,因为有太多的数据和太多的变化。客户端必须能够选择要下载和监视更改的特定文档。 - 我目前正在使用消息传递模式,它可以完成任务,但是无望地低效。它在太低的抽象级别上工作。它费力、容易出错,并且随着应用程序复杂性的增加,它不能很好地扩展。 - HTTP和其他类似RPC的技术对于初始获取很好,但它们鼓励轮询进行后续同步。当执行反向请求(从数据源到数据使用者)时,可以进行更改通知,但比消息传递更加复杂。 - 将RPC(用于初始获取)与消息传递(用于更新)组合起来,由于协调两个并行连接上的通信以及两种范例之间的阻抗不匹配而变成了噩梦。我需要统一的东西。 - WebSocket和Comet是实现更改通知的流行方法,但它们需要其他库才能提高生产力,而且我不知道有任何适合我的应用程序的库。 - 消息队列只是在网络上放置中介,同时保持基本的消息传递模式。自定义消息过滤器/路由器使我更接近实时文档概念,但我感觉自己正在实现自定义中间件层。
我有大量其他要求(双端本地可观察数据结构API、增量更新、自定义消息过滤器、自定义连接路由、跨平台、健壮性和可扩展性),但在考虑这些要求之前,我需要找到至少试图做我所需要的工具。我试图避免内部框架的标准原因-成本、上市时间、长期维护和保持开发人员的满意度。
我在服务器上构建了各种文档/数据集,由客户端下载并显示。一旦下载完成,文档就会不断更新以保持新鲜。
这似乎是一个简单而常见的概念,但我找不到任何提供这种抽象级别的工具。我甚至不确定我在寻找什么。也许有类似的概念具有坚实的工具支持?也许需要组合不同的工具链?以下是我考虑过的:
- 我需要在单个跳(0.5 RTT)中传播每个变化,这排除了轮询(通常> 10 RTT)和缓存失效技术(1.5 RTT)。 - 数据复制和简单通知广播不是选择,因为有太多的数据和太多的变化。客户端必须能够选择要下载和监视更改的特定文档。 - 我目前正在使用消息传递模式,它可以完成任务,但是无望地低效。它在太低的抽象级别上工作。它费力、容易出错,并且随着应用程序复杂性的增加,它不能很好地扩展。 - HTTP和其他类似RPC的技术对于初始获取很好,但它们鼓励轮询进行后续同步。当执行反向请求(从数据源到数据使用者)时,可以进行更改通知,但比消息传递更加复杂。 - 将RPC(用于初始获取)与消息传递(用于更新)组合起来,由于协调两个并行连接上的通信以及两种范例之间的阻抗不匹配而变成了噩梦。我需要统一的东西。 - WebSocket和Comet是实现更改通知的流行方法,但它们需要其他库才能提高生产力,而且我不知道有任何适合我的应用程序的库。 - 消息队列只是在网络上放置中介,同时保持基本的消息传递模式。自定义消息过滤器/路由器使我更接近实时文档概念,但我感觉自己正在实现自定义中间件层。
我有大量其他要求(双端本地可观察数据结构API、增量更新、自定义消息过滤器、自定义连接路由、跨平台、健壮性和可扩展性),但在考虑这些要求之前,我需要找到至少试图做我所需要的工具。我试图避免内部框架的标准原因-成本、上市时间、长期维护和保持开发人员的满意度。