分布式系统的特点及问题
分布式的特点
在《分布式系统概念与设计》注’一书中,对分布式系统做了如下定义:
- 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
上面这个简单的定义涵盖了几乎所有有效地部署了网络化计算机的系统。严格地讲,同 一个分布式系统中的计算机在空间部署上是可以随意分布的,这些计算机可能被放在不同的机柜上,也可能在不同的机房中,甚至分布在不同的城市。无论如何,一个标准的 分布式系统在没有任何特定业务逻辑约束的情况下,都会有如下几个特征。
分布性
分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随 时变动。
对等性
分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。副本 (Replica) 是分布 式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。 在常见的分布式系统中,为了对外提供高可用的服务,我们往往会对数据和服务进 行副本处理。数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存 储的数据丢失时,可以从副本上读取到该数据,这是解决分布式系统数据丢失问题 最为有效的手段。另一类副本是服务副本,指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。
并发性
在“问题的提出”部分,我们已经提到过与“更新的并发性”相关的内容。在一个 计算机网络中,程序运行过程中的并发性操作是非常常见的行为,例如同一个分布 式系统中的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存 储等,如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最 大的挑战之一。
缺乏全局时钟
在上面的讲解中,我们已经了解到,一个典型的分布式系统是由一系列在空间上随 意分布的多个进程组成的,具有明显的分布性,这些进程之间通过交换消息来进行 相互通信。因此,在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是因 为分布式系统缺乏一个全局的时钟序列控制。关于分布式系统的时钟和事件顺序, 在 Leslie Lamport ffi2 的经典论文 Time, Clocks, and theOrdering of Events in a Distributed System "'中已经做了非常深刻的讲解。
故障总是会发生
组成分布式系统的所有计算机,都有可能发生任何形式的故障。一个被大量工程实 践所检验过的黄金定理是:任何在设计阶段考虑到的异常情况,一定会在系统实际 运行中发生,并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异 常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。
分布式环境的各种问题
分布式系统体系结构从其出现之初就伴随着诸多的难题和挑战,本节将向读者简要的介 绍分布式环境中一些典型的问题。
通信异常
从集中式向分布式演变的过程中,必然引入了网络因素,而由于网络本身的不可靠性, 因此也引入了额外的
问题。分布式系统需要在各个节点之间进行网络通信,因此每次网 络通信都会伴随着网络不可用的风险,网
络光纤、路由器或是 DNS 等硬件设备或是系 统不可用都会导致最终分布式系统无法顺利完成一次网络通信。
另外,即使分布式系统 各节点之间的网络通信能够正常进行,其延时也会远大于单机操作。通常我们认为在
现 代计算机体系结构中,单机内存访问的延时在纳秒数量级(通常是 10ns 左右),而正常 的一次网络通信
的延迟在 0.1~lms 左右(相当于内存访问延时的 105~106 倍),如此巨 大的延时差别,也会影响消息的收发
的过程,因此消息丢失和消息延迟变得非常普遍。
网络分区
当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终 导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节 点则不能——我们将这个现象称为网络分区,就是俗称的“脑裂”。当网络分区出现时, 分布式系统会出现局部小集群,在极端情况下,这些局部小集群会独立完成原本需要整 个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。
三态
从上面的介绍中,我们已经了解到了在分布式环境下,网络可能会出现各式各样的问题, 因此分布式系统的每一次请求与响应,存在特有的"三态”概念,即成功、失败与超时。
在传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的响应: 成功或失败。而在分布式系统中,由于网络是不可靠的,虽然在绝大部分情况下,网络 通信也能够接收到成功或失败的响应,但是当网络出现异常的情况下,就可能会出现超 时现象,通常有以下两种情况:
- 由于网络原因,该请求(消息)并没有被成功地发送到接收方,而是在发送过程 就发生了消息丢失现象。
该请求(消息)成功的被接收方接收后,并进行了处理,但是在将响应反馈给发 送方的过程中,发生了消息丢失现象。
当出现这样的超时现象时,网络通信的发起方是无法确定当前请求是否被成功处理的。
节点故障
节点故障则是分布式环境下另一个比较常见的问题,指的是组成分布式系统的服务器节 点出现的宕机或“僵死”现象。通常根据经验来说,每个节点都有可能会出现故障,并且每天都在发生。
分布式系统的特点及问题相关推荐
- 分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论
文章目录 1. 一致性 概览 1.1 分布式系统的 "正确性" 1.2 线性一致性(Linearizability) 1.3 顺序一致性(Sequential consistenc ...
- 《异步处理在分布式系统中的优化作用》学习笔记
原文地址:http://www.infoq.com/cn/presentations/optimization-of-asynchronous-processing-in-distributed-sy ...
- Travis CI : 最小的分布式系统(三)
日志的作用有两个:当构建日志的数据块通过消息队列进来时,更新数据库对应行,然后推送它到Pusher用于实时的用户界面更新. 日志块以流的形式在同一个时间从不同的进程中进来,然后被一个进程处理.这个进程 ...
- Travis CI : 最小的分布式系统(一)
(本文翻译自http://www.paperplanes.de/2013/10/18/the-smallest-distributed-system.html,由@金斌_jinbin 翻译) Trav ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
- 如何选择分布式系统(区块链)协议?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何选择分布式系统(区块链)协议? 在构建包分布式系统功能的应用程序时,<财富>500强企业和创始人经常问我 ...
- 分布式系统的时间顺序
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯.物理位置等的问题,各节点间时间一致的问题 ...
- 分布式系统中节点之间的同步形成区块链
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 分布式系统中节点之间的同步形成区块链 分布式系统由Tanenbaum定义,"分布式系统是一组独立的计算 ...
- 工作中感受到的消息中间件在分布式系统中的使用场景
经历 以前在qunar实习,第一次接触消息中间件,那时候概念还不清楚,朦朦胧胧有个初步认识,现在正式工作了,又一次接触了消息中间件,初步总结几种场景. 场景 1.分布式系统中,不同系统之间传递消息. ...
- 美团即时物流的分布式系统架构设计
背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验.最主要的收获包括两点: 即时物流业务对故障和高延迟的容忍度极低 ...
最新文章
- SqlServer 行转列
- 深度好文:Netflix奈飞微服务架构设计解析
- leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)
- [笔记]极大极小过程的alpha-beta剪枝不可与记忆化搜索一起使用
- 区块链技术指南之分布式的一致性
- 半正定矩阵和正定矩阵的一些理解和补充
- python字符串格式化是什么意思_python字符串格式化什么意思
- 集成学习之随机森林案例专题【Python机器学习系列(十七)】
- dubbo工程结构分析
- 1813 句子相似性 III
- 北京大学医疗科技风论文答辩PPT模板
- 鸟哥的私房菜 笔记备份
- 普通用户使用su无法切到root用户的解决方法
- 游戏计算机的显示器,电竞显示器一般多大尺寸?玩游戏电脑显示器多大合适?...
- python读取图片文字-Python3实现获取图片文字里中文的方法分析
- set在MATLAB中什么意思,matlab中set函数怎么用,具体的,中文的?
- [转]深入浅出WPF(7)——数据的绿色通道,Binding
- 中国蔬菜种子行业竞争动态与营销趋势预测报告2022-2027年
- IDEA警告: Redundant character escape xxx in RegExp
- 探讨降低城市污水厂电气能耗的对策研究