【问题标题】:Hyperledger Fabric Java SDK grpc maxInboundMessageSizeHyperledger Fabric Java SDK grpc maxInboundMessageSize
【发布时间】:2021-07-22 12:25:20
【问题描述】:

我正在使用脚本文件运行 Hyperledger Fabric 2.0 区块链来创建通道、Orderer 和对等点。我使用 fabric-gateway-java:2.1.1 作为 Java SDK,我使用连接配置文件从 SDK 连接到区块链,见下文:

public static Gateway connect() throws Exception{
     // Load a file system based wallet for managing identities.
     Path walletPath = Paths.get("wallet");
     Wallet wallet = Wallets.newFileSystemWallet(walletPath);
     // load a CCP
     Path networkConfigPath = Paths.get("..", "..", "TestBlockchain", "organizations",
             "peerOrganizations", "org1.test.com", "connection-org1.yaml");

     Gateway.Builder builder = Gateway.createBuilder();
     builder.identity(wallet, "appUser").networkConfig(networkConfigPath).discovery(true);
     return builder.connect();
 };

我的连接配置文件如下所示:注意:我已删除此问题的证书

name: TestBlockchain-org1
version: 1.0.0
channels: testchannel
client:
  organization: Org1
  connection:
    timeout:
      peer:
        endorser: '300'
organizations:
  Org1:
    mspid: Org1MSP
    peers:
    - peer0.org1.test.com
    certificateAuthorities:
    - ca.org1.test.com
peers:
  peer0.org1.test.com:
    url: grpcs://localhost:7051
    tlsCACerts:
      pem: |
          -----BEGIN CERTIFICATE-----
          
          -----END CERTIFICATE-----
          
    grpcOptions:
      ssl-target-name-override: peer0.org1.test.com
      hostnameOverride: peer0.org1.test.com
      grpc.max_send_message_length: 9000000
      grpc.max_receive_message_length: 9000000
  peer1.org1.test.com:
    url: grpcs://localhost:7051
    tlsCACerts:
      pem: |
            -----BEGIN CERTIFICATE-----
          
          -----END CERTIFICATE-----
    
    grpcOptions:
      ssl-target-name-override: peer1.org1.test.com
      hostnameOverride: peer1.org1.test.com
      grpc.max_send_message_length: 9000000
      grpc.max_receive_message_length: 9000000
certificateAuthorities:
  ca.org1.test.com:
    url: https://localhost:7054
    caName: ca-org1
    tlsCACerts:
      pem: 
        - |
          -----BEGIN CERTIFICATE-----
          -----END CERTIFICATE-----
          
    httpOptions:
      verify: false

当我在连接配置文件中设置 grpc.max_receive_message_length 时,它在尝试从区块链接收大于 4GB 的消息时似乎不起作用

我不断收到的错误是 RESOURCE EXHAUSTED: Compressed gRPC message exceeded maximum size 4194304 4GB。

问题:是否有另一种方法可以增加连接配置文件中 grpc 或 java 代码本身的限制?

我已尝试在互联网上搜索解决方案,但似乎并没有希望有人能来拯救我并提供帮助。在此先感谢:)

【问题讨论】:

  • 大多数人会建议您不要使用区块链来存储数据,而是存储对数据的引用要小得多。在链上与链下存储 4GB 是否有合法需求?
  • 存储数据没问题,我不会将任何超过 4GB 的数据推送到区块链上。就在我尝试在区块链中查询某些用例时,我需要返回超过 4GB 的空间。
  • stackoverflow.com/questions/60522516/… 看看这是否有帮助 - 有一个链接指向您可以配置以增加大小的设置

标签: java hyperledger-fabric grpc hyperledger


【解决方案1】:

虽然我确实找到了解决方法,但我无法解决问题。我最终使用了 Fabric Go SDK 而不是 Java SDK,因为 Go SDK 默认允许 grpc 最大消息长度为 100MB,这最终解决了我的问题。

Go SDK 链接:https://github.com/hyperledger/fabric-sdk-go

但是,使用 Go SDK 唯一的缺点是 grpc 超时默认设置为 30 秒。

我还发现,使用 Go SDK 而不是 Java SDK 时,进出我的 Hyperledger Fabric 区块链的交易要快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多