ハイパーレジャーファブリックJavaノードチェーンコードのインスタンス化が遅い問題と簡単なタイムアウトの問題を解決する

HyperledgerファブリックでJavaチェーンコードとノードチェーンコードをインスタンス化すると、時間がかかり、場合によってはタイムアウトになるこの問題の解決方法

Javaの記事

調査の結果、Javaチェーンコードをインスタンス化するノードが遅い理由は、Javaが通常GradleプロジェクトまたはMavenプロジェクトを使用し、これら2つのプロジェクトがインスタンス化時に関連する依存JARをダウンロードする必要があるためであることがわかりました。主な理由は、このステップの実行が比較的遅いためです。遅い、問題を改善するための鍵は、jarのダウンロードが遅いという問題の解決方法にあります。ローカルのjarを使用するようにプロジェクトの依存関係を変更すると、この問題を効果的に解決できます。

1ローカルjarに切り替え

起動時に依存ファイルをダウンロードする必要がないように、jarをプロジェクトにパッケージ化します。これにより、効果的にスピードアップできます。私の実際の測定によると、この方法を使用すると、javaチェーンコードのインスタンス化を約40秒にスピードアップできます。もちろん、コンピューターの構成にも関係しています

ここでは、gradleがローカルjarを使用する方法を示します。mavenの原理は同じです(元のブログリンクを参照してください:https : //www.cnblogs.com/adderhuang/p/12155834.html)build.graldeを次のように変更します

plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}
group 'org.hyperledger.fabric-chaincode-java'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    //chaincode需要的依赖
    compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.4.1'
//    https://mvnrepository.com/artifact/com.alibaba/fastjson
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.62'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    //从项目的libs目录加载依赖的jar包
//    compile fileTree(dir:'libs',includes:['*.jar'])
}
shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null

    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.example.SimpleChaincode'
    }
}
//将依赖的jar包导入到项目的libs目录下
task copyJars(type: Copy) {
    from configurations.runtime
    into 'libs' // 目标位置
}

libsフォルダーを手動で作成する

実施した

gradle build copyJars

次に、build.gradleを次のように変更します。

plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}
group 'org.hyperledger.fabric-chaincode-java'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    //chaincode需要的依赖
/*    compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.4.1'

    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.62'
    testCompile group: 'junit', name: 'junit', version: '4.12'*/
//    从项目的libs目录加载依赖的jar包
    compile fileTree(dir:'libs',includes:['*.jar'])
}
shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null

    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.example.SimpleChaincode'
    }
}
//将依赖的jar包导入到项目的libs目录下
task copyJars(type: Copy) {
    from configurations.runtime
    into 'libs' // 目标位置
}

できる

2 Aliミラーなどの国内ミラーを構成する

国内のMavenウェアハウスミラーリングの構成でも高速化を実現できます。デモではなく、多くのチュートリアルがあります。 

node篇

遅いノードのインスタンス化は、主にnpmインストールステップでスタックします。解決策はjavaに似ています。ノードチェーンコードのルートディレクトリで、npm installコマンドを実行して、node_modulesをチェーンコードに事前にインストールします。これにより、インストールを高速化できます。欠点は、チェーンコードにつながることです。ファイルが大きすぎます

 

おすすめ

転載: blog.csdn.net/qq_27348837/article/details/108052520