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