作者:VariableSpeedFengsheng\链接:https://juejin.cn/post/7104090532015505416前言在开发中遇到一个业务需求,需要从几千万条数据中筛选出不超过10W的数据锅数据。并按照配置的权重规则进行排序和分散(例如一个类别下的商品数据不能连续出现3次)。下面介绍业务需求的实现、设计思路和方案优化,以下方案是针对“千万级数据中查询10W级数据”设计的多线程+CK翻页方案ESscroll扫描深度翻页方案ES+Hbase组合方案RediSearch+RedisJSON组合方案初步设计方案整体方案设计如下:首先,根据配置的“过滤规则”从pot表中过滤出“目标数据”,以及然后根据配置的“排序规则”过滤“目标数据”。数据”排序,获取“结果数据”的技术方案如下:每天运行衍生任务,将已有的千万锅数据(Hive表)导入Clickhouse,然后使用CK表进行数据筛选.将业务配置的过滤规则和排序规则构建成一个“过滤+排序”的对象SelectionQueryCondition,当从CKpot表中取“目标数据”时,启动多线程,进行页面过滤,将获取到的“目标数据”存储起来"在结果列表中。//页面大小默认5000intpageSize=this.getPageSize();//页码intpageCnt=totalNum/this.getPageSize()+1;List