CREATE TABLE `currency_chain` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '交易所name',
`market_id` int(11) NOT NULL DEFAULT '0' COMMENT 'j交易所id',
`contract_address` varchar(255) DEFAULT NULL COMMENT '智能合约地址',
`theday` int(11) NOT NULL DEFAULT '0' COMMENT '以天为时间',
`level_id` int(11) DEFAULT '1' COMMENT '未更新的频次级别',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除 1:删除 0:不删除',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='去中心化交易所的智能合约地址';
1、新增的数据 采用redis的顺序执行插入数据库 theday入库的是当前时间 level_id 是默认就是1
2、更新的数据 每天执行小于当天的数据 进行更新,扔到topic里面
3、消费到数据以后,计算出当前数据的锁仓额,拿数据库的与当前的进行对比,如果当前语句更新了 那就不操作他的级别 如果没有更新的话 就把级别自增+1,就是他下次的执行时间,比如1没有更新,自增+1, 那他就是两天以后再执行,如果两天以后执行了。级别改为1,如果还没有执行继续自增+1,得出他下次的执行时间。
①问题:比如30万数据,为0的有20万,他们每次执行的时间也是一样的,怎么可以把他们拆开
然后比如说你为0 以后不更新次数超过10次以后,随机给你(10+2)*2 取(10,24)中间随机取更新的天数
②比如你有10次没更新,突然更新了一次: level_id:10
锁仓额不为0,就减2天在执行 如果后续每次都执行的话 每次减2,小于1的时候 默认取1
③每天更新的次数能否控制在5万左右,
(级别+2)*2 取随机数 来决定更新的频次
(级别-2)*2 取随机数
(3