文章预览
在开发中遇到一个业务诉求,需要在 千万量级的底池数据中筛选出不超过 10W 的数据,并根据配置的权重规则进行排序、打散(如同一个类目下的商品数据不能连续出现 3 次)。下面对该业务诉求的实现,设计思路和方案优化进行介绍。 对“千万量级数据中查询 10W 量级的数据”设计了如下方案: 多线程+CK 翻页方案 ES scroll scan 深翻页方案 ES+Hbase 组合方案 RediSearch +RedisJSON 组合方案 初版设计方案 整体方案设计为: 先根据配置的筛选规则,从底池表中筛选出目标数据 在根据配置的排序规则,对目标数据进行排序,得到结果数据 技术方案如下: ① 每天运行导数任务,把现有的千万量级的底池数据(Hive 表)导入到 Clickhouse 中,后续使用 CK 表进行数据筛选。 ② 将业务配置的筛选规则和排序规则,构建为一个筛选 + 排序对象 SelectionQueryCondition。 ③
………………………………