通信与数据同步:不同场景下的策略与实践
在当前的应用环境中,公共互联网上的大部分流量基于 HTTP 协议。异步协议在防火墙之外并不那么流行,不过 AMQP 可以通过 TLS 进行隧道传输,有时也会在互联网上公开,但更多时候它被安全地保留在组织的数据中心内,或者在组织边界公开。移动应用更倾向于使用 HTTP,基于浏览器的客户端几乎只使用 HTTP。虽然未来在互联网上使用异步协议可能会更常见,但目前将公共客户端连接到服务器通常还是涉及 HTTP,不过这并不意味着必须同步使用它,即使是请求/响应协议也可以异步使用。
数据同步的本质
“同步”这个词在应用于数据时容易产生误解。从字面上看,同步意味着让两个系统同时或以相同的速率进行,但数据同步并非关于时间,其目标是自主性而非同步性,追求的是数据的一致性。也就是说,当向两个节点提出相同的问题时,它们会给出相同的答案,这是因为它们拥有相同的信息,而非同时运行。
在不可变架构中,每台机器都有其可用的数据子集,这使得该机器上的用户和进程无需咨询其他机器就能做出决策。所谓的数据同步,就是与对等方交换不可变事实,使它们的数据结构趋于一致的过程。每台机器仅拥有其所需的子集,当这些子集重叠时,无冲突复制数据类型(CRDTs)的规则确保在该过程完成时达到一致性。
基于不可变数据结构,在数据同步过程中可以独立决定使用哪些协议,需要考虑以下问题:
- 需要什么样的传输保证?
- 消息应该同步还是异步处理?
- 只能使用常见的开放协议,还是可以选择更具理想特性的定制选项?
- 对等方是否可寻址,还是需要等待它们主动联系?
- 机器是永久连接,还是偶尔连接?
为了回答这些问题,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



