分布式系统与硬件可扩展性深度解析
在当今数字化时代,分布式系统和硬件可扩展性是构建高效、稳定软件系统的关键要素。了解它们的原理和特性,对于开发者和架构师来说至关重要。
1. 数据持久化与系统设计考量
在许多系统中,从队列中移除消息并对存储相关信息的数据库进行必要更新是常见操作。例如,存储滑雪者乘坐缆车详细信息的数据库。关键在于数据最终要实现持久化,通常“最终”意味着最多几秒的延迟,但采用这种设计的用例应能在更长延迟下保持弹性,且不影响用户体验。
2. 系统与硬件可扩展性
即使是精心设计的软件架构和代码,如果运行在硬件资源不足的环境中,其可扩展性也会受到限制。常见的开源和商业平台在可扩展系统中部署时,旨在利用更多的 CPU 核心、内存和磁盘等硬件资源。这需要在实现所需性能和可扩展性的同时,尽可能降低成本,是一场平衡的艺术。
然而,在某些情况下,增加 CPU 核心数量和可用内存并不能提升系统的可扩展性:
- 单线程代码 :单线程代码在多核节点上运行时,性能不会得到提升,因为任何时候它只会使用一个核心,其余核心闲置。
- 多线程代码中的串行部分 :多线程代码中若包含许多串行部分,即同一时间只能有一个线程执行以确保结果正确,这种现象可以用阿姆达尔定律(Amdahl’s Law)来描述。该定律能让我们根据串行执行的代码量,计算增加 CPU 核心时代码的理论加速比。阿姆达尔定律的两个数据点如下:
| 串行执行代码比例 | 增加核心无明显效果的数量 |
| ---- | ---- |
| 5% | 超过 2048 个核心 |
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



