知识卡片
任务拆分为何能提升性能又有上限
内容
把大一统的复杂系统拆成多个小子系统能提升性能:简单系统更容易定位和优化关键性能点;瓶颈出现时可只针对某子系统单独扩展,不必牵动整体。但拆分不是越细越好——子系统间调用要走网络,跨系统调用次数随拆分粒度呈指数增长,网络耗时会逐渐吞掉拆分收益,性能最终逼近但无法突破业务逻辑本身的理论上限。发散:微服务拆得越细越好是常见误区,拆分粒度本质是在单服务可优化性和跨服务网络开销间找平衡点。
参考来源
- 位置:《从0开始学架构》第6章《04|复杂度来源:高性能》"任务分解"一节(源文件:_epub-src/OEBPS/Text/part0005_split_002.html、part0005_split_003.html)
- 结论依据:原文用量化模型说明"当系统拆分为100个子系统的时候,为了完成某次用户访问,系统间的请求次数变成了99次",在网络耗时假设下"处理一次用户访问耗时竟然达到了149ms",并总结"决定业务处理性能的还是业务逻辑本身……理论上的性能是有一个上限的,系统拆分能够让性能逼近这个极限,但无法突破这个极限"。
- 原始内容:如果系统拆分得太细,为了完成某个业务,系统间的调用次数会呈指数级别上升……假如继续拆分下去为100个子系统,为了完成某次用户访问,系统间的请求次数变成了99次……系统拆分为100个子系统的时候,处理一次用户访问耗时竟然达到了149ms……理论上的性能是有一个上限的,系统拆分能够让性能逼近这个极限,但无法突破这个极限。