`
spxsjd
  • 浏览: 16488 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

分布式系统基础知识

阅读更多

1、常见指标

Send 1M bytes over 1Gbps network(基于千兆网传输1M数据):10ms

Round trip within data center(同数据中心请求读取):0.5ms

Disk seek(磁盘寻道时间):8~10ms

Read 1MB sequentially from disk(从磁盘顺序读取1M数据):20~25ms

Read 1M sequentially from memory(从内存顺序读取1M数据,速率为:40~50M): 0.25ms

 

2、性能估算

需要假设程序的执行环境,如集群规模及机器配置,集群上其它服务占用资源的比例。

常见估算场景:

1)、内存排序时间估算:排序时间 = 比较时间(分支预测错误) + 内存访问时间。

2)、MapReduce应用处理时间:Map处理时间 + shuffle和排序时间 + reduce处理时间(虽然shuffle、map处理和排序可以部分并行,但性能估算的时候不必考虑);Map处理时间 = 输入读取时间 + Map函数处理时间 + 输出中间结果时间;Reduce处理时间 = reduce函数处理时间 + 最终结果输出时间

3)、Bigtable设计的性能指标分析:单个磁盘读取时间:磁盘寻道时间 + 读取时间;可达到的理论值:n个盘*1/单个磁盘读取时间

 

3、CAP

一致性(Consistency):任何一个读操作总是能读取到之前完成的写操作结果;

可用性(Availability):每一个操作总是能够在确定的时间内返回;

分区可容忍性(Tolerance of network Partition):在出现网络分区的情况下,仍然能够满足一致性和可用性;

CAP理论认为,三者不能同时满足,证明如下:假设系统出现网络分区为G1和G2两个部分,在一个写操作W1后面有一个读操作R2,W1写G1,R2读取G2,由于G1和 G2不能通信,如果读操作R2可以终结的话,必定不能读取写操作W1的操作结果。

 

4、一致性模型

1)强一致性

2)弱一致性:存在“不一致性窗口”,不能保证后续读取操作能读取到最新值。

3)最终一致性:,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数。

 

5、NOSQL与SQL

常见模型:

KV模型:只支持最简单的针对<key, value>对的操作;

支持简单table schema的模型,如Bigtable模型

 

NOSQL有一些共同的设计原则:

假设失效是必然发生的

限定应用模式,支持的接口永远不可能和SQL相比

扩容支持成倍增加,常用算法:一致性Hash

 

6、Two-Phase commit

说明参考:http://www.nosqlnotes.net/archives/62#more-62

Two-phase commit的算法实现 (from <<Distributed System: Principles and Paradigms>>):
协调者(Coordinator):
write START_2PC to local log;
multicast VOTE_REQUEST to all participants;
while not all votes have been collected {
wait for any incoming vote;
if timeout {
write GLOBAL_ABORT to local log;
multicast GLOBAL_ABORT to all participants;
exit;
}
record vote;
}
if all participants sent VOTE_COMMIT and coordinator votes COMMIT {
write GLOBAL_COMMIT to local log;
multicast GLOBAL_COMMIT to all participants;

} else {
write GLOBAL_ABORT to local log;
multicast GLOBAL_ABORT to all participants;
}
参与者(Participants)
write INIT to local log;
wait for VOTE_REQUEST from coordinator;
if timeout {
write VOTE_ABORT to local log;
exit;
}
if participant votes COMMIT {
write VOTE_COMMIT to local log;
send VOTE_COMMIT to coordinator;
wait for DECISION from coordinator;
if timeout {
multicast DECISION_REQUEST to other participants;
wait until DECISION is received; /* remain blocked*/
write DECISION to local log;
}
if DECISION == GLOBAL_COMMIT
write GLOBAL_COMMIT to local log;
else ifDECISION == GLOBAL_ABORT
write GLOBAL_ABORT to local log;
} else {
write VOTE_ABORT to local log;
send VOTE_ABORT to coordinator;
}

另外,每个参与者维护一个线程专门处理其它参与者的DECISION_REQUEST请求,处理线程流程如下:
while true {
wait until any incoming DECISION_REQUEST is received;
read most recently recorded STATE from the local log;
if STATE == GLOBAL_COMMIT
send GLOBAL_COMMIT to requesting participant;
else if STATE == INIT or STATE == GLOBAL_ABORT;
send GLOBAL_ABORT to requesting participant;
else
skip; /* participant remains blocked */
}

 

如果协调者出现类似磁盘坏这种永久性错误,该事务将成为被永久遗弃的孤儿。一种可行的解决方法是当前的协调者宕机的时候有其它的备用协调者接替,用于同一时刻只能允许一个协调者存在,二者之间有一个选举的过程,这里需要用到Paxos协议。

 

7、Paxos

Paxos选举过程如下:
 Phase 1
(a) A proposer selects a proposal number n and sends a prepare request with number n to a majority of acceptors.
(b) If an acceptor receives a prepare request with number n greater than that of any prepare request to which it has already responded, then it responds to the request with a promise not to accept any more proposals numbered less than n and with the highest-numbered proposal (if any) that it has accepted.
 Phase 2
(a) If the proposer receives a response to its prepare requests (numbered n) from a majority of acceptors, then it sends an accept request to each of those acceptors for a proposal numbered n

with a value v, where v is the value of the highest-numbered proposal among the responses, or is any value if the responses reported no proposals.
(b) If an acceptor receives an accept request for a proposal numbered n, it accepts the proposal unless it has already responded to a prepare request having a number greater than n.

 

分享到:
评论

相关推荐

    分布式系统小书

    通过以上总结可以看出,《分布式系统小书》不仅是一本理论丰富的教材,也是一份实践指南,适合希望深入了解分布式系统基础知识的学习者。书中涵盖了许多关键概念和技术,可以帮助读者建立起坚实的分布式系统设计和...

    分布式系统设计PDF

    分布式系统设计是现代...这份PDF将帮助学习者构建扎实的分布式系统基础知识,理解其背后的原理,并为实际开发提供指导。无论是想要提升职业能力,还是解决现有项目中的问题,这份资源都是值得深入研究的宝贵资料。

    分布式系统概念与设计英文第五版

    总之,《分布式系统:概念与设计》第五版是一本全面介绍分布式系统基础知识和技术细节的经典著作,适合IT专业人士、研究人员以及学生阅读。通过对本书的学习,读者不仅能掌握分布式系统的基本原理和技术,还能深入...

    分布式系统原理介绍 - 刘杰 - 百度.pdf

    分布式系统理论体系非常庞大,涉及知识面也非常广博,本文精心选择了部分在工程实践中应用广泛、简单有效的分布式理论、算法、协议加以介绍。全文分为两大部分,第一部分介绍了分布式系统的一些基本概念并框定了本文...

    《分布式系统常用技术及案例分析》PDF

    第一部分主要介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知识点以及可能会面临的问题,其中包括线程、通信、一致性、容错性、CAP 理论、安全性和并发等相关内容;同时讲述分布式系统的...

    jmeter第6章 高级篇之分布式压测基础知识

    本章“jmeter第6章 高级篇之分布式压测基础知识”将深入探讨如何利用JMeter进行分布式压力测试,以模拟大规模并发用户对系统进行负载和压力测试。 分布式测试是一种测试策略,通过在网络中的多台机器上运行测试,以...

    分布式系统 - 对分布式系统概念和基础知识的介绍

    分布式系统是一种由多台计算机和硬件设备通过网络相互连接,协同工作以实现共同目标的系统。这个系统中的各个组件能够独立地运行和处理任务,并且能够通过中间件进行通信和数据交换,从而达到高可用性、可扩展性和...

    东北大学_研究生_期末考试之分布式系统及应用

    1. **分布式系统基础**:分布式系统是由多个独立的计算机节点通过网络连接,共同协作完成任务的系统。这些节点之间通过通信协议进行交互,共享数据和计算资源。理解分布式系统的基石,如CAP理论(一致性、可用性和...

    微服务分布式系统架构之zookeeper与dubbo.pdf

    在互联网架构演进和分布式系统基础知识部分,课程讲解了从单机应用到分布式架构的演进过程,以及微服务的优缺点和适用场景。微服务通过服务切分来提高系统的可维护性和灵活性,但同时也带来了分布式事务等新的问题。...

    分布式系统设计 分布式系统设计

    1. **分布式系统基础**:分布式系统由多个独立的组件构成,它们之间通过网络进行通信。这些组件可以是服务器、数据库、缓存或其他服务。设计的目标是提供透明性,即用户感觉系统是一个整体,而不是多个部分。 2. **...

    主流分布式系统相关知识和区别

    总的来说,分布式系统是现代IT基础设施的关键组件,理解和掌握其基本原理和主流技术对于个人职业发展至关重要。随着技术的不断发展,新的分布式系统和框架将持续涌现,持续学习和适应新技术是保持竞争力的关键。

    分布式系统原理与范型答案(第二版)答案

    5. **分布式事务**:在分布式系统中,事务处理需要考虑到多个节点间的协调,ACID(原子性、一致性、隔离性、持久性)属性是保证事务正确性的基础。 6. **负载均衡**:为了优化资源使用和提高性能,分布式系统通常...

    微服务分布式系统架构之zookeeper与dubbo1

    【微服务分布式系统架构之zookeeper与dubbo1】课程主要涵盖了微服务架构中的关键组件Zookeeper和Dubbo,以及相关的分布式系统基础知识。本课程旨在帮助开发者理解和掌握微服务架构的核心概念,通过实际操作和案例...

    分布式系统原理与范型.pdf

    综上所述,分布式系统原理与范型这本著作深入地介绍了分布式系统的基础知识、基本原理以及设计范例,旨在帮助读者全面理解和掌握分布式系统的理论和技术。通过学习和研究这些内容,读者将能够更好地设计和实现高效、...

    分布式系统常用技术及案例分析.pdf

    第一部分主要介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知识点以及可能会面临的问题,其中包括线程、通信、一致性、容错性、CAP 理论、安全性和并发等相关内容;同时讲述分布式系统的...

    分布式系统 概念与设计 习题答案(完整版).

    这份习题答案详细解析了上述知识点,可以帮助学习者深入理解分布式系统的设计与实现,巩固理论知识,提升解决实际问题的能力。通过解答这些习题,你将能够更好地应对分布式系统中的挑战,并为未来的工作或研究奠定...

    分布式系统原理介绍

    分布式系统理论体系非常庞大,涉及知识面也非常广博,由于笔者的肤浅,本文精心选择了部 分在工程实践中应用广泛、简单有效的分布式理论、算法、协议加以介绍。全文分为两大部分,第 一部分介绍了分布式系统的一些...

    大规模分布式系统架构与设计实战

     《大规模分布式存储系统:原理解析与架构实战》内容分为四个部分:基础篇--分布式存储系统的基础知识,包含单机存储系统的知识,如数据模型、事务与并发控制、故障恢复、存储引擎、压缩/解压缩等;分布式系统的...

    电子科技大学分布式系统研究生期末考试

    ### 分布式系统知识点梳理 #### 一、分布式系统概览 **1.1 分布式系统的目标** - **资源共享**:分布式系统的核心目标之一是资源共享,包括硬件资源(如处理器、存储器)、软件资源(应用程序和服务)、数据资源...

Global site tag (gtag.js) - Google Analytics