FISCO BCOS 实战教程(七)config.ini 配置详解之 chain & compatibility & flow_control

"    config.ini 配置中的 chain 配置说明可以参考 FISCO 官网

1. chain

    我们可以看到在 chain 这个配置中有三个配置项 id, sm_crypto , sm_crypto_channel ,官网上也对这三个配置项做了说明。下面我们依次来讲解这三个配置项的作用

1.1 id 

    这个配置项很简单,实际应用中我们也不会涉及到修改这个配置项,保持默认即可

1.2 sm_crypto

    这个配置项表示节点是否以国密方式启动。关于国密和非国密,这里不做过多解释,有兴趣的可以自行百度。

    这个值是使用 build_chain.sh ( 这里以 build_chain.sh 为例 ) 生成节点的时候,指定是否生成国密节点来确定的,默认值是 false ,表示的是以非国密方式启动,那么如果我们希望以国密方式启动呢,只能重新生成新的链,无法通过直接修改来变更运行方式,可以参考 FISCO 官网 查看如何生成国密链。同时各位读者可以参考我的另一个文章 “FISCO BCOS 实战教程(三) build_chain.sh 搭链“  了解使用 build_chain.sh 时,各个参数的使用说明。


1.3 sm_crypto_channel

        这里假设各位读者已经根据  FISCO 官网  生成链一条国密链。这里我们使用 bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G 生成链,然后并启动。  

    进入 fisco/nodes/127.0.0.1/node0 目录,查看 config.ini 文件。这里我们看到 sm_crypto_channel 为 true,表示 channel 连接方式为国密方式。 sm_crypto_channel  具体影响到客户端连接节点时使用的证书。下面我们来验证一下。

    参考 FISCO 官网 配置下载 console 后,进行配置文件和证书配置。这里需要注意的是,官网中复制证书时,使用的命令是 "cp -r nodes/127.0.0.1/sdk/* console/conf/"  , 这里官网假设你是使用 "bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g"  生成的节点,但实际上,我们上面用的命令是 "bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G "  ,这里多来一个 -G 。所以,复制证书的时候,我们不能直接使用官网上的命令,需要稍微修改下。

    使用如下命令, 在 console/conf 目录下,创建 gm 目录,然后复制证书到 gm 目录下。至于为什么要创建 gm 目录,大家可以查看 console/conf/config.toml 这个文件。我们看到, gm 默认的证书路径为 conf/gm ,所以方便起见,这里我们就创建默认的 conf/gm 目录。

## 创建gm 目录

mkdir console/conf/gm

## 复制证书

cp sdk/gm/* console/conf/gm/


    然后进入到 console 目录下,执行 ./start.sh 启动 console

    如果启动失败,则需要 ps -ef|grep -i fisco 查看 fisco 进程是否启动。如果没有启动,进入到 nodes/127.0.0.1  目录,使用 ./start_all.sh 启动节点后,在次尝试启动 console。

    好了,这里我们启动 console 成功,表示成功连接到节点了,下面我们来修改 sm_crypto_channel 参数,看看具体的效果。

    进入 nodes/127.0.0.1/node0 目录,修改 config.ini 文件中 sm_crypto_channel=false。

    然后重启 node0,看到 success 字样表示重启成功。

    再次进入到 console/conf  目录,修改 peers=["127.0.0.1:20200"] 。这里说明下,默认的配置是 peers=["127.0.0.1:20200","127.0.0.1:20201"] , 表示 console 会去尝试连接 node0 和 node1  ( 具体的连接说明可以查看我的 "FISCO BCOS 实战教程(四)config.ini 配置详解之 channel & rpc" )。 但因为刚才我们只修改 node0 的配置,所以为了看到实验效果,这里配置 console 只连接 node0。

    之后我们尝试启动 console, 连接失败了。这里我们看到,虽然我们在 console/conf/gm 目录下防止了证书,但却依然连接失败。让我们继续实验

    使用如下命令,复制 sdk目录下的非国密证书到 console/conf 目录。

cp nodes/127.0.0.1/sdk/*   console/conf


    然后再次进入 console 目录,尝试启动 console。我们看到 console 启动成功了。这里不知道大家有没有注意到,我们在 console 目录下同时放置了国密和非国密的证书,那么 console 怎么知道用那个证书去连接节点呢? 答案是,按个尝试去连接。console 首先会使用 conf 目录下的非国密证书去连接节点,如果成功,则连接成功,console 返回 "Welcome" 信息;如果连接失败,则继续使用 conf/gm 目录下的国密证书去尝试连接节点,如果连接成功,则返回 “Welcome" 信息; 如果两次尝试都失败,哦,console 就提示连接失败,返回连接失败的错误信息。

    同时,我们可以注意到,我们只修改来 node0 的 sm_crypto_channel 的配置,node1/node2/node3 的配置并没有修改,这说明这个配置项对于每个节点是独立的,每个节点中的这个配置项是可以为不相同的。

    另外,可能有人会问,如果我生成的是非国密的链,即节点中 sm_crypto 和 sm_cryto_channel 都是 false, 那么我可以修改节点的 sm_cryto_channel 为 true 吗?  呵呵,如果你生的非国密的链,那么你的 sdk 目录中是没有 gm 这个目录的,所以就算你修改 sm_cryto_channel=true , 你也找不都国密的证书。

1.4 还原配置

    做完实验来,记得还原 node0 中 config.ini 的 sm_crypto_channe=true ,  然后重启 node0


2. compatibility

    现在让我来继续看下一个配置。compatibility 配置项中只有一个 supported_version 配置项,这个配置项的作用是用于兼容升级的。以下图为例,现在配置为 2.7.2 ,表示我的 fisco-bcos 二进制版本为 2.7.2 , 那么后续如果 FISCO 官方继续开发了新版本的FISCO BCOS ,比如 2.9.0。如果 2.9.0 中对性能有很大提升,你也想用这个新版本,那么你就可以直接拿  2.9.0 的 fisco-bcos 二进制,替换当前节点上的 fisco-bcos 二进制,然后只需要重启节点,不用做任何修改,你的节点可以继续运行,当然 2.9.0 中所包含的新功能因为这个 supported_version 这个参数的原因是关闭的,你无法使用。如果你修改 supported_version 为 2.9.0 那么,会造成各种异常和不兼容,因为你的数据和配置文件还是 2.7.2 的。

    所以,总结来说,这个配置项是对后续版本的 fisco-bcos 二进制来说的,已经运行的节点不能修改这个配置项,否则会出现各种异常。


3. log

    这个配置项就很简单了,一眼就能明白作用,这里不做过多解释

4. flow_control

    这个配置下面有两个配置项,limit_req 和 outgoing_bandwidth_limit。   

4.1 outgoing_bandwidth_limit

    outgoing_bandwidth_limit 这个配置项参考官网的说明进行理解。不容易进行模拟,这里就不进行演示,并且实际使用中,这个参数使用较少。

 4.2 limit_req

    比较有意思的参数是这个 limit_req, 用于限制节点接受的 QPS 。

首先,下载 java-sdk-demo ( 我们将使用这个工具发送 QPS )

git clone https://github.com/FISCO-BCOS/java-sdk-demo.git

# 如果 git 访问很慢,可以访问 gitee

git clone https://gitee.com/FISCO-BCOS/java-sdk-demo

        进入到 java-sdk-demo 目录,进行编译

        进行文件配置, 这里的配置和 console 的配置一样,大家一样画葫芦就好了

cp java-sdk-demo/dist/config-example.toml config.toml

mkdir java-sdk-demo/dist/conf/gm

cp nodes/127.0.0.1/sdk/gm/* java-sdk-demo/dist/conf/gm


    当然,这了 config.toml 文件我们需要修改下,配置 peers=["127.0.0.1:20200"] , 只连接 node0

    好了,准备工作就绪,我们来实验一下。进入 java-sdk-demo/dist 目录,执行如下命令

#调用格式:java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok [groupid] add [用户量] [QPS] [用户文件名]#调用样例java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok 1 add 5000 1000 user1


执行成功,我们看到这里最后输出 TPS 为 888  ,执行结果可能有细微差别,这里结果想近即可 。 TPS 和 QPS 的区别,大家可以百度下,因为这里我们是在本地执行,所以可以认为 QPS = TPS.

        下面,进入 nodes/127.0.0.1/node0 ,修改 config.ini 为如下。打开 limit_req, 并设置为 100

        然后重启 node0

    再次进入 java-sdk-demo/dist  目录,执行如下命令

#调用格式: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok [groupid] add [用户量] [QPS] [用户文件名] #调用样例 java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok 1 add 5000 1000 user1

    

    这里我们查看最后的输出,注意到 “include error requests“ 结果为 950 ,接近 1000, 也就是我们发送的 QPS 速率。然后 “exclude error requests“ 为 129 , , 就是我们设置的 node0 的 limit_req 值。那么总结下,就可以发现,当我们发送的 QPS 值超过节点设置的 limit_req 值时,多余的 QPS 消息,节点会返回拒绝,即处理失败。

    这个值的使用场景是,当节点机器性能较差,当业务请求量较多( 即 QPS ) 时,通过设置这个值,可以限制节点的处理速率。

4.3 还原配置

    最后,记得还原 node0 的配置哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351