你们生产上的kafka集群是如何使用的?有多少个分片?每个分片副本是多少?

提问者:帅平 问题分类:面试刷题
你们生产上的kafka集群是如何使用的?有多少个分片?每个分片副本是多少?
2 个回答
望北海
望北海
Doris优化TopN查询的核心思路是减少全量排序的数据量并充分利用分布式计算能力,具体措施有:
1、两阶段聚合优化
Doris在执行TopN时自动将计算分解为本地TopN和全局TopN。例如查询SELECT * FROM sales ORDER BY revenue DESC LIMIT 100时,每个BE节点会先计算本地的Top100结果,再汇总到FE节点进行全局Top100的合并。这种方式相比全量排序能减少约90%的数据传输量。
2、利用有序存储结构
在建表时通过ORDER BY指定排序键(如CREATE TABLE t (dt DATE, user_id INT, revenue BIGINT) DUPLICATE KEY(dt) ORDER BY(revenue DESC)),数据在写入时已按revenue降序排列。查询时直接读取前N条即可,无需实时排序,时间复杂度从O(nlogn)降为O(1)。
3、分区分桶裁剪
结合分区和分桶机制,例如按日期分区后,当查询WHERE dt='2023-08-08' LIMIT 100时,系统只需扫描特定分区的数据。若每个分桶内数据已按revenue排序,可进一步实现桶级别的快速TopN获取。
4、物化视图预聚合
查询XX维度Top10时,直接命中物化视图的预排序结果,避免全表扫描。
5、资源控制与参数优化
在Session级别设置SET parallel_fragment_exec_instance_num=4;增加并发度,或通过SET topn_opt_limit_threshold=5000;调整两阶段聚合的阈值。对于海量数据场景,合理设置topn_opt_ratio参数可平衡内存消耗与计算效率。
需要特别注意的是,当TopN的N值过大(如超过1万)或存在大量重复排序键时,两阶段优化可能失效,此时建议通过PARTITION BY分片处理或采用近似算法(如Space-Saving算法)进行优化。
发布于:2周前 (05-23) IP属地:
北饮清茶
北饮清茶
我们生产商的kafka集群使用情况如下:
分区数:根据吞吐量设定(我们是12分区,单分区处理5万条/秒)。
副本数:通常为3副本(1 Leader + 2 Follower),保证高可用。
生产者:批量发送(batch.size调大)+压缩(compression.type=snappy)。
消费者:多消费者组并行消费,手动提交Offset避免重复。
发布于:2周前 (05-23) IP属地:
我来回答