分布式系统
文章平均质量分 95
unique_pursuit
但行好事,莫问前程!
展开
-
【MIT 6.5840(6.824)学习笔记】GFS
根据GFS论文的描述,客户端会选择一个在网络上最近的服务器(在Google的数据中心中,通过IP地址的差异可以判断网络位置的远近),然后将读请求发送到这个服务器。然后,如果它读取的记录与之前的记录具有相同的 ID,它就知道它们是彼此的重复项。如果服务器1(S1)先处理C1的请求,那么在它的表单里面,X先是1,之后S1看到了来自C2的请求,会将自己表单中的X覆盖成2。但是,如果S2恰好以不同的顺序收到客户端请求,那么S2会先执行C2的请求,将X设置为2,之后收到C1的请求,将X设置为1。原创 2024-05-28 16:21:34 · 902 阅读 · 0 评论 -
【论文阅读笔记】The Google File System
Google File System (GFS) 是一个可扩展的分布式文件系统,专为快速增长的Google数据处理需求而设计。这篇论文发表于2003年,此前已在Google内部大规模应用。GFS不仅追求性能、可伸缩性、可靠性和可用性等传统分布式文件系统的设计目标,还基于对自身应用负载情况和技术环境的深入观察,提出了独特的设计思路,与早期文件系统的假设明显不同。GFS 在设计的时候有一些假想,即预期要实现的目标。系统由许多廉价的普通组件组成,因此组件失效是一种常态。原创 2024-05-28 16:19:20 · 945 阅读 · 0 评论 -
【MIT 6.5840(6.824)学习笔记】测试分布式系统的线性一致性
类似的,我们可以画出 client 1,2 和 4 的,那么 client 2 的操作一定会在 4 的操作开始的后面,但这样我们就不能处理 client 3,它只可能合法的返回。但不幸的是,在测试一些分布式 key-value store 的时候,Knossos 并不能很好的工作,它可能只能适用于一些少的并发 clients,以及只有几百的事件的历史。上面的代码比较简单,但包含了足够的信息,包括初始状态是怎样的,内部状态是如何被操作的结果改变的,从 key-value存储里面操作返回的结果是怎样的。翻译 2024-05-22 09:31:46 · 16 阅读 · 0 评论 -
MIT 6.5840(6.824) Lab2:Key/Value Server 设计实现
对于并发的请求来说,返回的结果和最终状态都必须和这些操作顺序执行的结果一致。例如,如果一个客户端发起一个更新请求并从服务器获取了响应,随后从其他客户端发起的读操作可以保证能看到改更新的结果。如果存在,则表明该请求已经处理过,服务器可以跳过重复的处理,直接返回之前处理过的值。在本次 Lab 中,你将在单机上构建一个键/值服务器,以确保即使网络出现故障,每个操作也只能执行一次,并且操作是可线性化的。当然,还需要考虑一个问题,就是服务器会不断积压处理过的请求ID信息,所以我们需要快速释放服务器内存。原创 2024-05-15 13:04:48 · 378 阅读 · 0 评论 -
【MIT 6.5840(6.824)学习笔记】使用Go进行线程和RPC编程
远程过程调用(RPC)是分布式系统中的关键技术之一,它使得客户端和服务器之间的通信变得简单而直观。在分布式系统中,不同的节点可能分布在不同的物理机器上,RPC允许这些节点之间进行远程通信,就像调用本地函数一样,无需了解底层的网络协议细节。RPC的目标是实现易于编程的客户端/服务器通信,它隐藏了底层网络通信的复杂性,为开发人员提供了简单的接口。通过RPC,开发人员可以专注于业务逻辑的实现,而无需担心网络通信的细节。原创 2024-05-15 10:01:52 · 710 阅读 · 0 评论 -
MIT 6.5840(6.824) Lab1:MapReduce 设计实现
本次实验是实现一个简易版本的MapReduce,你需要实现一个工作程序(worker process)和一个调度程序(coordinator process)。工作程序用来调用Map和Reduce函数,并处理文件的读取和写入。调度程序用来协调工作任务并处理失败的任务。你将构建出跟MapReduce论文里描述的类似的东西。(注意:本实验中用"coordinator"替代里论文中的"master"。阅读MapReduce论文阅读lab文档理解MapReduce框架理解原框架代码,理清所需完成任务。原创 2024-05-14 19:56:00 · 725 阅读 · 0 评论 -
【MIT 6.5840(6.824)学习笔记】分布式系统介绍
举例来说,如果一台计算机能够解决一定量的问题,那么增加第二台计算机后,系统能够以更快的速度解决相同数量的问题,或者在相同时间内处理更多的问题。这样,不同的用户可以访问不同的Web服务器,但它们需要访问相同的数据,因此所有的Web服务器都需要与后端数据库通信。因此,为了尽可能减少通信,特别是当副本相距很远时,人们会构建弱一致性系统,只需要更新最近的数据副本,并且只需要从最近的副本获取数据,并允许读取旧数据。然而,重构一个单一的数据库是困难的,尽管可以将数据库拆分为多个来提高性能,但这需要大量的工作。原创 2024-05-14 14:15:27 · 774 阅读 · 0 评论 -
【论文阅读笔记】MapReduce: Simplified Data Processing on Large Clusters
当在一个足够大的 cluster 集群上运行大型 MapReduce 操作的时候,大部分的输入数据都能从本地机器读取,因此消耗非常少的网络带宽。用户可以控制操作的执行,并且可以将其限制在特定的。操作是输入确定性函数(即相同的输入产生相同的输出)时,MapReduce保证任何情况下的输出都和所有程序没有出现任何错误、顺序的执行产生的输出是一样的。MapReduce 模型的核心思想是将大规模的数据集分解成多个小的数据块,然后分配给集群中的多个计算节点进行并行处理,最终将结果合并成最终的输出。原创 2024-05-12 22:32:33 · 545 阅读 · 1 评论