知识卡片

数据分片与任务分片是两种正交的并发手段

普通读书笔记卡

内容

数据分片是把数据切成多份并行处理(分库分表、Kafka partition);任务分片是把处理流程拆成多道工序并行执行(CPU流水线、生产流水线)。两者常叠加——Map/Reduce先做数据分片再做任务分片。任务分片代价:拆得越细并发度越高,但工序间上下文切换开销也越大,总处理时间反而可能变长。发散:瓶颈是”能否拆成互不依赖的几份”还是”内部有无先后阶段”,答案指向不同架构改动。

参考来源

- 位置:第8章《高并发问题》8.3.1-8.3.2节「策略1:数据分片」「策略2:任务分片」(源文件:_epub-src/text/part0039.html) - 结论依据:原文明确定义数据分片是对要处理的数据或请求分成多份并行处理(分库分表、ConcurrentHashMap分槽、Kafka partition、ES分布式索引),任务分片是对处理程序本身分片(CPU指令流水线、汽车生产线),并说明Map/Reduce是两者结合的典型案例,直接支持卡片论述。 - 原始内容:"数据分片也就是对要处理的数据或请求分成多份并行处理……任务分片是对处理程序本身进行分片……工序拆得越多,每个阶段的时间T越小,并发度越高。但单个指令的处理时间却变长了,因为从上一个工序到下一个工序,有上下文切换的开销……Map/Reduce,这是一种数据分片和任务分片相结合的典型案例。"