分布式理论 - 现代架构基石 | 青训营笔记

112 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第1天 课后问题回答

分布式系统有哪些优势和挑战?

(1)资源共享。

若干不同的节点通过通信网络彼此互联,一个节点上的用户可以使用其他节点上的资源,如分布式系统允许设备共享,使众多用户共享昂贵的外部设备,如彩色打印机;允许数据共享,使众多用户访问共用的数据库;可以共享远程文件,使用远程特有的硬件设备(如高速阵列处理器),以及执行其他操作。

(2)加快计算速度。

如果一个特定的计算任务可以划分为若干个并行运行的子任务,则可把这些子任务分散到不同的节点上,使它们同时在这些节点上运行,从而加快计算速度。另外,分布式系统具有计算迁移功能,如果某个节点上的负载太重,则可把其中一些作业移到其他节点去执行,从而减轻该节点的负载。这种作业迁移称为负载平衡。

(3)可靠性高。

分布式系统具有高可靠性。如果其中某个节点失效了,则其余的节点可以继续操作,整个系统不会因为一个或少数几个节点的故障而全体崩溃。因此,分布式系统有很好的容错性能。 系统必须能够检测节点的故障,采取适当的手段,使它从故障中恢复过来。系统确定故障所在的节点后,就不再利用它来提供服务,直至其恢复正常工作。如果失效节点的功能可由其他节点完成,则系统必须保证功能转移的正确实施。当失效节点被恢复或者修复时,系统必须把它平滑地集成到系统中。

(4)通信方便、快捷。

分布式系统中各个节点通过一个通信网络互联在一起。通信网络由通信线路、调制解调器和通信处理器等组成,不同节点的用户可以方便地交换信息。在低层,系统之间利用传递消息的方式进行通信,这类似于单CPU系统中的消息机制。单CPU系统中所有高层的消息传递功能都可以在分布式系统中实现,如文件传递、登录、邮件、Web浏览和远程过程调用( Remote Procedure call,RPC)。 分布式系统实现了节点之间的远距离通信,为人与人之间的信息交流提供了很大方便不同地区的用户可以共同完成一个项目,通过传送项目文件,远程登录进入对方系统来运行程序,如发送电子邮件等,协调彼此的工作。

缺点

尽管分布式系统具备众多优势,但它也有自身的缺点,主要是可用软件不足,系统软件、编程语言、应用程序以及开发工具都相对很少。此外,还存在通信网络饱和或信息丢失和网络安全问题,方便的数据共享同时意味着机密数据容易被窃取。虽然分布式系统存在这些潜在的问题,但其优点远大于缺点,而且这些缺点也正得到克服。因此,分布式系统仍是人们研究、开发和应用的方向。

- 两将军问题为什么理论上永远达不成共识?

两将军问题非常接近于必须保证下列条件成立的二元共识问题(“攻击”或者“不攻击”): 终止(Termination)。再次发送确认消息看上去可以解决问题—将军A再让新信使发送确认消息:“我已收到您对8月4日9时攻击计划的确认”。但是,将军A的新信使也可能被俘虏。显然,无论进行多少轮确认,都无法使两位将军确保对方已同意进攻计划。两位将军总是会怀疑他们派遣的最后一位使者是否顺利穿过敌方领土。

- 为什么TCP采用三次握手?而不是两次和四次?

首先明确,客户端发送SYN包时,会自动记录seq 所以,发送多个SYN包后,客户端本地记录的是 最新的seq 第一次握手完成之后,服务器端发送SYN+ACK包 携带 seq+ack 客户端在完成第二次握手之后,会解包,拿出序列号进行对比 若果能够对应,则 客户端------->服务器连接建立(单向) 否则,则该单向连接就无法建立; 至此,第二次握手完成 第三次握手的主要目的就是告诉服务器端: 服务器端—>客户端单向连接是否建立