btcpool矿池-slparser(share log parser)模块解析
核心机制总结
-
支持三种功能:
-
指定Date和UID,将打印指定日期指定用户的share信息到stdout
- UID=0时,将打印指定日期所有用户的share信息
-
指定Date但未指定UID,读取指定日期sharelog,统计数据并写入数据库
- 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d
- 数据库仅保留最近3个月统计数据
-
如果Date和UID均未指定,将监听文件变化,读取share并统计数据,每15秒写入数据库
- 同时启动Httpd服务,开放ServerStatus和WorkerStatus
-
slparser命令使用
slparser -c slparser.cfg -l log_dir
slparser -c slparser.cfg -l log_dir2 -d 20160830
slparser -c slparser.cfg -l log_dir3 -d 20160830 -u puid
#-c指定slparser配置文件
#-l指定日志目录
#-d指定日期
#-u指定PUID(即userId),userId为0时dump all, >0时仅输出指定userId的sharelog
slparser.cfg配置文件
slparserhttpd = {
#指定IP和端口
ip = "0.0.0.0";
port = 8081;
#每间隔15s写库
flush_db_interval = 15;
};
#指定sharelog文件路径
sharelog = {
data_dir = "/data/sharelog";
};
#数据库配置,表为table.stats_xxxx
pooldb = {
host = "";
port = 3306;
username = "dbusername";
password = "dbpassword";
dbname = "";
};
slparser流程图
![bpo][1]ol_local_stats_db数据库结构
bpool_local_stats_db.txt
DROP TABLE IF EXISTS `stats_pool_day`;
CREATE TABLE `stats_pool_day` (
`day` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`lucky` double NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `day` (`day`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `stats_pool_hour`;
CREATE TABLE `stats_pool_hour` (
`hour` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `hour` (`hour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `stats_users_day`;
CREATE TABLE `stats_users_day` (
`puid` int(11) NOT NULL,
`day` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_day` (`puid`,`day`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `stats_users_hour`;
CREATE TABLE `stats_users_hour` (
`puid` int(11) NOT NULL,
`hour` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_hour` (`puid`,`hour`),
KEY `hour` (`hour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `stats_workers_day`;
CREATE TABLE `stats_workers_day` (
`puid` int(11) NOT NULL,
`worker_id` bigint(20) NOT NULL,
`day` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_worker_id_day` (`puid`,`worker_id`,`day`),
KEY `day` (`day`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `stats_workers_hour`;
CREATE TABLE `stats_workers_hour` (
`puid` int(11) NOT NULL,
`worker_id` bigint(20) NOT NULL,
`hour` int(11) NOT NULL,
`share_accept` bigint(20) NOT NULL DEFAULT '0',
`share_reject` bigint(20) NOT NULL DEFAULT '0',
`reject_rate` double NOT NULL DEFAULT '0',
`score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',
`earn` bigint(20) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `puid_worker_id_hour` (`puid`,`worker_id`,`hour`),
KEY `hour` (`hour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
欢迎继续关注兄弟连区块链教程分享!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 兄弟连区块链教程以太坊源码分析core-genesis创世区块源码分析
- 兄弟连区块链教程eth源码解析区块数据结构
- 【以太坊源码解析】-区块数据结构
- 兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(一)
- 兄弟连区块链教程以太坊源码分析chain-indexer区块链索引二
- 以太坊源码分析:fetcher模块和区块传播
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to the Analysis of Algorithms
Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99
This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!