分布式系统部署的架构考量
在分布式系统的部署过程中,有两个关键方面需要重点关注:实现故障转移和负载均衡。下面将详细探讨这两个方面的相关内容。
实现故障转移
在讨论故障转移时,我们从服务层面进行分析。当故障严重到导致服务停止时,我们关注的是如何干净利落地重启整个服务。
状态问题
服务恢复的一个关键问题是状态的维护,特别是会话状态。从恢复的难易程度来看,状态越少越好。无状态服务是纯粹的过程,它可以简单地重启而无需担心状态丢失。然而,许多服务是有状态的。
状态对故障转移复杂性的影响各不相同。有些状态可能不需要恢复,例如用于读取的服务缓存可以随着时间重新构建。相反,如果会话本身不希望看起来终止,会话状态必须以一致的方式完全恢复,这就需要一个持久化机制。
系统通常会使用持久化层将会话状态的更改写入到存储中,如关系数据库。此外,一些 CORBA 实现提供加载机制,用于保存和加载对象。为了实现恢复,保存的状态必须始终保持一致,可以通过常规的事务管理方法来实现,例如使用 OTS(对象事务服务)。如果系统不能保证存储中的数据一致,就需要一种检测和处理不一致的方法,这会增加系统的复杂性,最好避免这种情况。
有状态的服务器可以维护正在进行的会话状态的缓存或日志,并且可以对该日志进行复制以提高安全性。为了实现恢复,客户端必须拥有可以映射到日志中特定状态点的代理对象 ID。这些 ID 或标记可以与对象适配器(BOA/POA)一起使用,并传递给服务器以恢复正确的状态。
需要注意的是,不仅服务可能会失败,保存其状态的持久存储也可能会失败。在分布式系统中,通常希望维护数据存储的副本,可以通过复制或重复存储的方
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



