-
Notifications
You must be signed in to change notification settings - Fork 4
super node guide
关于超级节点的描述可以在wiki主页上参考超级节点的描述或者参考白皮书
超级节点是为了支撑FnFn无限分叉的目标而诞生的水平扩展的集群技术,以分散DPoS节点为子分支出块花费的计算与存储的压力。不然,白皮书上FnFn的无限分叉就是不切实际的幻想。
超级节点集群是以DPoS节点为根节点(Root Node)的树状集群拓扑结构, 树干和叶子节点是管理各自分支的分支节点(Fork Node),以级联的方式接入 DPoS节点。
既然超级节点是集群方案,那么超级节点集群通信就需要通信协议, 集群内部通信需要依靠Dbp协议进行通信, Dbp协议是基于Socket的基础上设计的二进制协议,二进制的交换格式采用Google的protobuf生成。 设计为二进制主要考虑是传输性能, 因为节点之间的区块等大量信息需要同步。
集群的根节点必须是DPoS节点,而且根节点必须优先运行启动。可以把根节点简单看做是Master节点, Fork节点是Slave节点。
(1) 创建默认的DPoS节点
运行 luashell exec new 0 0 500000000 等程序执行完毕返回到终端,现在DPoS节点开始运行工作,然后再运行以下命令停止DPoS节点 luashell stop 0 0 这样DPoS节点就停止了。为什么要停止? 因为默认创建的DPoS节点是没有关于超级节点的相关配置的,我们必须添加超级节点的配置重新启动才能生效。
(2)配置DPoS根节点
把以下配置添加到根节点的datadir目录下的multiverse.conf文件
enablesupernode
dbplisten
dbpport=6815
dbpallowip=*.*.*.*
- enablesupernode表示打开超级节点的功能开关
- dbplisten表示启动dbp服务端口监听
- dbpport指定dbp的监听端口(连接端口)
- dbpallowip指定dbp允许接入的IP白名单,以模式匹配来指定网段和特定IP
(3) 启动DPoS根节点
添加完毕配置以后,运行以下命令重新启动DPoS节点: luashell exec run 0 0
(1) 创建默认的Fork节点
luashell exec new 1 1 luashell stop 1 1
(2) 配置Fork节点
把以下配置添加到Fork节点的datadir目录下的multiverse.conf文件
forkmpvssaddress=177cxdb2s5ewp4nwdaanc9c3nbsfxb79d22xj14a8jr27eg90bxbqh4eb
forkmpvsskey=05f07d1e09b60b74538a1e021c98956a7c508fa35f6c3eba01c9ab1f6a871611
addfork=acfc26b9d2cbe954cb2b12623573bcfbe4aeba68fc8ddb99e6628c7f4b5e1c72
dbpport=7815
dbplisten
dbpallowip=*.*.*.*
enablesupernode
enableforknode
parentnode=localhost:6815
-
forkmpvssaddress和forkmpvsskey的配置需要与DPoS根节点的mpvssaddress mpvsskey配置一致。 该选项可选,如果没有,那么Fork Node只负责存储其订阅的分支Fork。 反之,Fork Node除了存储其订阅的分支Fork那么还需要计算并生成其分支Fork上的区块,包括Extended子块。
-
addfork指定订阅的分支Fork ID
-
dbpport指定dbp服务监听端口(连接端口)
-
dbplisten启动监听
-
dbpallowip指定dbp允许接入的IP白名单,以模式匹配来指定网段和特定IP
-
enablesupernode表示打开超级节点的功能开关
-
enableforknode表示打开Fork Node的功能开关
-
parentnode指定连接父级节点的IP以及端口(也可以是域名及端口)。父级节点可以是Fork Node,也可以是Root Node。 因为拓扑结构是树型的。
(3) 启动Fork节点
添加完毕配置以后,运行以下命令重新启动Fork节点: luashell exec run 1 1
Home | Copyright © 2017-2019 FissionAndFusion