分布式系统
文章平均质量分 92
十一很迷茫
这个作者很懒,什么都没留下…
展开
-
分布式系统:Spark和Memcache
(4)论文中的方法:为此,引入了Gutter,如果client没有得到memcached的响应,就会请求Gutter,如果未命中,再向DB请求后,插入到Gutter中。这会使得处理读请求的速度大大加快,可以处理远超DB负载的读请求能力,但需要保证缓存层不会出错,否则会造成DB过载。(3)但对于Wide Dependencies来说,因为中间的计算结果不会保存,如果有一个work出错,如下图所示,那么所有work之前的工作也需要重新执行,这非常麻烦。可以部署多个数据库,对数据进行分片(shred)来实现。原创 2023-05-11 20:34:04 · 56 阅读 · 0 评论 -
分布式事务:Spanner和FaRM
保证数据是最新的并不可行,因为只读事务不加锁,那么如果只读事务处理时间很长的话,在这个范围内可能有多个读写事务处理完毕,那么最开始的读取(读取的是老的数据)和最后的读取(读取最新的数据)是读取不一致的,这违背了外部一致性。(猜测是heart心跳附带),只有收到读取请求要求的时刻戳的日志后,才会响应Client。可能会违背事务的隔离性(I),如果事务中止,那么其中间状态不应该被访问到。因此,FaRM使用RDMA来加速处理读请求,使用了OCC并发控制(读不需要锁,写缓存在本地,验证,冲突abort)。原创 2023-05-09 09:57:24 · 70 阅读 · 0 评论 -
分布式系统:Aurora和Frangipani
在处理事务时,首先会将对应操作记录在硬盘的log中,然后会操作内存中的页(注意只有累积一段时间的操作后才会覆盖掉硬盘中的页,而非马上覆盖),如果事务提交,会在log中添加对应标志。(1)为进一步增强容错能力,设计的系统如论文中Fig. 2和上图所示,副本只是重复主服务器的操作,主服务器需要发送修改的整个page,对应日志给副本,只有主/副本都将这些存储到EBS时,才会给客户端响应。故障恢复时,需要删掉VCL之后的log,之前的也需要删掉事务未提交的部分。但这些通常在一个数据中心,即论文中提到的AZ。原创 2023-05-05 11:16:24 · 125 阅读 · 0 评论 -
分布式:ZooKeeper和CRAQ
从上述流程可以看出,tail节点的对象版本肯定只有一个(因为tail是最后一个收到写请求的节点,到达的新版本都会被提交,然后删除旧版本),也就是说tail节点肯定处于clean状态。如果节点关于对象的版本存储只有精确的一个,那么该节点也是clean状态。(需要保证收到ack后立即删除所有之前版本,这里需要假设所有对象都有一个初始版本),否则其是dirty状态。Read-Mostly Workloads:节点大多情况下是clean状态,可以被所有节点处理,吞吐量线性增加。原创 2023-05-02 15:26:03 · 87 阅读 · 0 评论 -
分布式系统:VM-FT和Raft
假设有两个主机,客户端再与主机通信时,如果需要和两个主机同时通信阻止脑裂问题,那么就丧失了容错性。而只要求和一个主机通信即可,那么在发生网络partition错误时,就会导致不一致的问题。FT使用的共享存储是一个办法,但仍具有单点故障问题。因此,有了多数投票算法。在一个具有2∗f12*f+12∗f1的集群中,最多可以容忍fff台故障。需要注意的是,这里的多数是指相对于原来数量,而不是故障后剩余的数量。多数投票算法的核心。原创 2023-04-18 15:11:58 · 253 阅读 · 0 评论 -
分布式系统:MapReduce和GFS
(1)根据与各chunksever通信,确定哪些chunksever与master存储的版本号一致的服务器列表(此时体现出需要持久存储chunk的最新版本号的作用)。master维护整个文件系统的元数据,包括命名空间,访问控制信息,文件和chunks的映射关系,chunks的当前位置。文件被划分为固定大小的chunks,在chunk创建时分配全局唯一的64位chunk handle,标记为不可变的。文件删除时,log记录,但并没有立即回收资源,而是被重命名为一个包含删除时间戳的隐藏名称;原创 2023-04-09 16:25:31 · 365 阅读 · 0 评论