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