魔豹联盟佛萨奇2.0源码系统开发搭建(成熟技术)

简介: 魔豹联盟佛萨奇2.0源码系统开发搭建(成熟技术)

每个节点都在后台持续运行:

如果主节点不存在,则进入主节点选举过程;
如果节点为主节点,则广播 declaration 消息,声明自己为主节点,如果收到别的节点发送的较低 节点 ID值,则成为从节点;
如果节点为从节点,并且在一定时间内(由 core.yaml 中的 leaderAliveThreshold 设置,默认 10 秒)没有收到其它节点发送的 declaration 消息,则设置主节点不存在。
主节点选举过程:

提交自己为主节点的提案;
收集其它节点发送的提案;
如果有其它节点声明为主节点,则放弃选举过程;
如果主节点不存在,则将自己的节点 ID 与其它节点的 ID 值进行比较,如果自己的 ID 值比其它任何一个节点 ID 值都小,则声明自己成为主节点,否则放弃选举过程。
详细过程图示:

主节点选举关键代码
// ref: https://github.com/hyperledger/fabric/blob/master/gossip/election/election.go

func (le *leaderElectionSvcImpl) run() {

defer le.stopWG.Done()
for !le.shouldStop() {
    if !le.isLeaderExists() {
        le.leaderElection()
    }
    // If we are yielding and some leader has been elected,
    // stop yielding
    if le.isLeaderExists() && le.isYielding() {
        le.stopYielding()
    }
    if le.shouldStop() {
        return
    }
    if le.IsLeader() {
        le.leader()
    } else {
        le.follower()
    }
}

}

func (le *leaderElectionSvcImpl) leaderElection() {

le.logger.Debug(le.id, ": Entering")
defer le.logger.Debug(le.id, ": Exiting")
// If we're yielding to other peers, do not participate
// in leader election
if le.isYielding() {
    return
}
// Propose ourselves as a leader
le.propose()
// Collect other proposals
le.waitForInterrupt(getLeaderElectionDuration())
// If someone declared itself as a leader, give up
// on trying to become a leader too
if le.isLeaderExists() {
    le.logger.Info(le.id, ": Some peer is already a leader")
    return
}

if le.isYielding() {
    le.logger.Debug(le.id, ": Aborting leader election because yielding")
    return
}
// Leader doesn't exist, let's see if there is a better candidate than us
// for being a leader
for _, o := range le.proposals.ToArray() {
    id := o.(string)
    if bytes.Compare(peerID(id), le.id) < 0 {
        return
    }
}
// If we got here, there is no one that proposed being a leader
// that's a better candidate than us.
le.beLeader()
atomic.StoreInt32(&le.leaderExists, int32(1))

}

相关文章
|
9月前
|
存储 安全 区块链
DAPP众筹互助模式系统开发|技术方案
智能合约的主要目的之一是在多方之间去信任化地自动达成金融协议
|
9月前
|
新零售 小程序 搜索推荐
认养模式小程序系统开发|成熟技术|项目案例
随着新零售的发展,我们设想更多创新的商业模式和营销方式。
|
9月前
|
新零售 供应链
九星创客新零售模式开发|成熟案例|项目需求
未来新零售对消费者最好的服务方式是“你需要,我送到”
|
区块链
DAPP众筹互助系统开发(成熟技术)|DAPP众筹互助系统开发案例分析
智能合约是一种以代码形式存在的合约constructor()public
|
9月前
|
新零售 搜索推荐 UED
九星创客互助排位系统开发|技术成熟|源码搭建
新零售模式是一种融合线上、线下商业以及物流,打破传统零售业的边界,通过技术创新和数据驱动来改善用户体验和效率的零售模式。
|
算法 安全 分布式数据库
MetaForce原力元宇宙佛萨奇2.0智能合约系统开发(源码部署)
Force是一个全球加密货币生态系统,其成员使用我们的智能合约即时利润分配工具和算法互相帮助以实现财务福利。META FORCE系统属于我们的社区并且是完全去中心化的,这意味着它是透明的、安全的并且可以抵抗外部影响。 智能合约是一种自执行算法(程序代码)。它保证了在区块链内执行逻辑或传输的透明性和安全性。
|
新零售 大数据 云计算
泰山众筹商城系统开发案例详细/方案程序/成熟技术/开发项目/源码平台
  新零售指的就是线上、线下和物流必须结合在一起。也就是说,线下的企业必须走到线上去,线上的企业必须走到线下来,线上、线下同现代物流结合在一起,才能真正创造出新的销售方式。
|
搜索推荐
游戏直播系统软件源码搭建平台,经营突破困境的思路和看法
借助“东莞梦幻网络科技”所提供的游戏直播平台源码搭建属于自己的游戏直播平台,在经营游戏直播平台过程中,正面临一些困境可以突破。下面我们就讨论在经营游戏直播平台中会遇到的困境,并推荐一些突破困境的思路和看法。
|
机器学习/深度学习 人工智能 弹性计算
与阿里云公司合作的项目获得优秀项目案例
近日,2022年度教育部产学合作协同育人项目优秀项目案例重磅发布。赵卫东老师与阿里云公司合作的项目荣获“教学内容和课程体系改革”优秀项目!https://mp.weixin.qq.com/s/bSuisNg-avFvvfRK2J7-4g
440 0
与阿里云公司合作的项目获得优秀项目案例
|
存储 算法 区块链
链游项目系统开发(方案设计)丨DAPP链游系统开发(案例分析)/成熟技术/区块链游戏开发/源码说明
  在区块链中,每个块包含了一定数量的交易信息和该块的唯一标识符,同时还包含了前一个块的哈希值。这样的设计保证了区块之间的顺序和完整性,一旦一个块被添加到区块链中,它就不可更改。This makes blockchain a secure and trustworthy distributed ledger that can be used to record and verify various types of transactions.