Hash 如何确保变量仅从一侧修改

Hash 如何确保变量仅从一侧修改,hash,microservices,stateless,revision-history,Hash,Microservices,Stateless,Revision History,我有一个应用程序,其中有许多无状态的微服务,它们将它们的变量上下文一个传递给另一个。我有一个案例,当我并行启动几个具有相同上下文的服务链,然后等待它们完成。每个服务都可以修改其变量上下文,但在所有链完成后,我必须合并它们的变量上下文并确保没有冲突 下面的例子说明了这一点: 通过存储变量修改的整个历史记录可以解决这个问题,但这是一个巨大的数据开销,我希望避免 我看到的另一个解决方案是找到一些散列函数,它允许通过现有散列和新数据计算修改历史的散列,还允许通过只知道它们的散列来检查一个历史数据是否是

我有一个应用程序,其中有许多无状态的微服务,它们将它们的变量上下文一个传递给另一个。我有一个案例,当我并行启动几个具有相同上下文的服务链,然后等待它们完成。每个服务都可以修改其变量上下文,但在所有链完成后,我必须合并它们的变量上下文并确保没有冲突

下面的例子说明了这一点:

通过存储变量修改的整个历史记录可以解决这个问题,但这是一个巨大的数据开销,我希望避免

我看到的另一个解决方案是找到一些散列函数,它允许通过现有散列和新数据计算修改历史的散列,还允许通过只知道它们的散列来检查一个历史数据是否是另一个历史数据的前缀。但是我找不到这样的函数


我正在寻找数据开销尽可能少的任何适用算法。

存储变量修改的整个历史实际上听起来并不可怕。例如,您可以将修改信息放到队列中,然后使用一个服务,该服务将一次一批地处理该队列中的元素,并将结果放在一个地方

这是一种常见的方法,例如,在存在大量并行工作负载的情况下,您无法使用锁同步对一个位置的访问

以后,您甚至可以扩展处理队列的工作人员。

您需要的是一个旧想法,可以用于合并并行数据修改和检测冲突

通过存储变量修改的整个历史记录可以解决这个问题,但这是一个巨大的数据开销,我希望避免

使用向量时钟,您不会保留整个历史记录,而是为每个
变量
和节点保留一个计数器(因此每个
变量
都有一个计数器向量)