文档章节

区块链教程btcpool矿池源码分析statshttpd模块解析

兄弟连区块链入门教程
 兄弟连区块链入门教程
发布于 2018/10/15 15:14
字数 658
阅读 4
收藏 0

兄弟连区块链教程btcpool矿池源码分析statshttpd模块解析

核心机制总结

  • 监听并接收SHARE_LOG,按Worker、user、pool统计acceptCount_、acceptShareSec_、rejectShareMin_
    • 同时统计totalWorkerCount_和totalUserCount_
    • 延时超过1小时的SHARE_LOG将被忽略
  • 每15s写入数据库(可由flush_db_interval指定),每30分钟清理过期Worker
    • 如果Worker超过1小时未提交share,将被置为过期状态
    • 计算每个Worker的accept1m_、accept5m_、accept15m_、reject15m_、accept1h_、reject1h_
      • 以及acceptCount_、lastShareIP_、lastShareTime_
    • DROP并CREATE数据表mining_workers_tmp,Worker统计数据批量写入mining_workers_tmp
    • mining_workers_tmp数据写入数据表mining_workers
  • 监听并接收COMMON_EVENTS,获取workerName和minerAgent,更新数据表mining_workers
  • 启动Httpd服务,开放ServerStatus和WorkerStatus

statshttpd命令使用

statshttpd -c statshttpd.cfg -l log_dir
#-c指定statshttpd配置文件
#-l指定日志目录

statshttpd.cfg配置文件

#指定kafka集群
kafka = {
brokers = "1.1.1.1:9092,2.2.2.2:9092,3.3.3.3:9092";
};

statshttpd = {
#指定IP和端口
ip = "0.0.0.0";
port = 8080;

#间隔15s将workers data入库
flush_db_interval = 15;
#最近一次写库时间
file_last_flush_time = "/work/xxx/statshttpd_lastflushtime.txt";
};

#指定数据库配置
pooldb = {
host = "";
port = 3306;
username = "dbusername";
password = "dbpassword";
dbname = "";
};

mining_workers/mining_workers_tmp数据表结构

CREATE TABLE `mining_workers_tmp` (
`worker_id` bigint(20) NOT NULL,
`puid` int(11) NOT NULL,
`group_id` int(11) NOT NULL,
`worker_name` varchar(20) DEFAULT NULL,
`accept_1m` bigint(20) NOT NULL DEFAULT '0',
`accept_5m` bigint(20) NOT NULL DEFAULT '0',
`accept_15m` bigint(20) NOT NULL DEFAULT '0',
`reject_15m` bigint(20) NOT NULL DEFAULT '0',
`accept_1h` bigint(20) NOT NULL DEFAULT '0',
`reject_1h` bigint(20) NOT NULL DEFAULT '0',
`accept_count` int(11) NOT NULL DEFAULT '0',
`last_share_ip` char(16) NOT NULL DEFAULT '0.0.0.0',
`last_share_time` timestamp NOT NULL DEFAULT '1970-01-01 00:00:01',
`miner_agent` varchar(30) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_worker_id` (`puid`,`worker_id`),
KEY `puid_group_id` (`puid`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `mining_workers` (
`worker_id` bigint(20) NOT NULL,
`puid` int(11) NOT NULL,
`group_id` int(11) NOT NULL,
`worker_name` varchar(20) DEFAULT NULL,
`accept_1m` bigint(20) NOT NULL DEFAULT '0',
`accept_5m` bigint(20) NOT NULL DEFAULT '0',
`accept_15m` bigint(20) NOT NULL DEFAULT '0',
`reject_15m` bigint(20) NOT NULL DEFAULT '0',
`accept_1h` bigint(20) NOT NULL DEFAULT '0',
`reject_1h` bigint(20) NOT NULL DEFAULT '0',
`accept_count` int(11) NOT NULL DEFAULT '0',
`last_share_ip` char(16) NOT NULL DEFAULT '0.0.0.0',
`last_share_time` timestamp NOT NULL DEFAULT '1970-01-01 00:00:01',
`miner_agent` varchar(30) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_worker_id` (`puid`,`worker_id`),
KEY `puid_group_id` (`puid`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mining_workers_tmp数据写入数据表mining_workers

const string mergeSQL = "INSERT INTO `mining_workers` "
  " SELECT * FROM `mining_workers_tmp` "
  " ON DUPLICATE KEY "
  " UPDATE "
  " `mining_workers`.`accept_1m` =`mining_workers_tmp`.`accept_1m`, "
  " `mining_workers`.`accept_5m` =`mining_workers_tmp`.`accept_5m`, "
  " `mining_workers`.`accept_15m` =`mining_workers_tmp`.`accept_15m`, "
  " `mining_workers`.`reject_15m` =`mining_workers_tmp`.`reject_15m`, "
  " `mining_workers`.`accept_1h` =`mining_workers_tmp`.`accept_1h`, "
  " `mining_workers`.`reject_1h` =`mining_workers_tmp`.`reject_1h`, "
  " `mining_workers`.`accept_count` =`mining_workers_tmp`.`accept_count`,"
  " `mining_workers`.`last_share_ip` =`mining_workers_tmp`.`last_share_ip`,"
  " `mining_workers`.`last_share_time`=`mining_workers_tmp`.`last_share_time`,"
  " `mining_workers`.`updated_at` =`mining_workers_tmp`.`updated_at` ";

 

© 著作权归作者所有

共有 人打赏支持
兄弟连区块链入门教程
粉丝 4
博文 174
码字总数 182165
作品 0
延庆
私信 提问
区块链教程btcpool矿池源码分析JobMaker模块解析

兄弟连区块链教程btcpool矿池源码分析JobMaker模块解析 btcpool矿池-JobMaker模块解析 核心机制总结 同时监听kafka KAFKATOPICRAWGBT和KAFKATOPICNMC_AUXBLOCK,以支持混合挖矿 接收的Gbt消息...

兄弟连区块链入门教程
2018/10/16
0
0
兄弟连区块链入门教程btcpool矿池源码分析环境搭建

btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits。 安装Bitcoind+ZMQ 安装ZooKeeper 安装Kafka 安装BTCPool 如下内容为install_btcpool.sh展开: grep '^C...

兄弟连区块链入门教程
2018/10/29
0
0
区块链教程btcpool矿池源码分析StratumServer模块解析

兄弟连区块链教程btcpool矿池源码分析StratumServer模块解析 核心机制总结 接收的job延迟超过60秒将丢弃 如果job中prevHash与本地job中prevHash不同,即为已产生新块,job中isClean状态将置为...

兄弟连区块链入门教程
2018/10/15
0
0
区块链教程open-ethereum-pool矿池源码分析policy模块

  兄弟连区块链教程open-ethereum-pool矿池源码分析policy模块。 open-ethereum-pooleth矿池-policy模块 PolicyServer定义 GetBlacklist和GetWhitelist IsBanned 处理ApplyMalformedPolic......

兄弟连区块链入门教程
2018/10/15
0
0
区块链教程open-ethereum-pool矿池源码分析policy模块

兄弟连区块链教程open-ethereum-pool矿池源码分析policy模块 open-ethereum-pooleth矿池-policy模块 PolicyServer定义 GetBlacklist和GetWhitelist IsBanned 处理ApplyMalformedPolicy 处理A......

兄弟连区块链入门教程
2018/10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jdk11 HttpClient 爬虫

目的: 获得目标背单词网站中的单词, 写了一个简单的小爬虫, 使用jdk11 到此, 思路明确! 第一步, 把冰箱门...., 串词了,Sorry!! 第一步, 调用登陆接口, 拿到sessionid! 第二步, 带着sessionid...

GOToo
21分钟前
3
0
matlab-自控原理 taylor 泰勒展开 一、二元函数

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   一元函数的泰勒展开 code c......

志成就
32分钟前
2
0
PreparedStatement批量执行sql

案例: 工具方法: public static Connection getConnection(){try {Class.forName("com.mysql.jdbc.Driver");ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/......

ZeroneLove
49分钟前
1
0
【scala】3.数组相关操作

简介 在本章中,我们将会学到如何在scala中操作数组。 1、定长数组 // 初始化长度为10的定长数组,每一个元素的值为0val nums = new Array[Int](10)// nums: Array[Int] = Array(0, 0, 0, ...

Areya
54分钟前
2
0
教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基...

董黎明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部