如何与外部系统通信
How to communicate with external system
我正在尝试编写一个逻辑(js 脚本)来与外部系统通信。据了解,逻辑将在所有背书节点上执行。
在这种情况下,如何避免对外部系统的重复操作?例如,如何增加外部数据库中的值?如果我写一个逻辑来增加 js 中的值,我认为该值将被所有背书节点增加。
我将不胜感激任何评论。
首先,目前与外部系统交互的唯一方法是使用实验性 post
API。这允许您的事务处理器函数将 HTTP POST 数据发送到外部系统,然后处理响应。
此处的文档:
https://hyperledger.github.io/composer/integrating/call-out.html
你说得对,如果你有 4 个节点,那么每个节点的链码容器将 运行 你的逻辑,所以你会看到 4 次调用你的 HTTP 服务。这是必需的,因为每个对等节点都是独立的,Fabric 必须在对等节点之间达成共识。
因此,外部函数应该(理想情况下)是无副作用的 "pure" 函数(幂等),这意味着对于一组给定的输入参数,您总是会得到相同的输出结果集。
显然 returns 递增整数的函数不符合此描述!您可能需要重新考虑如何构建问题,以使其与基于分散式区块链的方法兼容。
我正在尝试编写一个逻辑(js 脚本)来与外部系统通信。据了解,逻辑将在所有背书节点上执行。 在这种情况下,如何避免对外部系统的重复操作?例如,如何增加外部数据库中的值?如果我写一个逻辑来增加 js 中的值,我认为该值将被所有背书节点增加。 我将不胜感激任何评论。
首先,目前与外部系统交互的唯一方法是使用实验性 post
API。这允许您的事务处理器函数将 HTTP POST 数据发送到外部系统,然后处理响应。
此处的文档: https://hyperledger.github.io/composer/integrating/call-out.html
你说得对,如果你有 4 个节点,那么每个节点的链码容器将 运行 你的逻辑,所以你会看到 4 次调用你的 HTTP 服务。这是必需的,因为每个对等节点都是独立的,Fabric 必须在对等节点之间达成共识。
因此,外部函数应该(理想情况下)是无副作用的 "pure" 函数(幂等),这意味着对于一组给定的输入参数,您总是会得到相同的输出结果集。
显然 returns 递增整数的函数不符合此描述!您可能需要重新考虑如何构建问题,以使其与基于分散式区块链的方法兼容。