【分布式】Chubby与Paxos
|
其是为了减少客户端与服务端之间的频繁的读请求对服务端的压力设计的,会在客户端对文件内容和元数据信息进行缓存,虽然缓存提高了系统的整体性能,但是其也带来了一定复杂性,如如何保证缓存的一致性。其通过租期机制来保证缓存的一致性。 缓存的生命周期和Master租期机制紧密相关,Master会维护每个客户端的数据缓存情况,并通过向客户端发送过期信息的方式来保证客户端数据的一致性,在此机制下,Chubby能够保证客户端要么能够从缓存中访问到一致的数据,要么访问出错,而一定不会访问到不一致的数据。具体的讲,每个客户端的缓存都有一个租期,一旦该租期到期,客户端就需要向服务端续订租期以继续维持缓存的有效性,当文件数据或元数据被修改时,Chubby服务端首先会阻塞该修改操作,然后由Master向所有可能缓存了该数据的客户端发送缓存过期信号,使其缓存失效,等到Master在接收到所有相关客户端针对该过期信号的应答(客户端明确要求更新缓存或客户端允许缓存租期过期)后,再进行之前的修改操作。 2.7 会话 Chubby客户端和服务端之间通过创建一个TCP连接来进行所有的网络通信操作,这称之为会话,会话存在生命周期,存在超时时间,在超时时间内,客户端和服务端之间可以通过心跳检测来保持会话的活性,以使会话周期得到延续,这个过程称为KeepAlive(会话激活),如果能够成功地通过KeepAlive过程将Chubby会话一直延续下去,那么客户端创建的句柄、锁、缓存数据等将仍然有效。 2.8 KeepAlive请求 Master服务端在收到客户端的KeepAlive请求时,首先会将该请求阻塞住,并等到该客户端的当前会话租期即将过期时,才为其续租该客户端的会话租期,之后再向客户端响应这个KeepAlive请求,并同时将最新的会话租期超时时间反馈给客户端,在正常情况下,每个客户端总是会有一个KeepAlive请求阻塞在Master服务器上。 2.9 会话超时 客户端也会维持一个和Master端近似相同(由于KeepAlive响应在网络传输过程中会花费一定的时间、Master服务端和客户端存在时钟不一致的现象)的会话租期。客户端在运行过程中,按照本地的会话租期超时时间,检测到其会话租期已经过期却尚未收到Master的KeepAlive响应,此时,它将无法确定Master服务端是否已经中止了当前会话,这个时候客户端处于危险状态,此时,客户端会清空其本地缓存并将其标记为不可用,同时客户端还会等待一个被称作宽限期的时间周期,默认为45秒,若在宽限期到期前,客户端与服务端之间成功地进行了KeepAlive,那么客户端就会再次开启本地缓存,否则,客户端就会认为当前会话已经过期了,从而终止本次会话。 (编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

