当前位置: 首页 > 知识库问答 >
问题:

当多个客户端要更新同一资产时,Hyperledger Fabric如何处理事务执行?

仲孙默
2023-03-14

因为Hyperledger Fabric有一个变通方法,通过检查读集版本控制和世界状态版本控制来避免双重开销。假设有一个客户机发出事务来更新相同的资产,那么根据我的知识,即将到来的事务将被对等方无效。根据我的理解,这意味着在一个块中,一个资产更新应该只有一个事务,并注意更多。

谢了。

共有1个答案

谢墨竹
2023-03-14

Hyperledger Fabric使用多版本并发控制(MVCC)用于解决双重开销问题。

Fabric的底层数据库使用MVCC来确保不会出现重复开销或数据不一致的情况。用可以理解的术语来说,这意味着它使用了版本化的文档或记录(因为它是键值存储,所以我们称每一行为文档或记录)。更新相同状态时,将使现有文档的新版本覆盖旧版本。在此期间执行的任何事务都不会被清除,并将触发MVCC错误。像其他数据库一样使用版本控制超锁的好处是,即使在高负载下,DB也可以异步全速运行。这就是为什么MVCC在现代数据库中得到了更广泛的应用。

 类似资料:
  • 最大消息长度为64K字节(尽管我可以将其减少到256字节)。 注意:这将运行在一个微小的嵌入式设备上,所以使用像ZMQ这样的消息传递层不是一个选项(没有足够的内存)。 我可以:

  • 我尝试使用Java中的Sockets连接到多个客户端。一切似乎都正常,但问题是,服务器只监听第一个客户端。如果有多个客户端,服务器可以向它们发送所有消息,但他可以只监听来自第一个客户端的消息。我尝试了所有这些(我从昨天开始就遇到了这个问题)。所以我很确定,错误一定在“ClientListener”类中。 说明:有一个客户端列表(用于与字符串通信的连接)。在GUI中有一个列表,我可以在其中选择要与哪

  • 注意:“”表示我要在两个地址上侦听客户端。 server.py client.py

  • 问题内容: 我在C#/ Visual Studio 2008中使用MySQL。我需要知道任何方法,以便如果一个用户更新数据库,则通过网络通知所有已登录用户已发生更改。如果我通过我的应用程序登录数据库,那时候数据库中最新记录的序列号是10,然后我有特权的人更新了数据库中的记录,同时我收到通知,数据库已更新为新记录。常见的例子可能是MSN Messenger的一个朋友上线时向他发出警报的提示……虽然我

  • 例如,如果我有10台主机,我的串行参数是3,那么这3个任务将如何执行这些任务?这些任务是否会一次一个主机地一个接一个地执行?或者像默认执行策略一样执行,每个主机将执行第一个任务,然后再执行下一个任务。 我没有找到任何文件提到这一点。