Kratos

A responsible theme for WordPress

分布式系统入门

一、什么是分布式系统?

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅是通过消息传递进行通信和协调的系统。
首先分布式系统一定是由多个节点组成的系统,一般来说一个节点就是我们的一台计算机;然后这些节点不是孤立的,而是相互连通的;最后,这些连通的节点上部署了我们的组件,并且互相之间的操作会有协同。

二、为什么需要分布式系统?

  1. 升级单机处理能力的性价比越来越低。
    • 大型主机的人才培养成本非常之高,大型主机操作非常复杂,对运维人员的要求非常高。
    • 大型主机非常昂贵。通常一台配置比较好的IBM大型主机,其售价在上百万美元甚至更高。
    • 根据摩尔定律,在一个确定的时间点,通过更换硬件做垂直拓展的方式来提升性能会越来越不划算。
  2. 单机处理能力存在瓶颈。
    • 在某个固定的时间点,单颗处理器有自己的性能瓶颈,也就是说即使你愿意话更多的钱去买计算能力也买不到了。
  3. 出于稳定性和可用性的考虑。
    • 集中式的系统具有明显的单点问题。大型主机虽然在性能和稳定性方面表现卓越,但是一旦出现了故障,那么整个系统都将处于不可用状态,其后果相当严重。

三、分布式系统基础知识

《分布式系统入门》

四、分布式系统中有哪些难点?

  1. 缺乏全局时钟:分布式系统是由多个节点组成,通过多个进程之间的交换消息来进行通信。由于每个节点都拥有自己单独的时钟,没有一个全局的时钟,所以很难定义两个事件的先后顺序。对于这种情况,我们可以把这个工作交给一个单独的集群来完成,通过这个集群来区分多个动作的顺序。
  2. 面对故障独立性:在分布式系统中,整个系统的一部分有问题而其他部分正常是经常发生的情况,我们称之为故障独立性。一个被大量工程实践所检验过的黄金定理是:任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生。并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。
  3. 处理单点故障
    在分布式系统中,如果某个角色或者功能只有某台单机在支撑,那么这个节点称为单点,其发生的故障称为单点故障,也就是常说的SPoF(Single Point of Failure)。要尽量把每个单点都变为集群实现,如果不能变为集群实现,一般还有两种选择:

    • 给这个单点做好备份,能够在出现问题时进行恢复,并且尽量做到自动恢复,降低恢复需要用的时间。
    • 降低单点故障的影响范围。如在一个交易网站中,所有的交易数据放在一个数据库中,这就形成了单点。我们可以考虑拆分数据,将原来的一个数据库拆分为两个(根据一定规则做Sharding),那么,在一个数据库出现问题时,影响的就不会是全部范围了。
  4. 事务和数据一致性的挑战
    在数据库理论中我们都了解过ACID,但是在分布式数据库中,数据分散在各台不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑战。
点赞
  1. wangdong说道:

    nihao

  2. Buddh说道:

    Good day! That is nice present - A pleasant surprise of $/€ 1600 welcome bonus. Just click on the link below to qualify. http://bit.ly/2yqEcFW

发表评论

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