主要观点:探讨可扩展系统局部低效与局部高效系统不可扩展的原因,包括阿姆达尔定律、协调开销、共享资源利用、效率源于限制以及文化因素等方面。
关键信息:
- 有三种使计算任务更快的方法:买更快电脑(垂直扩展)、优化软件利用资源(效率)、使用多台电脑(水平扩展)。
- 水平扩展与效率似乎冲突,水平扩展需找到基线速度与并行性的最佳平衡,而效率只需优化基线速度。
- 分布式算法需更多协调,增加开销,如 CPython 的全局解释器锁。
- 机器内扩展和机器间扩展有差异,共享资源利用不同,缩放会导致失去共享资源。
- 效率源于对系统的假设,找到其他限制可兼得高水平扩展和高效率,如 TigerBeetle 数据库。
- 可能存在文化元素,对“效率”和“水平扩展”感兴趣的工程师可能不同,大企业更倾向水平扩展。
- 处理大量小任务比处理一个大任务更适合高效算法,局部优化不影响扩展。
重要细节: - 阿姆达尔定律指出并行化的最大加速受可并行化工作比例限制。
- 分布式算法的协调开销包括额外代码、进程间通信或网络跳数,以及更多管理开销避免竞态条件。
- 不同算法在不同场景下有优势,如 Union find 算法在图连通性问题上比标签传播更快,但更耗费代码。
- 文化方面,数据科学家用 Hadoop 集群处理小数据集,高级软件工程师通过优化 Go 脚本证明“大数据很蠢”,但忽略了可扩展性的优势。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。