初遇分布式系统(一)

点击量:66

简述

前期博文主要是针对一些分布式系统资料的学习笔记.

《Distributed systems theory for the distributed systems engineer》中提到的《好玩又实在的分布式系统理论》是一本精悍的书籍,主要针对分布式系统中的基本问题,如时序与复制策略等方面.

首先需要说明关于分布式中的一些认知误区:

  • 网络是可靠的
  • 延迟为零
  • 带宽无限
  • 网络非常安全
  • 网络拓扑不会改变
  • 只有一个管理者
  • 传输开销为零
  • 网络同构(使用相同的配置和协议)

以上所述均为人生错觉

这本书中,作者提出了自己对于分布式中所要解决的两个终极问题

  1. 信息以光速传输(时序问题)
  2. 错误之间相互独立(容错问题)

分布式系统主要为了完成两个任务
1. 存储
2. 计算

关于为了到达更好的计算能力,最直接的办法就是上更好的机器(纵向扩展),但是在增加到一定程度后会面临无法在单机到达可接受效率的问题.

同时,关于分布式系统中的机器选择.在假设均匀访存模型(Uniform memory architecture)(处理器访问所有内存存储器的时间是一样的),随着集群中机器数量的增加,高端机器和普通机器的性能墙逐渐接近.其原因主要在于机器间的数据复制开销和计算的协调开销.

目标

可扩展性

Everything starts with size – scalability

需要重点关注的三个方面(扩展性):

  • 规模扩展性:增加更多节点使得系统线性增长(不增长延迟)
  • 地理伸缩性:可以使用多个异地的数据中心以解决用户访问(不增长延迟)
  • 管理的伸缩性:增加更多节点不应该增加系统的管理开销

都是需要在保证一定延迟和开销下的扩展.

性能及延迟

性能通过系统完成一定工作所使用的时间和资源来衡量.依据所需,应该达到以下的一点或多点:

  1. 低延迟
  2. 高吞吐量
  3. 低资源使用率

这几者之间需要进行权衡,如为了达到更高的吞吐量,可以使用批处理的手段,但是在这种情况下,延迟就会相应地延长.

另外,延迟指的是操作发生至真正产生影响的时间.这一定义,主要解决问题:如果你发起一个计算所有数据的操作,但是同时有数据新增入系统,如果计算的速度和写入速度一样的话,….,延迟就是无限大.

可用性

如果一个用户无法访问系统,则表示该系统不可用.通常分布式系统相较于单机系统有更高的可用性,因为其具有更好的容错性.

Availability = uptime / (uptime + downtime)

What prevents us from achieving good things

作者在这里提出了两个限制分布式系统的物理因素.

  • 分布式系统节点的数量
  • 节点间的距离

由此带来的:

  • 降低可用性和提升了管理开销
  • 随着规模增大降低了性能(通信开销)
  • 异地的数据中心增加了延迟,降低性能

关于分布式系统的评价标准则是依据SLA(service level agreement)(服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约),另外一个没有被经常提及的则是:理解度

Abstractions and models

抽象能够将将现实中于问题无关的因素移除,帮助理解把握整个问题,模型则是能够精确地描述分布式系统中的关键部分.例如,本书后面将会提到的一些模型的例子:

  • 系统模型(异步/同步)
  • 失败模型(拜占庭问题、分区问题)
  • 一致性模型(强一致、最终一致)

设计技巧:分区+冗余

分区

数据分区后减少数据量能够并行处理提高性能,保证了数据片间相互独立

复制

复制得到的冗余数据能够提升系统容错性,同时降低延迟,但是也带来了数据的一致性问题.

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注