首页 > 其他分享 >“打造高性能Fabric集群:一键构建你的分布式架构帝国!“

“打造高性能Fabric集群:一键构建你的分布式架构帝国!“

时间:2024-07-17 21:55:05浏览次数:19  
标签:Fabric -- 一键 sh export https com example 分布式

一、环境准备

1. 虚拟机为 ubuntu 22.04

2. 将ubuntu 的软件镜像源更换为国内的镜像源(命令如下)

sudo vim /etc/apt/source.list (vim下载与使用自行百度)

将文件内容清空,然后复制下方代码粘贴,保存退出即可。

deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

3. 安装docker

参考CSDN博客:https://blog.csdn.net/justlpf/article/details/132982953

4. 安装golang

下载二进制包:All releases - The Go Programming Language 选择go1.20.5版本

解压安装包 :tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz

设置环境变量:

编辑profile文件:vim ~/.profile

在文件的最后加上:

export GOROOT=/usr/local/go

export GOPATH=$HOME /test

export PATH=$PATH:$GOROOT/bin:$GOPATH

运行命令:source ~/.profile

验证是否完成安装:go version

5. 安装jq

sudo apt-get install jq

二、获取fabric与准备工作

1.使用git 获取:

git clone GitHub - hyperledger/fabric: Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.

2. 打开命令行,运行:./bootstrap.sh

3. 如果下载速度慢,或者无法下载,则运行

https://github.com/hyperledger/fabric/releases/download/v2.5.7/hyperledger-fabric-linux-amd64-2.5.7.tar.gz

https://github.com/hyperledger/fabric-ca/releases/download/v1.5.10/hyperledger-fabric-ca-linux-amd64-1.5.10.tar.gz

4. 将下载好的文件保存到bootstrap.sh文件所在位置

5. 在bootstrap.sh文件所在位置打开命令行,运行以下命令:

tar -xzvf hyperledger-fabric-linux-amd64-2.5.7.tar.gz

tar -xzvf hyperledger-fabric-ca-linux-amd64-1.5.10.tar.gz

6. 使用记事本打开文件bootstrap.sh,找到文件中的download方法,如下:

将上面的内容修改为:

7. 运行命令:./bootstrap.sh,等待运行完成

8. 将bootstrap.sh文件所在目录的bin文件夹和config文件夹,复制到fabric-samples文件夹中,选择替换即可

三、运行

1. 打开fanric-samples目录下的test-network文件夹

2. 在此目录打开命令行

3. 删除先前运行的所有容器或工程

运行 ./network.sh down

4. 创建一个由两个对等节点和一个排序节点组成的Fabric网络

运行 ./network.sh up

成功将会有以下输出

5. 创建一个通道

运行 ./network.sh createChannel

成功将会有以下输出

如果你想自定义通道名,例如创建一个名为channe1的通道,则可以运行

./network.sh createChannel -c channel1

6. 打包智能合约

首先进入到fabric-samples/asset-transfer-basic/chaincode-go文件夹中,再运行命令:

go env -w GOPROXY=https://goproxy.cn,direct

GO111MODULE=on go mod vendor

cd ../../test-network

export PATH=${PWD}/../bin:$PATH

export FABRIC_CFG_PATH=$PWD/../config/

peer version

peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go/ --lang golang --label basic_1.0

运行以上命令之后,将会在test-network文件夹中创建一个名为basic.tar.gz的包

7. 在通道启动一个合约(链码)

./network.sh down

./network.sh up createChannel

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

运行成功如图:

8. 与网络交互

设置环境变量,操作节点Org1

export CORE_PEER_TLS_ENABLED=true

export CORE_PEER_LOCALMSPID="Org1MSP"

export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp

export CORE_PEER_ADDRESS=localhost:7051

运行以下命令用一些资产来初始化账本

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'

运行成功将会有以下输出:

-> INFO 001 Chaincode invoke successful. result: status:200

运行以下指令来获取添加到通道账本的资产列表

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

查询结果如图:

当一个网络成员希望在账本上转一些或者改变一些资产,链码会被调用。使用以下的指令来通过调用 asset-transfer (basic) 链码改变账本上的资产所有者:

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

如果成功将有以下输出:

9. 操作org2,查询转帐结果

设置以下的环境变量来操作 Org2

export CORE_PEER_TLS_ENABLED=true

export CORE_PEER_LOCALMSPID="Org2MSP"

export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp

export CORE_PEER_ADDRESS=localhost:9051

查询转账结果:

peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'

结果如图:

标签:Fabric,--,一键,sh,export,https,com,example,分布式
From: https://blog.csdn.net/m0_58480257/article/details/140506522

相关文章

  • redis学习-12(实现分布式锁、消息队列、缓存一致性问题、单线程快的原因、跳跃表)
    引用以下内容:redis实现分布式锁:Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)Redis实现分布式锁的7种方案,及正确使用姿势!redis实现消息队列Redis的学习教程(十)之使用Redis实现消息队列缓存一致性问题想要保证数据库和Redis缓存一致性,推荐采用先更新数......
  • gwang.top:一键官网查询
    原文地址:https://itxiaozhang.com/one-click-official-site-query/本文配合视频食用效果最佳,视频教程在文章末尾。简介gwang.top是一个小章做的在线查询工具,可以快速找到各种官网,例如软件、学校、组织等等。使用方法访问网站:打开浏览器,地址栏输入gwang.top。输入关键词:......
  • Evil-WinRM一键测试主机安全情况(KALI工具系列四十四)
    目录1、KALILINUX简介2、Evil-WinRM3、信息收集3.1目标IP3.2kali的IP4、操作步骤4.1用户访问4.2使用哈希值4.3文件处理5、总结1、KALILINUX简介KaliLinux是一个功能强大、多才多艺的Linux发行版,广泛用于网络安全社区。它具有全面的预安装工具和功......
  • 揭秘高效消息传递的核心技术:MQ在分布式系统中的应用与优化
    温馨提示:本文阅读时长在20-30分钟左右阅读本文章之前,希望大家先暂停几分钟,回想一下自己对mq的理解,想想自己了解哪些mq?mq的用途有哪些?等等问题,带着问题来阅读相信大家或多或少都会有写收获的。一、关于MQMQ介绍MQ(MessageQueue)消息队列,是基础数据结构中“先进先出”的一种......
  • 负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】
    负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】负载均衡-Ribbon基本介绍SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡的工具。Ribbon主要功能是提供客户端负载均衡算法和服务调用Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等......
  • 钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦
    BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPCUA等。如果您正在考虑部署BL20X系列耦合器又不知选择哪款,那不妨来看一看钡铼......
  • SD画全身图总是人脸扭曲?ADetailer实现一键解决!
    目录一、ADetailer的安装二、脸部修复方法1、局部重绘(inpaint)2、ADetailer三、ADetailer和facerestoration(脸部修复)的区别四、何时使用ADetailer?你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况?也曾感到束手无策?别担心,这份教程专为你而来。在使用SD生成人......
  • Java中的分布式文件系统设计与实现
    Java中的分布式文件系统设计与实现大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、引言分布式文件系统是支持大规模数据存储和访问的关键基础设施之一。本文将探讨在Java语言环境中设计和实现分布式文件系统的关键技术和策略。二、分布式文件系统的......
  • 如何使用Redis实现分布式锁
    在分布式系统中,保证多个进程或线程对共享资源的同步访问是一个常见问题。锁是一种常用的同步机制,但在单机环境中常用的锁机制在分布式系统中往往不再适用。Redis,作为一种高性能的键值存储系统,提供了实现分布式锁的可能。本文将介绍如何使用Redis实现分布式锁,并通过Java代码示例展......
  • 使用Spring Cloud Sleuth实现分布式系统的链路追踪
    使用SpringCloudSleuth实现分布式系统的链路追踪大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、引言在微服务架构中,应用程序被分解成多个服务,每个服务都可以独立部署和扩展。这种架构虽然带来了很多好处,但也增加了调试和监控的复杂性。链路追踪(Tr......