1

DDIA · 分布式数据系统

 2 years ago
source link: https://blog.triplez.cn/posts/ddia-section-2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

需要在多台机器上分布数据的原因:

  • 扩展性:负载太大,单台机器无法承担,需要将负载分散至多台机器。
  • 容错和高可用性:机器出现故障,我们仍然希望应用系统能够正常工作,这样就需要冗余的多机器。
  • 延迟考虑:若考虑在全球范围内提供服务,方便用户就近访问,则也需要多机器集群部署应用服务。

系统扩展能力#

当系统负载增加到需要更强的处理能力时,最简单的办法就是购买更强大的机器(垂直扩展,scale-up)。

共享内存架构(share memory arch):由一个操作系统管理更多的 CPU、内存和磁盘,通过高速内部总线使每个 CPU 都能访问所有的存储器和磁盘。所有组件的集合可以看作成一个大机器。

当然,共享内存架构的问题也很多:

  1. 成本增长的速度超过了线性:扩容一倍所产生的成本并不一定能带来一倍的性能收益,而且由于性能瓶颈,机器尽管拥有了两倍的性能指标,但却不一定能处理两倍的应用负载。
  2. 只能提供有限的容错能力:无法提供异地容错能力。

共享磁盘架构:拥有多台服务器,每台拥有独立的 CPU 和内存,而数据存储在可以共享访问的磁盘阵列上。服务器与磁盘阵列往往通过高速网络连接1。这种架构适合于数据仓库等负载,但由于资源竞争以及锁开销会限制其扩展能力。

无共享架构#

无共享架构(share nothing),也称为水平扩展(scale-out)。在这种架构下,每个节点独立使用本地的 CPU、内存和磁盘资源。节点之间的所有协调通信全部建立在传统网络(以太网)之上,且核心逻辑主要依靠软件来实现。

无共享架构的优势:

  1. 不需要专门的硬件,具有较高的性价比(这其实是最大的商业优势)。
  2. 可以跨多个地理区域分发数据,降低用户的访问延迟。
  3. 提供高可用性:当整个数据中心发生灾难时还能继续工作。
  4. 降低服务门槛:使用云计算的部署方式,小公司也能轻松拥有跨区域的分布式架构和服务能力。

分布式无共享架构会给应用程序带来更多的复杂性,有时会限制实际可用的数据模型。只有充分理解了无共享架构,合理设计,也可以将其系统做得性能特别强大。

复制与分区#

数据分布机制:

  1. 复制:多个节点上保存相同的数据副本。可以提供冗余提高系统性能
  2. 分区:一个大的数据块拆分为较小的子集(分区),不同的分区分配给不同的节点(分片技术)。

在错综复杂的分布式环境中,到处都是权衡之道(trade-off)。


知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK