分布式系统之异常

异常的概念

分布式系统的一台服务器或者服务器上运行的一个进程称为一个节点,节点和节点之间通过互联网互联,然而服务器节点是不可靠的,节点和节点之间也是不可靠的,所以在系统运行过程中出现异常。

异常类型

1)服务器宕机

引起服务器宕机的原因可能是内存错误,资源耗尽,服务器停电等,当服务器宕机时,节点会失去所有的内存信息,所以应该考虑如何通过读取持久化的介质,如机械键盘,固态硬盘等来恢复内存信息,使其恢复到宕机前某个一致的状态。

2)网络异常

引起网络异常的原因可能是消息丢失,消息乱序或者网络包数据错误。
还有一些特殊的网络异常称为“网络分区”,集群划分为多个网络分区,网络分区之间无法通信,而每个网络分区内部可以通信的情况。

3)磁盘故障

磁盘故障是一种发生概率很高的异常,磁盘故障分为两种情况:磁盘损坏和磁盘数据错误。
磁盘损坏:丢失了磁盘上的所有数据,因此,需要考虑将数据部署到多台服务器,即使其中一台服务器发生磁盘错误,也可以从其他的服务器中恢复。
磁盘错误恢复:可以采用校验和机制来解决,可以选择在操作系统层面实现,也可以在上层的分布式系统层面实现。

分布式系统的三态

由于网络异常的存在,分布式系统中请求结果存在“三态”的概念。
在分布式系统中,如果某个节点向另一个节点发起 RPC(Remote procedure call)调用,即某个节点 A 向另一个节点 B 发送一个消息,节点 B 根据收到的消息内容完成某些操作,并将操作的结果通过另一个消息返回给节点 A,那么这个 RPC 执行的结果有三种状态:“成功”、“失败”、“超时(未知)”,称之为分布式系统的三态。

如果请求 RPC 的节点 A 收到了执行 RPC 的节点 B 返回的消息,并且消息中说明执行成功,则该 RPC 的结果为“成功”。
如果请求 RPC 的节点 A 收到了执行 RPC 的节点 B 返回的消息,并且消息中说明执行失败,则该 RPC 的结果为“失败”。
但是,如果请求 RPC 的节点 A 在给定的时间内没有收到执行 RPC 的节点 B 返回的消息,则认为该操作“超时”。原因可能是服务器宕机,网络异常,磁盘故障等

猜你喜欢

转载自blog.csdn.net/qq_33394088/article/details/80090713