zoukankan      html  css  js  c++  java
  • HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线

    HyperLedger/Fabric SDK Docker Image

    该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container (感谢Star)。 

    这是一个基于fabric-sdk-java的项目,该项目的主要目的是简化HyperLedger/Fabric开发人员在SDK应用层上的工作流程,使得开发和部署更加简单。 

    该项目使用方便,只需要你的服务器上部署有Docker及docker compose环境即可,通过docker-compose的启动命令启动YAML编排文件即可快速上手使用。 

    由于日志管理和性能调试方面的工作还未完成,目前该项目仅为1.0-alpha版本,后续的开发中将会着重处理日志及可配置性能方面的内容,如果这能让你感兴趣,欢迎star。 

    开发环境

    • IntelliJ IDEA
    • Maven
    • JDK-1.8
    • spring-boot
    • Docker
    • docker compose 

    版本说明

    0.x系列的版本主要是非Docker应用方面的项目,即相互交流的源码层项目。
    1.x及以上系列的版本均Docker项目,帮助开发人员快速部署SDK应用,减少开发环节,从而实现业务的快速落地。

    目前主要版本如下列表所示:
    v0.1:无数据库版,适合轻量级的Fabric平台应用。 
    v0.2:含关系型数据库版,适合单服务管理多Fabric网络。 
    v1.0-alpha:提供Docker容器服务,方便SDK快速部署。 

    使用sdk-container

    1、确定Linux内核在3.10及以上。 
    2、在待部署SDK服务器上安装最新版Dockerdocker compose环境。 
    3、执行docker pull aberic/fabric-sdk下载镜像。 
    4、在docker-sdk.yaml文件中配置好Fabric网络中所期望连接的排序服务及节点服务参数,这两类服务各允许设置一台,后续的版本中会增加使用SDK多服务网络方案。 
    5、执行docker-compose -f docker-sdk.yaml up启动SDK镜像服务,如果不需要观察日志,则在命令最后追加-d即可。 
    6、服务启动完成后,参考下面的API介绍以便更快投入使用。 

    API入口文档

    MethodREST APIDescription
    POST /sdk/chaincode 执行、查询
    POST /sdk/trace 在指定频道内根据transactionID查询区块、在指定频道内根据hash查询区块、在指定频道内根据区块高度查询区块以及查询当前频道的链信息,包括链长度、当前最新区块hash以及当前最新区块的上一区块hash
    POST /sdk/org/set 设置组织信息
    POST /sdk/orderer/set 设置排序服务器信息
    POST /sdk/peer/set 设置节点服务器信息

    该版本目前为即上即用的版本,仅提供单排序服务及单节点服务,因此API文档中未提供安装、实例化及升级操作,但在后续更新中,会支持安装、实例化及升级的功能。如果有PAAS服务的需要,可以自行参考v0.2中的方案来解决。 

    API方法示例

    /sdk/chaincode

    执行合约
    {
        "intent": "invoke",
        "array": [
            "set",
            "A",
            "0"
        ]
    }
    查询合约
    {
        "intent": "query",
        "array": [
            "get"
        ]
    }

    intent是指对智能合约进行操作的意图。 
    array是调用合约传入的参数,在用go编写智能合约的时候,智能合约所接收的参数为一个字符串数组,其中字符串数组的第一个参数是智能合约的方法名。这里的array所传入的参数就是智能合约所接收的数组参数。

    /sdk/trace

    在指定频道内根据transactionID查询区块
    {
       "intent": "queryBlockByTransactionID",
       "traceId": "08b5db91c7723cb61651a4af1034633a2833031a1cdb4415df0d8f6727020a4f"
    }
    在指定频道内根据hash查询区块
    {
       "intent": "queryBlockByHash",
       "traceId": "8f63d99744752a89a49fcee560a43c271b7f12e37dfaa3489da028b610943595"
    }
    在指定频道内根据区块高度查询区块
    {
       "intent": "queryBlockByNumber",
       "traceId": "9"
    }
    查询当前频道的链信息(包括链长度、当前最新区块hash以及当前最新区块的上一区块hash)
    {
       "intent": "queryBlockchainInfo"
    }

    /sdk/org/set

    {
        "id": 1,
        "caLocation": "http://118.89.243.236:7054",
        "caName": "ca",
        "caTls": false,
        "chaincodeName": "test2cc",
        "chaincodePath": "chaincode/chaincode_example02",
        "chaincodeSource": "/code",
        "chaincodeVersion": "1.2",
        "channelArtifactsDir": "/home/jar/channel-artifacts",
        "channelName": "mychannel",
        "cryptoConfigDir": "/home/jar/crypto-config",
        "invokeWaitTime": 120,
        "ordererDomainName": "example.com",
        "orgDomainName": "org1.example.com",
        "orgMSPID": "Org1MSP",
        "orgName": "Org1",
        "proposalWaitTime": 90000,
        "tls": true,
        "username": "Admin"
    }

    该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置组织信息

    /sdk/orderer/set

    {
        "id": 1,
        "orgId": 1,
        "name": "orderer.example.com",
        "location": "grpc://118.89.243.236:7050"
    }

    该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置排序服务信息

    /sdk/peer/set

    {
        "id": 1,
        "orgId": 1,
        "peerName": "peer0.org1.example.com",
        "peerEventHubName": "peer0.org1.example.com",
        "peerLocation": "grpc://118.89.243.236:7051",
        "peerEventHubLocation": "grpc://118.89.243.236:7053",
        "isEventListener": true
    }

    该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置节点服务信息

    代码简要说明参考HyperLedger/Fabric JAVA-SDK with 1.1

  • 相关阅读:
    使用CSS3实现超炫的Loading(加载)动画效果
    三种简洁的经典高效的DIV+CSS制作的Tab导航简析
    Span和Div的区别
    [总结]Jquery api 快速参考
    25个可遇不可求的jQuery插件
    基于单个 div 的 CSS 绘图
    一款基于jQuery的图片场景标注提示弹窗特效
    HTML5手机开发——滚动和惯性缓动
    发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
    CSS框架BluePrint
  • 原文地址:https://www.cnblogs.com/aberic/p/9157187.html
Copyright © 2011-2022 走看看