gpt4 book ai didi

architecture - 如何为设备和服务器之间的元数据同步设计高级应用程序协议(protocol)和数据格式?

转载 作者:行者123 更新时间:2023-12-04 05:20:28 25 4
gpt4 key购买 nike

我正在寻找有关如何最好地考虑设计高级应用程序协议(protocol)以在最终用户设备和服务器之间同步元数据的指导。

我的目标:用户可以在任何设备或网络上与应用程序数据进行交互。该协议(protocol)的目的是通过服务器将在一个端点上所做的更改传达给其他端点,并确保所有设备保持应用程序数据的一致画面。如果用户在一台设备或 Web 上进行更改,该协议(protocol)会将数据推送到中央存储库,其他设备可以从中提取数据。

其他一些设计思路:

  • 我称其为“元数据同步”,因为有效载荷将非常小,以对象 ID 和关于这些 ID 的小元数据的形式。当客户端端点通过此协议(protocol)检索新元数据时,它们将基于此元数据从外部源获取实际对象数据。获取“真实”对象数据超出了范围,我在这里只讨论元数据同步。
  • 使用 HTTP 进行传输,使用 JSON 进行负载容器。问题基本上是关于如何最好地设计 JSON 有效负载模式。
  • 我希望这在 Web 以及桌面和移动设备上易于实现和维护。感觉最好的方法是简单的基于计时器或基于事件的 HTTP 请求/响应,没有任何持久 channel 。另外,你不应该有博士学位来阅读它,我希望我的规范适合 2 页,而不是 200 页。
  • 身份验证和安全性超出了这个问题的范围:假设请求是安全的并且经过身份验证。
  • 目标是设备上数据的最终一致性,它不完全是实时的。例如,用户可以在离线时在一台设备上进行更改。再次上线时,用户会执行“同步”操作来推送本地更改并检索远程更改。
  • 话虽如此,协议(protocol)应该支持这两种操作模式:
  • 在一台设备上从头开始,应该可以拉取整个元数据图片
  • “随时随地同步”。当并排查看两个设备上的数据并进行更改时,应该很容易将这些更改推送为其他设备可以近乎实时接收的短消息(取决于它何时决定联系服务器进行同步)。

  • 作为一个具体的例子,你可以想到 Dropbox(这不是我正在研究的,但它有助于理解模型):在一系列设备上,用户可以管理文件和文件夹——移动它们,创建新的,删除旧的等等。在我的上下文中,“元数据”将是文件和文件夹结构,但不是实际的文件内容。元数据字段将类似于文件/文件夹名称和修改时间(所有设备应看到相同的修改时间)。

    另一个例子是 IMAP。我没有读过协议(protocol),但我的目标(减去实际的消息体)是一样的。

    感觉有两种方法可以做到这一点:
  • 交易消息。系统中的每个更改都表示为增量,并且端点与这些增量进行通信。示例:DVCS 变更集。
  • REST:整体或部分地传达对象图,而不必太担心单个原子变化。

  • 编辑:一些答案正确地说,关于该应用程序的信息不足,无法提供足够好的建议。该应用程序的确切性质可能会让人分心,但一个非常基本的 RSS 阅读应用程序是一个足够好的近似值。因此,假设应用程序规范如下:
  • 有两个类:提要和项目。
  • 我可以添加、重命名和删除提要。添加提要订阅它并开始接收该提要的项目。我还可以重新排序 UI 中的提要显示顺序。
  • 当我阅读项目时,它们被标记为已读。我无法将它们标记为未读或对它们执行任何其他操作。
  • 基于以上,对象模型为:
  • “feed”具有属性“url”、“displayName”和“displayOrder”(displayOrder 是 UI 的提要列表中提要的索引;在本地重新排序提要会更改所有提要的 displayOrder,以便索引保持唯一和顺序)。
  • “item”具有属性“url”和“unread”,以及多对一关系“feed”(每个项目属于一个feed)。 “url”也作为项目的 GUID。
  • 实际项目内容在每个设备上本地下载,而不是同步的一部分。

  • 基于这种设计,我可以在一台设备上设置我的应用程序:添加一堆提要,重命名和重新排序,并阅读其中的一些项目,然后将其标记为未读。当我切换设备时,另一台设备可以同步配置并向我显示具有相同名称、顺序和相同项目已读/未读状态的相同提要列表。

    (结束编辑)

    我想要的答案:
  • 上面有什么重要的东西我遗漏了吗?限制,目标?
  • 关于此的一些好的背景阅读是什么? (我意识到这是许多计算机科学类(class)详细讨论的内容......我希望通过查看一些速成类(class)或掘金来缩短它。)
  • 我可以模仿甚至开箱即用的此类协议(protocol)的一些很好的例子是什么? (我在上面提到了 Dropbox 和 IMAP...我可能应该阅读 IMAP RFC。)
  • 最佳答案

    一些想法:

    1)。您可以对交付变更通知的可靠性做出哪些假设?以及这些通知排序的可靠性?我的坚持是,最好通过恢复请求完全重新交付元数据来容忍丢失和错误订购。

    2)。实际上,您有一个元数据流和一个数据流。你可以对它们的相对顺序做出什么假设。你能在元数据到达之前接收新版本的数据吗?再次猜测,我怀疑这可能发生。我希望数据有效负载必须包含元数据版本信息。因此,客户可以在需要时刷新他们的元数据?

    3)。对应于元数据的两个不同版本的数据是否有可能到达设备。我怀疑"is"。客户能有多容易处理这个问题?

    4)。元数据可能需要包括演示或验证信息。

    关于architecture - 如何为设备和服务器之间的元数据同步设计高级应用程序协议(protocol)和数据格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766946/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com