众筹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{}

}

相关文章
|
2天前
uni-app 4.13开发弹出层组件(二)弹出关闭功能
uni-app 4.13开发弹出层组件(二)弹出关闭功能
10 0
|
2天前
uni-app 4.5开发聊天列表组件(一)
uni-app 4.5开发聊天列表组件(一)
11 0
|
13天前
|
人工智能 监控 安全
java基于微服务架构的智慧工地监管平台源码带APP
劳务管理: 工种管理、分包商管理、信息采集、班组管理、花名册、零工采集、 现场统计、考勤管理、考勤明细、工资管理、零工签证
199 4
|
13天前
|
传感器 人工智能 数据可视化
Java智慧工地监管一体化云平台APP源码 SaaS模式
安全隐患排查 1.可在电脑端、手机端对安全隐患数据进行记录、查询 2.能够实现安全隐患发起、整改、复查的闭环管理 3.具备对安全隐患数据进行统计、可视化分析、信息推送等功能 4.包含对危险性较大的分部分项工程进行巡查记录功能
37 4
|
2月前
|
Android开发 开发者 iOS开发
APP开发后如何上架,上架Android应用市场前要准备什么
移动应用程序(APP)的开发已经成为现代企业和开发者的常见实践。然而,开发一个成功的APP只是第一步,将其上架到应用商店让用户下载和使用是实现其潜力的关键一步。
|
2天前
uni-app 4.12开发弹出层组件(一)基础架构
uni-app 4.12开发弹出层组件(一)基础架构
11 0
|
2天前
|
JavaScript
uni-app 4.6开发聊天列表组件(二)
uni-app 4.6开发聊天列表组件(二)
9 0
|
4天前
|
监控 安全 物联网
B/S架构智慧工地源码,两个终端:PC后台管理端、APP移动端
智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等十大管理环节变得智慧可控。为建设集团、施工企业、政府监管部门等提供一站式工地现场管理信息化解决方案,是一种崭新的工程现场一体化管理模式。
16 0
|
12天前
|
传感器 人工智能 监控
Java智慧工地管理云平台源码 带AI识别、桌面管理+大屏指挥+手机APP
智慧工地平台支持项目级、公司级、集团级多级权限划分,可根据企业的组织架构进行项目权限、功能权限、数据权限设定。
39 0