随笔分类 -  分布式系统

摘要:近半年在做分布式系统开发的同时,也做了不少的测试工作,软件工程教科书上描述软件项目的流程,基本上都会提到单元测试、集成测试、压力测试等名词,但对这些词汇一直停留在理论认识阶段。研究生阶段做的项目,因为要求不高,基本上也没做什么测试工作;去年在实习的时候,因为时间有限,主要接触单元测试和系统功能测试;直到现在才把这些词汇都近距离的感受了一下。 单元测试 分布式系统的开发工作通常会被划分成多个模块,由... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(1634) 评论(0) 推荐(0)
摘要:Blobstore是twitter的图片存储系统,主要参考twitter员工博客及其译文,译文基本是按照字面进行翻译,部分地方理解有些问题,比如文中提到的“每秒上千万张吞吐量的图片请求”,而英文原文是hundreds of thousands of,翻译为上千万显然是很误导读者的;本文主要谈谈我对blobstore的理解,如有问题请指出。 相比facebook的haystack、以及taobao的... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(930) 评论(0) 推荐(0)
摘要:SNIA的云存储标准(Cloud Data Mamangement Interface,CDMI)出来有一段时间了,目前云存储战场竞争激烈,标准的到来给云存储服务提供了指导作用,期待未来有美好的一天,所有的云存储提供商都遵循这个标准,让标准真正的发挥作用,让互联网用户受益。 理想很丰满,现实很骨感,制定标准跟标准落地还有很长的一段距离,标准的合理性首先需要得到检验并不断的改善,而... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(528) 评论(0) 推荐(0)
摘要:本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较小,但数量巨大;而类似于youtube,优酷这样的视频服务网站,其后台存储着大量的视频文件,尺寸大多在数十兆到数吉... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(376) 评论(0) 推荐(0)
摘要:有m个server、n个client,client发出的请求被随机发送到某一个server上,client的请求为串行模式,即每个请求被处理完后才能发送下一个请求,server处理每个请求的时间为T,server每次只能处理一个请求,其他的请求将排队等待。求当client发送请求无限多时,每个请求的平均服务时间? 请求次数无限多时,可以认为请求被均匀分不到各个server上: (1... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(133) 评论(0) 推荐(0)
摘要:典型情况:三个副本构成一个group 1.强一致性:所有的副本更新成功才返回。 如上图C表示Client,【P、S1、S2】构成一个同步组,P表示Primary node,S1,S2是两个secondary node,强同步模型的工作流程为C向P写数据,P向S1,S2转发,只有3个都写成功,才向C返回成功,否则写失败。这种模型对于append操作很容易实现,如果副本没有... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(896) 评论(0) 推荐(0)
摘要:关于hash函数 hash函数主要用于将“大范围”映射到“小范围”,如MD5将任意长度的数据计算出128bit的签名值,RSHash等函数将任意长度的数据转换成32bit的无符号整型,好的hash函数拥有高性能以及低hash冲突。 hash函数主要通过加减乘除及移位等操作来计算最终结果,hash函数的分类参考: http://nicoleamanda.blog.163.com/blog/... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(272) 评论(0) 推荐(0)
摘要:1.What is zookeeper? ZooKeeper, a service for co-ordinating processes of distributed applications.Since ZooKeeper is part of critical infrastructure, ZooKeeper aims to provide a simple and high perfo... 阅读全文
posted @ 2013-04-19 14:11 ydzhang 阅读(257) 评论(0) 推荐(0)
摘要:Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态)。 当前很多的消息队列服务提供可靠交付保证,并默认是即时消费(不适合离线)。高可靠交付对linkedin的日志不是必须的,故可通过降低可靠性来提高性能,同时通... 阅读全文
posted @ 2013-04-19 14:11 ydzhang 阅读(283) 评论(0) 推荐(0)
摘要:当Web服务器、文件服务器、游戏服务器等的用户数不断增加时,单服务器模型肯定不能完全满足服务的需求,集群服务模式已经逐渐普及,使用服务器集群做后台,一个主要的问题就是要解决负载均衡问题。 负载均衡算法主要分为两种,持续性和非持续性的负载均衡,持续性是指特定客户端发出的请求将由同一服务器服务。持续性算法主要基于随机理论,即其默认客户的访问时随机的,从而服务器的选择也是随机的,以此来实现负载均衡。... 阅读全文
posted @ 2013-04-19 14:11 ydzhang 阅读(545) 评论(0) 推荐(0)
摘要:HayStack是Fackbook用于存储照片的系统,其存储照片的数量在千亿数量级,本文简要分析HayStack的设计与实现原理。 图片存储的几个关键点: 1. Metadata信息存储。由于图片数量巨大,单机存放不了所有的Metadata信息,假设每个图片文件的Metadata占用100字节,260 billion图片Metadata占用的空间为260G * 100 = 26000GB。... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(578) 评论(0) 推荐(0)
摘要:在HDFS中,NameNode用来管理文件系统的命名空间,其将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息会在硬盘上保存为fsimage(命名空间镜像)和edits(修改日志)文件;其还保存了文件包含哪些数据块,分布在哪些数据节点上,但这些数据并不保存在硬盘上,而是在系统启动的时候从数据节点收集而来的。DataNode是文件系统中真正存储数据的地方,其周期性的向元数据节点回报期存储... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(1530) 评论(0) 推荐(0)
摘要:1. 创建java运行环境 l 下载jdk for linux: jdk-6u22-linux-i586.bin http://www.java.com/zh_CN/download/manual.jsp l 安装jdk:chmod a+x jdk-6u22-linux-i586.bin; ./ jdk-6u22-linux-i586.bin l 设置环境变量 #vi /etc/pr... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(339) 评论(0) 推荐(0)
摘要:学习分布式文件系统时,曾经download了moosefs的源代码,做了简单的测试,发现moose的实现效率还不错,在阅读器源代码时,发现了其封装了C socket接口,于是把相关的文件保存下来了。昨天闲着没事,想测试一下这个socket接口,在测试udp时,发现服务器接收到数据后,不能正确的向客户端返回信息。 阅读了代码发现问题在udpread函数上,udpread的实现如下: int ud... 阅读全文
posted @ 2013-04-19 14:08 ydzhang 阅读(198) 评论(0) 推荐(0)
摘要:分布式存储系统中,元数据服务器通常是一个集中管理者,通常由它选择(根据一些负载均衡算法)合适的存储节点来存储文件数据,这就形成了文件元数据中的映射元数据部分,映射元数据记录文件数据分布信息。 常用的实现方法为存储节点周期性的向元数据服务器报告状态信息,元数据服务器根据这些节点的信息选择负载最小的存储节点作为本次请求的数据服务者,这就要求元数据服务器为每个文件维护一个数据分布链,当文件很大,而数据... 阅读全文
posted @ 2013-04-19 14:08 ydzhang 阅读(643) 评论(0) 推荐(0)
摘要:MooseFS通过检查缓存的文件是否被其它的客户端修改,来决定缓存是否有效,感觉与我实现的那个版本的DNFS缓存机制一模一样,客户端在判断缓存是否有效时,需要连接元数据服务器进行确认,以下详细的说明在集中情况下对缓存的处理。 场景1: 机器A读取文件X,(X的元数据被加入到机器A的缓存) 机器B读取文件X 此时,机器A欲读取/修改文件X(cache有效,因为文件没有被修改过) 场景2 机器A读... 阅读全文
posted @ 2013-04-19 14:08 ydzhang 阅读(314) 评论(0) 推荐(0)
摘要:对于单元数据服务器的集群,单元数据服务器会造成瓶颈,很多分布式文件系统通过采用元数据服务器集群的模式进行扩展,首先要解决的问题就是系统的元数据以什么方式分布在元数据服务器集群中。目前一些主流的分布式文件系统中使用的方案主要包括Table-Based Mapping,Hashing-Based Mapping,Static Tree Partitioning,Dynamic Tree Part... 阅读全文
posted @ 2013-04-19 14:08 ydzhang 阅读(664) 评论(0) 推荐(0)
摘要:关键字 详细说明 分布式文件系统 研究point 1,性能,容量,可用性,安全性,可扩展性,可管理性 2,用户组件与数据管理组件的分离, 3,key:服务客户的响应时间 分布式文件系统应该具有的特性 1,网络透明性:客户端使用访问本地资源的方法访问网络资源 2,容错性:网络错误,主机,存储设备故障发生时,系统仍能正常提供服务(可降级,更慢的响应) 3,可扩展性:系统规模扩大时... 阅读全文
posted @ 2013-04-19 14:03 ydzhang 阅读(390) 评论(0) 推荐(0)