众筹APP开发丨众筹系统开发技术详细丨众筹系统源码及功能

简介:  type BlockChainSyncServer struct { chainId string net protocol.NetService // 网络服务,向其他节点获取/发送数据,由外部模块提供实现
  1. 模块解读

逻辑控制对象解读

控制流程梳理

7.2.1. 逻辑控制服务解读
7.2.1.1. 同步模块服务
type BlockChainSyncServer struct {

chainId string

net             protocol.NetService      // 网络服务,向其他节点获取/发送数据,由外部模块提供实现
msgBus          msgbus.MessageBus        // 内部消息服务,提供订阅指定 Topic 的功能,由外部模块提供实现
blockChainStore protocol.BlockchainStore // 存储服务,提供本地区块的读写,由外部模块提供实现
ledgerCache     protocol.LedgerCache     // 节点本地最高快的缓存
blockVerifier   protocol.BlockVerifier   // 区块验证服务,校验区块有效性
blockCommitter  protocol.BlockCommitter  // 区块提交服务,提交验证有效的区块

log   *logger.CMLogger
conf  *BlockSyncServerConf // Sync 模块基础配置
start int32                // 服务是否启动的原子数标记位
close chan bool            // 关闭信号通道

scheduler *Routine // 调度服务通道,包含处理信号接收,处理入口等逻辑
processor *Routine // 处理服务通道,处理区块

}
主要的方法入口:

func (sync *BlockChainSyncServer) Start() error {

// 检查服务是否启动
check sync.start

// 1. 初始化配置
// 1)初始化任务调度服务入口
processor := newProcessor()
scheduler := newScheduler()
// 2)初始化消息队列
sync.scheduler = NewRoutine("scheduler", scheduler.handler, scheduler.getServiceState, sync.log)
sync.processor = NewRoutine("processor", processor.handler, processor.getServiceState, sync.log)

// 2. 注册监听消息
// 1)在 msgBus 中注册监听 "msgbus.BlockInfo" 的Topic
sync.msgBus.Register(msgbus.BlockInfo, sync)
// 2) 在 Net 服务中注册监听 “netPb.NetMsg_SYNC_BLOCK_MSG” 消息类型
sync.net.Subscribe(netPb.NetMsg_SYNC_BLOCK_MSG, sync.blockSyncMsgHandler)
sync.net.ReceiveMsg(netPb.NetMsg_SYNC_BLOCK_MSG, sync.blockSyncMsgHandler)

// 3. 启动消息队列
sync.scheduler.begin()
sync.processor.begin()

// 4. 启动 同步模块的定时任务
go sync.loop()

}
7.2.1.2. 调度服务
// scheduler Retrieves block data of specified height from different nodes
type scheduler struct {

peers             map[string]uint64     // 网络中节点的高度 {"node1": 101, "node2": 102, "node3": 103}
blockStates       map[uint64]blockState // 指定高度的处理状态 {101: Received, 102: Pending, 103: New}
pendingTime       map[uint64]time.Time  // 指定高度的处理发起时间 {101: time1, 102: time2, 103: time3}
pendingBlocks     map[uint64]string     // 指定高度的查询节点ID {101: "node1", 102: "node2", 103: "node3"}
receivedBlocks    map[uint64]string     // 指定高度已收到区块记录的缓存 {101: "node1", 102: "node2", 103: "node3"}
lastRequest       time.Time             // 批量请求发起时间
pendingRecvHeight uint64                // 本地当前最高块 + 1,下一个请求批次的起始高度

maxPendingBlocks    uint64        // 最大区块处理数量,等同于 blockStates 的长度
BatchesizeInEachReq uint64        // 最大单次请求批次区块数量
peerReqTimeout      time.Duration // 网络中区块高度查询超时时间
reqTimeThreshold    time.Duration // 是否开始同步的检查项,time.Now - lastRequest > reqTimeThreshold == true 开始同步

log    *logger.CMLogger
sender syncSender // 同步模块对象实例
ledger protocol.LedgerCache

}
7.2.1.3. 处理服务
type processor struct {

queue          map[uint64]blockWithPeerInfo // 收到的区块消息缓存
hasCommitBlock uint64                       // 本地已经提交的区块高度记录

log         *logger.CMLogger
ledgerCache protocol.LedgerCache // 本地账本缓存
verifyAndAddBlock     // 校验和存储模块接口实例

}
7.2.1.4. 消息队列
// Routine Provide hosting of the service in goroutine
type Routine struct {

name       string          
handle     handleFunc      // 调度逻辑入口
queryState getServiceState
log        *logger.CMLogger

start int32                // 服务启动标记位
queue *queue.PriorityQueue // 消息队列
out   chan queue.Item      // 结果队列,转发消息类型,scheduler 的消息由 processor 的 handle 再次处理,processor 由 scheduler 处理
stop  chan struct{}

}

相关文章
|
7天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
73 17
|
6天前
年轻人如果运用圈子系统进行扩列,社交圈子论坛app扩列的好处,兴趣行业圈子提升社交技能
年轻人通过圈子系统扩列,在数字化时代积极扩展社交网络、增进人际交往。圈子系统是社交媒体中的虚拟社区,提供内容发布、互动等功能。扩列能拓宽社交圈、增进交流、获取信息资源、提升社交技能并发现商业机会。策略包括明确目标、筛选适合的圈子、积极参与和保持诚信。同时需注意保护隐私、警惕不良信息及合理规划时间。
|
3天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
18 5
|
3天前
|
移动开发 安全 搜索推荐
圈子社交系统APP,同城本地圈子论坛开发,让身边的人沟通更加紧密
圈子社交系统APP是一款基于社交网络的移动应用,用户可创建、加入和管理兴趣圈子。主要功能包括:动态分享与交流、实时聊天、会员体系与身份认证、活动策划等。该APP注重个性化定制、社交关系深化、隐私安全及跨平台互联,提供丰富的社交体验。
|
6天前
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
17 1
|
11天前
|
前端开发 算法 安全
一站式搭建相亲交友APP丨交友系统源码丨语音视频聊天社交软件平台系统丨开发流程步骤
本文详细介绍了一站式搭建相亲交友APP的开发流程,涵盖需求分析、技术选型、系统设计、编码实现、测试、部署上线及后期维护等环节。通过市场调研明确平台定位与功能需求,选择适合的技术栈(如React、Node.js、MySQL等),设计系统架构和数据库结构,开发核心功能如用户注册、匹配算法、音视频聊天等,并进行严格的测试和优化,确保系统的稳定性和安全性。最终,通过云服务部署上线,并持续维护和迭代,提供一个功能完善、安全可靠的社交平台。
74 6
|
11天前
|
安全 算法 机器人
双重防护!红娘相亲app搭建开发,婚恋交友系统登录方式,密码+验证码的优势
在婚恋交友系统中,密码和验证码是两种重要的安全措施。密码用于验证用户身份,应设置为复杂组合以防止未经授权的访问;验证码则通过图形或字符识别,防止自动化攻击如暴力破解和注册机器人。两者同时开启可显著提高安全性,防止暴力破解和自动化注册,提升用户信任感。建议要求强密码、定期更新验证码样式,并在可疑登录时增加验证码复杂性。这样既能保障用户信息安全,又兼顾了用户体验。 ![交友11111.jpg](https://ucc.alicdn.com/pic/developer-ecology/hy2p6wcvgk4oe_c9eb8d6eb8144866b0cd1d96ffb0c907.jpg)
|
11天前
|
前端开发 搜索推荐 PHP
大开眼界!uniapp秀操作,陪玩系统新功能,陪玩app源码,可实时互动随心优化!
多客游戏陪玩系统采用前端uniapp与PHP语言,实现全开源、易改造,RTC传输协议确保低延迟语音连麦,分布式部署应对高并发。功能创新包括游戏约单、多人语音聊天室、动态广场、私信聊天等,提供高端社交和个性化服务,满足各类需求,让玩家畅享游戏乐趣。
|
UED 数据管理 安全
如何分析APP功能需求、结构
<p><br></p> <p style="text-align:center"><span style="font-size:24px; color:#3366ff">如何分析APP功能需求、结构</span><br></p> <p></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-
3857 0
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
810 1