首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理一台机器的API服务器UI与另一台机器的后端/API不同步的问题?

如何处理一台机器的API服务器UI与另一台机器的后端/API不同步的问题?
EN

Stack Overflow用户
提问于 2017-10-23 22:51:52
回答 1查看 60关注 0票数 0

我公司销售的系统是多机解决方案的软件。在某些情况下,其中一台机器上有一个UI,另一台机器上有一个后端/API。这些系统进行通信,并且都使用自己的时钟进行各种操作和存储值。

当UI的系统时钟比后端提前30秒或更长时间时,由于将UI的时间戳作为密钥信息发送给REST请求,查询开始出现错误。有一个“什么已经被我更新”的查询,每30秒发生一次,并且desync将导致更新的数据丢失,因为它们在计时窗口之外。

由于我没有任何控制系统,我的软件是安装在,我需要一个解决方案,在我的代码方面。我不能强迫顾客保持他们的时钟同步。

我考虑过的可能解决办法:

  • UI可以查询后端的系统时间并缓存它。
  • 当查找更新时,后端/API可以更及时地回溯。这将给时钟一些空间滑动,但将导致一个更沉重的查询负载的系统与大的数据集。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 15:01:25

您最好的选择是在一定程度上重构API。

首先,尽管NTP是个好主意,但您不能保证它在使用中。此外,即使启用了OSs (至少Windows),也可能会拒绝太不同步的数据包,从而防止某些攻击(不过是按分钟计算)。

在处理这样的分布式服务时,口号是“不信任客户端”。这也适用于您实际控制客户端的情况,并不一定意味着客户端正在尝试任何恶意的东西--它只是意味着客户端不是权威的来源。

这应该包括时间戳。

考虑一下;时间戳在这里是个问题,因为您试图使用客户端的时间来查询服务器--但我们不应该信任客户机。相反,我们应该做的是让服务器返回请求处理时间的时间戳,或者数据库最新条目的更新标记,可以在后续查询中使用该时间戳来检索新的更新(初始查询的追溯时间取决于您自己)。

安全地处理并发更新有点困难,这取决于在冲突时应该发生什么。这里与处理以数据库为中心的问题的大多数问题和答案并没有什么不同,我只是想指出,如果您还没有正确地处理或检测情况,您可能需要在API中添加额外的字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46899668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档