分布式|青训营笔记

94 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第8天

二、分布式系统的优点

可用性(容错性)一台服务器的系统崩溃并不影响到其余的服务器,仍可以正常对外提供服务。

可扩展性可以通过线性的增加机器资源,来应对不断增长的外部需求。

资源共享共享数据是必不可少的应用,如银行,预订系统。

灵活性由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。

更快的速度,多地部署,将用户请求按地理路由到最近机房处理。拥有多台计算机的计算能力,使得它比其他系统有更快的处理速度。

开放系统由于它是开放的系统,本地或者远程都可以访问到该服务。

更高的性能相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

三、分布式系统的缺点 分布式系统最大的问题是复杂性。

数据的一致性考虑到大量的机器故障:宕机、重启、关机,数据可能丢失、陈旧、出错,如何让系统容纳这些问题,对外保证数据的正确性,需要相当复杂的设计。

网络和通信故障网络的不可靠,消息可能丢失、早到、迟到、Hang住,这给机器间的协调带来了极大的复杂度。像TCP等网络基础协议,能解决部分问题,但更多的需要系统层面自己处理。更不用说,开放式网络上可能存在的消息伪造。

管理复杂度机器数量到达一定数量级时,如何对他们进行有效监控、收集日志、负载均衡,都是很大挑战。

延迟网络通信延迟要比机器内通信高出几个数量级,而组件越多、网络跳数越多,延迟便会更高,这些最终都会作用于系统对外服务质量上。

分布式存储:GFS、Ceph、HDFS、Zookeeper

分布式数据库:Spanner、TiDB、HBase、MangoDB

分布式计算:Hadoop、YARN、Spark

常见故障模型:

Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障

Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据

Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚

Omission failure:节点收到数据的时间无限晚,即收不到数据

Crash failure:节点停止响应,持续性的故障

Fail-stop failure:错误可检测,是最容易处理的故障