多群組部署

相關概念

星形拓撲和并行多組

如下圖,星形組網拓撲和并行多組組網拓撲是區塊鏈應用中使用較廣泛的兩種組網方式。

  • 星形拓撲:中心機構節點同時屬于多個群組,運行多家機構應用,其他每家機構屬于不同群組,運行各自應用;
  • 并行多組:區塊鏈中每個節點均屬于多個群組,可用于多方不同業務的橫向擴展,或者同一業務的縱向擴展。

星形拓撲和并行多組的區別,星星之后一個中心節點同時屬于多個機構,向外延伸的節點,各自屬于不同群組。

并行多組,是里面的節點均屬于多個群組。

下面以構建八節點星形拓撲四節點并行多組區塊鏈為例,詳細介紹多群組操作方法。

安裝依賴

# Ubuntu
$ sudo apt install -y openssl curl

星形拓撲

本章以構建上圖所示的單機、四機構、三群組、八節點的星形組網拓撲為例,介紹多群組使用方法。

星形區塊鏈組網如下:

  • agencyA:在127.0.0.1上有2個節點,同時屬于group1、group2、group3
  • agencyB:在127.0.0.1上有2個節點,屬于group1
  • agencyC:在127.0.0.1上有2個節點,屬于group2
  • agencyD:在127.0.0.1上有2個節點,屬于group3

搭建星形區塊鏈

build_chain.sh支持任意拓撲多群組區塊鏈構建,可使用該腳本構建星形拓撲區塊鏈節點配置文件夾:

準備依賴

  • 創建操作目錄
mkdir -p ~/fisco && cd ~/fisco
  • 獲取build_chain.sh腳本
curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/build_chain.sh && chmod u+x build_chain.sh

生成星形區塊鏈系統配置文件

 cat > ipconf << EOF
127.0.0.1:2 agencyA 1,2,3
127.0.0.1:2 agencyB 1
127.0.0.1:2 agencyC 2
127.0.0.1:2 agencyD 3
EOFcat ipconf
空格分隔的參數分別表示如下含義:
# ip:num: 物理機IP以及物理機上的節點數目
# agency_name: 機構名稱
# group_list: 節點所屬的群組列表,不同群組以逗號分隔
127.0.0.1:2 agencyA 1,2,3
127.0.0.1:2 agencyB 1
127.0.0.1:2 agencyC 2
127.0.0.1:2 agencyD 3

使用build_chain腳本構建星形區塊鏈節點配置文件夾

bash build_chain.sh -f ipconf -p 30300,20200,8545
# 生成的節點文件如下
nodes
|-- 127.0.0.1
|   |-- fisco-bcos
|   |-- node0
|   |   |-- conf  #節點配置目錄
|   |   |   |-- ca.crt
|   |   |   |-- group.1.genesis
|   |   |   |-- group.1.ini
|   |   |   |-- group.2.genesis
|   |   |   |-- group.2.ini
|   |   |   |-- group.3.genesis
|   |   |   |-- group.3.ini
|   |   |   |-- node.crt
|   |   |   |-- node.key
|   |   |   `-- node.nodeid # 記錄節點Node ID信息
|   |   |-- config.ini #節點配置文件
|   |   |-- start.sh  #節點啟動腳本
|   |   `-- stop.sh   #節點停止腳本

啟動節點

bash nodes/127.0.0.1/start_all.sh

查看群組共識狀態

# 查看node0 group1是否正常共識(Ctrl+c退回命令行)
$ tail -f nodes/127.0.0.1/node0/log/* | grep "g:1.*++"# 查看node0 group2是否正常共識
$ tail -f nodes/127.0.0.1/node0/log/* | grep "g:2.*++"
...# ... 查看node1, node2節點每個群組是否正常可參考以上操作方法...# 查看node3 group1是否正常共識
$ tail -f nodes/127.0.0.1/node3/log/*| grep "g:1.*++"
.# 查看node5 group2是否正常共識
$ tail -f nodes/127.0.0.1/node5/log/* | grep "g:2.*++"

配置并啟動控制臺

也是一樣,那腳本,啟動,拷貝控臺臺證書,拷貝控制臺文件。

cd ~/fisco# 獲取控制臺
$ curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/console/releases/v2.9.2/download_console.sh && bash download_console.sh# 拷貝控制臺證書
$ cp nodes/127.0.0.1/sdk/* console/conf/ -r# 獲取node0的channel_listen_port
$ grep "channel_listen_port" ~/fisco/nodes/127.0.0.1/node*/config.ini# 拷貝控制臺配置
$ cp console/conf/config-example.toml console/conf/config.tomlbash console/start.sh

向群組發交易

switch 2   # 切換群組
deplay HelloWorld 群組1,2都部署一次復制標簽
tail -f nodes/127.0.0.1/node0/log/log* | grep g:2.*++
發現塊高增加到2

節點加入群組

本章以將node2加入group2為例,介紹如何在已有的群組中,加入新節點。

通過 ls nodes/127.0.0.1/node2/conf/ 目前屬于 grop 1

1.跟擴容新節點差不多,不就是先獲取節點腳本,生成腳本文件,復制節點配置文件,修改配置

2.然后就是復制group 文件,決定能不能再控制臺正常加入群組


# 進入節點目錄cd ~/fisco/nodes/127.0.0.1# ... 從node0拷貝group2的配置到node2...
cp node0/conf/group.2.* node2/conf# ...重啟node2(重啟后請確定節點正常共識)...
bash node2/stop.sh && bash node2/start.sh# 獲取node2的node id
cat node2/conf/node.nodeid

通過控制臺向group2發送命令,將node2加入到group2

cd ~/fiscobash console/start.sh 2 # 直接啟動群組2控制臺# node2 添加到共識節點列表
getSealerListaddSealer nodeidgetSealerList# 若在group2部署合約,node2日志塊高發生變化證明加入群組成功
deploy HelloWorld
tail -f node2/log/* | grep "g:2.*++"

并行多組

并行多組區塊鏈搭建方法與星形拓撲區塊鏈搭建方法類似,以搭建四節點兩群組并行多鏈系統為例:

  • 群組1:包括四個節點,節點IP均為127.0.0.1
  • 群組2:包括四個節點,節點IP均為127.0.0.1

這樣對比,就tm對比一條鏈4個節點,多了一個群組。

構建單群組四節點區塊鏈

 mkdir -p ~/fisco && cd ~/fiscocurl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/build_chain.sh && chmod u+x build_chain.shbash build_chain.sh -l 127.0.0.1:4 -o multi_nodes -p 20000,20100,7545 # 這次指定了節點目錄# 啟動bash multi_nodes/127.0.0.1/start_all.sh# 檢查共識情況,(只有群組1)# 另外3個點共識情況自行檢查tail -f nodes/127.0.0.1/node0/log/log* | grep ++

將group2加入區塊鏈

并行多組區塊鏈每個群組的genesis配置文件幾乎相同,但[group].id不同,為群組號。

# 進入節點目錄
cd ~/fisco/multi_nodes/127.0.0.1# 拷貝group1的配置
cp node0/conf/group.1.genesis node0/conf/group.2.genesis
cp node0/conf/group.1.ini node0/conf/group.2.ini# 修改群組ID
vim node0/conf/group.2.genesis 修改 id=2
cat node0/conf/group.2.genesis | grep id 如過id=2,修改成功# 將配置拷貝到各個節點
cp node0/conf/group.2.genesis node1/conf/group.2.genesis
cp node0/conf/group.2.genesis node2/conf/group.2.genesis
cp node0/conf/group.2.genesis node3/conf/group.2.genesis
cp node0/conf/group.2.ini node1/conf/group.2.ini
cp node0/conf/group.2.ini node2/conf/group.2.ini
cp node0/conf/group.2.ini node3/conf/group.2.ini# 重啟各個節點
bash stop_all.sh
bash start_all.sh# 查看共識,發現多了個2群組
tail -f node0/log/log* | grep ++ 

向群組發交易

配置控制臺

cd ~/fiscocurl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/console/releases/v2.9.2/download_console.sh && bash download_console.sh# 獲取channel_port
$ grep "channel_listen_port" multi_nodes/127.0.0.1/node0/config.ini
multi_nodes/127.0.0.1/node0/config.ini:    channel_listen_port=20100# 拷貝控制臺證書
cp nodes/127.0.0.1/sdk/* console/conf/ -r
# 拷貝控制臺配置
cp console/conf/config-example.toml console/conf/config.toml
# 修改控制臺連接節點的端口,127.0.0.1:20200,20201
vim console/conf/config.toml
修改為20100,20101

發現控制臺連接節點的端口,是node0的channel_listen_port

在這里插入圖片描述

1.不對不對,假如說,在節點中定義了2個群組。那么群組id是不同的,其余大部分相同。

2.另外,我要在控制臺中去連接這個2個群組,他肯定連接你這個鏈,通過node0的chanal_listen_port,因為我是2個群組,20100自動延伸為 + 1。

通過控制臺向群組發交易

# 啟動控制臺
bash console/start.shswitch 2   # 切換群組
deplay HelloWorld 群組1,2都部署一次復制標簽
tail -f  multi_nodes/127.0.0.1/node0/log/log* | grep g:2.*++
發現塊高增加到2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82546.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82546.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82546.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于vue3-elemenyui的動態列案例

本案例主要是實現數據模型的解析以及實現el-table的動態列加載。 1.數據結構 公司A\B\C\測試1&#xff0c;是列&#xff0c;功能-url&#xff0c;是行數據&#xff0c;其中功能x是行頭。 this.rawData [{companyName: "公司A",rpWebShows: [{ "功能1": &…

Kerberos面試內容整理-Kerberos 與 LDAP/Active Directory 的集成

Kerberos 通常不會單獨存在于企業環境中,而是與目錄服務相結合以提供完整的身份管理方案。其中,Active Directory (AD) 是 Kerberos 集成應用的典型代表。Active Directory 是微軟的目錄服務,實現了 LDAP(輕量級目錄訪問協議)目錄和 Kerberos 認證的融合。在 AD 域控制器上…

Oracle DG庫控制文件IO錯誤導致宕機的應急處理

Oracle DG庫控制文件IO錯誤導致宕機的應急處理 事故現場偷天換日棋差一招事故現場 一套Oracle 19c DG環境的備庫宕機。 根據告警時間檢查實例宕機時間點附近的alert日志有如下重要信息: 2025-05-25T23:34:10.705385+08:00 KCF: read, write or open error, block=0x3377ee …

《前端面試題:前端盒模型》

前端盒模型完全指南&#xff1a;從原理到面試實戰 &#x1f381; 端午快樂&#xff01; 各位前端小伙伴&#xff0c;端午節快樂&#xff01;&#x1f96e; 在這個粽葉飄香的時節&#xff0c;愿你的代碼如龍舟般一往無前&#xff0c;bug 如咸蛋黃般被完美包裹&#xff01;今天我…

BERT:讓AI真正“讀懂”語言的革命

BERT&#xff1a;讓AI真正“讀懂”語言的革命 ——圖解谷歌神作《BERT: Pre-training of Deep Bidirectional Transformers》 2018年&#xff0c;谷歌AI團隊扔出一篇核彈級論文&#xff0c;引爆了整個NLP領域。這個叫BERT的模型在11項任務中屠榜&#xff0c;甚至超越人類表現…

爬蟲入門:從基礎到實戰全攻略

&#x1f9e0; 一、爬蟲基礎概念 1.1 爬蟲定義 爬蟲&#xff08;Web Crawler&#xff09;是模擬瀏覽器行為&#xff0c;自動向服務器發送請求并獲取響應數據的一種程序。主要用于從網頁中提取結構化數據&#xff0c;供后續分析、展示或存儲使用。 1.2 爬蟲特點 數據碎片化&…

uni-app學習筆記二十一--pages.json中tabBar設置底部菜單項和圖標

如果應用是一個多 tab 應用&#xff0c;可以通過 tabBar 配置項指定一級導航欄&#xff0c;以及 tab 切換時顯示的對應頁。 在 pages.json 中提供 tabBar 配置&#xff0c;不僅僅是為了方便快速開發導航&#xff0c;更重要的是在App和小程序端提升性能。在這兩個平臺&#xff…

行業分析---小米汽車2025第一季度財報

1 背景 最近幾年是新能源汽車的淘汰賽&#xff0c;前短時間比亞迪再次開始了降價&#xff0c;導致一片上市車企的股價大跌&#xff0c;足見車圈現在的敏感度。因此筆者會一直跟蹤新勢力車企的財報狀況&#xff0c;對之前財報分析感興趣的讀者朋友可以參考以下博客&#xff1a;…

Python 解釋器安裝全攻略(適用于 Linux / Windows / macOS)

目錄 一、Windows安裝Python解釋器1.1 下載并安裝Python解釋1.2 測試安裝是否成功1.3 設置pip的國內鏡像------永久配置 二、macOS安裝Python解釋器三、Linux下安裝Python解釋器3.1 Rocky8.10/Rocky9.5安裝Python解釋器3.2 Ubuntu2204/Ubuntu2404安裝Python解釋器3.3 設置pip的…

考研系列—操作系統:沖刺筆記(1-3章)

目錄 第一章 計算機系統概述 1.基本概念 2.內核態和用戶態 3.中斷(外中斷)、異常(內中斷-與當前執行的) 4.系統調用 5.操作系統引導程序 2021年真題: 6.操作系統結構 大綱新增 (1)分層結構 (2)模塊化 (3)外核 7.虛擬機 第二章 進程管理 1.畫作業運行的順序和甘…

監控 100 臺服務器磁盤內存CPU利用率

監控 100 臺服務器磁盤,內存&#xff0c;CPU利用率腳本 以下是一個優化后的監控腳本&#xff0c;用于同時監控100臺服務器的磁盤、內存和CPU利用率&#xff0c;并支持并發執行以提高效率&#xff1a; #!/bin/bash # 服務器監控腳本 - 支持并發獲取100臺服務器系統指標 # 功能…

[5-02-04].第01節:Jmeter環境搭建:

JMeter筆記大綱 Jmeter依賴于JDK&#xff0c;所以必須確保當前計算機上已經安裝了JDK&#xff0c;并且配置了環境變量 一、JMeter概述&#xff1a; 1.1.JMeter是什么&#xff1a; JMeter是Appache組織使用java開發的一款測試工具 可以用于對服務器、網絡或對象模擬巨大的負載…

【獸醫處方專用軟件】佳易王獸醫電子處方軟件:高效智能的寵物診療管理方案

一、軟件概述與核心優勢 &#xff08;一&#xff09;試用版獲取方式 資源下載路徑&#xff1a;進入博主頭像主頁第一篇文章末尾&#xff0c;點擊卡片按鈕&#xff1b;或訪問左上角博客主頁&#xff0c;通過右側按鈕獲取詳細資料。 說明&#xff1a;下載文件為壓縮包&#xff…

MapReduce(期末速成版)

起初在B站看3分鐘的速成視頻&#xff0c;感覺很多細節沒聽懂。 具體例子解析(文件內容去重) 對于兩個輸入文件&#xff0c;即文件A 和文件B&#xff0c;請編寫MapReduce 程序&#xff0c;對兩個文件進行合并&#xff0c;并剔除 其中重復的內容&#xff0c;得到一個新的輸出文件…

Java高級 | 【實驗四】Springboot 獲取前端數據與返回Json數據

隸屬文章&#xff1a; Java高級 | &#xff08;二十二&#xff09;Java常用類庫-CSDN博客 系列文章&#xff1a; Java高級 | 【實驗一】Spring Boot安裝及測試 最新-CSDN博客 Java高級 | 【實驗二】Springboot 控制器類相關注解知識-CSDN博客 Java高級 | 【實驗三】Springboot …

從零打造AI面試系統全棧開發

&#x1f916; AI面試系統開發完整教程 &#x1f4cb; 項目概述 本教程將帶你從零開始構建一個完整的AI面試系統&#xff0c;包含前端、后端、AI集成和部署的全流程。 源碼地址 技術棧 前端: React TypeScript Vite Vaadin Components后端: Spring Boot Spring Securi…

【硬件】PCIe協議 | 電腦的高速公路

文章目錄 PCIe | 外圍設備高速互聯通道&#xff08;peripheral component interconnect express&#xff09;的核心概念和應用 基礎概念 1.1 電腦內的”高速“&#xff0c;連接CPU、顯卡、SSD&#xff08;固態硬盤&#xff09;等核心組件&#xff1b;數據傳輸速度極快&#xff…

【 Redis | 完結篇 緩存優化 】

前言&#xff1a;本節包含常見redis緩存問題&#xff0c;包含緩存一致性問題&#xff0c;緩存雪崩&#xff0c;緩存穿透&#xff0c;緩存擊穿問題及其解決方案 1. 緩存一致性 我們先看下目前企業用的最多的緩存模型。緩存的通用模型有三種&#xff1a; 緩存模型解釋Cache Asi…

MySQL訪問控制與賬號管理:原理、技術與最佳實踐

MySQL的安全體系建立在精細的訪問控制和賬號管理機制上。本文基于MySQL 9.3官方文檔,深入解析其核心原理、關鍵技術、實用技巧和行業最佳實踐。 一、訪問控制核心原理:雙重驗證機制 連接驗證 (Connection Verification) 客戶端發起連接時,MySQL依據user_name@host_name組合進…

Go語言爬蟲系列教程4:使用正則表達式解析HTML內容

Go語言爬蟲系列教程4&#xff1a;使用正則表達式解析HTML內容 正則表達式&#xff08;Regular Expression&#xff0c;簡稱RegEx&#xff09;是處理文本數據的利器。在網絡爬蟲中&#xff0c;我們經常需要從HTML頁面中提取特定的信息&#xff0c;正則表達式就像一個智能的&quo…