从 GFS 失败的架构设计来看一致性的重要性(2)

简介: 从 GFS 失败的架构设计来看一致性的重要性(2)

写流程详述


我们详细的讲一下写入流程的几个细节。


1.名字空间管理(namespace management)和锁保护(locking)


写入流程需要向主发送creat e这样请求,来操作保存在主上的名字空间。 如果有多个客户端同时进行写入操作,那么这些客户端也会同时操作向主发送creat e请求。主 在同一时间收到多个请求,通过加锁的方式,防止多个客户端同时修改同一个文件的元数据。


2.租约(Lease)


client 需要向3个副本写入数据,在并发的情况下会有多个client 同时向3个副本写入数据。GFS 需要一个规则来管理这些数据的写入。 这个规则简单来讲,每个chunk都只有一个副本来管理多个client 的并发写入。也就是说,对 于一个chunk,mast er会授予其中一个副本一个租约(lease),具有租约的副本来管理所有要写 入到这个chunk的数据写入,这个具有租约的副本称之为首要副本(primary)。其他的副本称之 为二级副本(secondary)


3.变更次序(Mutation Order)


将对文件的写入(不管是在任意位置的写入,还是在末尾追加)称之为变更(Mut at ion)。 Primary管理所有client 的并发请求,让所有的请求按照一定顺序(Order)应用到chunk上。


微信图片_20220123182140.jpg


4.基本变更流程

1).client 询问mast er哪个chunkserver持有这个chunk的lease,以及其他的副本的位置。如果 没有副本持有lease,mast er挑选一个副本,通知这副本它持有lease。


2).mast er回复client ,告述客户端首要副本的位置,和二级副本的位置。客户端联系首要副 本,如果首要副本无响应或者回复客户端它不是首要副本,则客户端重新联系主。


3).客户端向所有的副本推送数据。客户端可以以任意的顺序推送。每个chunkserver会缓存这 些数据在缓冲区中。


4).当所有的副本都回复说已经收到数据后,客户端发送一个写入请求(write request)给首 要副本,这个请求里标识着之前写入的数据。首要副本收到请求后,会给写入分配一个连续的 编号,首要副本会按照这个编号的顺序,将数据写入到本地磁盘。


5).首要副本将这个带有编号写入请求转发给其他二级副本,二级副本也会按照编号的顺序, 将数据写入本地,并且回复首要副本数据写入成功。


6).当首要副本收到所有二级副本的回复时,说明这次写入操作成功。


7).首要副本回复客户端写入成功。在任意一个副本上遇到的任意错误,都会报告给客户端失败。


前面讲的writ e接口就是按照这个基本流程进行的。 下图描述了这个基本过程。(摘自GFS的论文)


微信图片_20220123182203.jpg


5.跨边界变更

如果一次写入的数据量跨过了一个块的边界,那么客户端会把这次写入分解成向多个chunk的 多个写入。


微信图片_20220123182222.jpg




目录
打赏
0
0
0
0
367
分享
相关文章
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
70 4
软件架构一致性问题之多轮对话场景中出现模型的First Token Time(FTT)变长如何解决
软件架构一致性问题之多轮对话场景中出现模型的First Token Time(FTT)变长如何解决
65 2
软件架构一致性问题之Serverless架构处理架构一致性问题如何解决
软件架构一致性问题之Serverless架构处理架构一致性问题如何解决
71 2
软件架构一致性问题之分析代码修改的 Scalability如何解决
软件架构一致性问题之分析代码修改的 Scalability如何解决
78 1
|
7月前
|
软件架构一致性问题之通过减少修改次数降低软件供应链管理的成本如何解决
软件架构一致性问题之通过减少修改次数降低软件供应链管理的成本如何解决
67 0
软件架构一致性问题之通过软件供应链管理提升研发体验如何解决
软件架构一致性问题之通过软件供应链管理提升研发体验如何解决
67 0
软件架构一致性问题之研发新产品创造价值如何解决
软件架构一致性问题之研发新产品创造价值如何解决
48 0
高并发架构设计三大利器:缓存、限流和降级问题之在数据库层面确保缓存一致性问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之在数据库层面确保缓存一致性问题如何解决
【专栏】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战
【4月更文挑战第29天】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战。它支持混合负载,适用于金融、电商和物联网等领域,提供高性能、低成本的解决方案。尽管面临技术复杂性、数据迁移和性能优化等问题,通过合理策略可克服挑战。随着技术发展,OceanBase 在数字化时代将持续发挥关键作用。
312 1
软件架构一致性 —— 被忽视的研发成本
本文主要介绍了一些解决架构一致性问题的方法,以及我们应该如何去理解和应对部分不得不付出的成本。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等