摘要:
TFS客户端是用户访问TFS的入口,目前TFS已支持C/C++、java、php、python等语言的客户端,本文主要分析C++客户端的实现逻辑。
TfsClient类是提供给tfs客户的原生C++接口类,其依赖TfsClientImpl代理负责具体实现,另外,在TfsClient上又封装了一套C客户端接口。
TfsSession类负责处理与nameserver相关的工作,包括获取block信息,... 阅读全文
摘要:
TBNET是淘宝的开源异步网络框架,源码见:http://code.taobao.org/p/tb-common-utils/src/trunk/tbnet/ TBNET主要类之间的联系如下,其中框架的使用者需要关注红色部分的类或接口。 关于每个类接口介绍,请参考@淘宝立德 总结的文档:http://vdisk.weibo.com/s/1UzQB/1326963540 ... 阅读全文
摘要:
最近几天在做一个集群间数据迁移的任务,要做的事很简单,就是给定一个任务文件,文件中每一行对应一个source:dest形式的迁移任务(source和dest均为文件名),任务数在千万级别。要做的事情其实很简单,读取每一行,解析出source和dest,并根据给定的集群信息从源集群读取source,并写到目标集群的dest。经历了写程序、执行任务、分析日志、改程序、再执行子任务...等多次折磨之后,... 阅读全文
摘要:
本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较小,但数量巨大;而类似于youtube,优酷这样的视频服务网站,其后台存储着大量的视频文件,尺寸大多在数十兆到数吉... 阅读全文
摘要:
学习篇 1.科研方面基本没接触新的内容,仍然把学习重点定在分布式技术及应用方面。把经典的几篇论文(GFS、Bigtable、Dynamo、Zookeeper …)重新研读了几次,结合网上技术博客的分析,对分布式系统的理解稍稍有些加深。 2.项目方面根据Spyglass和Meggllan两篇论文的思路,实现了一个元数据检索系统原型,后将其扩展并作为我毕业论文的课题。 3.持续关注Nosql方面... 阅读全文
摘要:
WeiboFS是基于新浪微博的文件系统,它将新浪微博虚拟成一个linux本地文件系统,用户像使用文件系统一样来看微博,发微博。
WeiboFS的开发需要用到FUSE, fusepy, sinatpy2.x FUSE是指用户空间文件系统,通过FUSE,开发人员通过实现一组用户空间的接口即可实现一个文件系统。 fusepy是FUSE的python-binding工具,通过fusepy,开发人员可以... 阅读全文
摘要:
马上要做毕业论文的测试,需要自己写测试程序、生成数据、作图,最简单的方式莫过于使用excel根据数据生成图标,这就需要在linux下通过C/C++写excel文件,使其能被ms excel打开,本文总结了三种方式。 普通文本,以\t分隔列 建立文本文件如下,在同一行的数据以tab(\t)进行分隔,使用excel打开。 a b c d e f a b c d e f
... 阅读全文
摘要:
core文件对问题查找非常有帮助,大部分时候我们能根据core文件直接定位到问题,但当出现内存乱掉的情况时,core的backtrace可能也不能指出问题源头。最近线上问题较多,针对dataserver出现的问题做个总结:1. 如果在read/write时coredump,则多是因为磁盘故障(或是文件系统崩溃),IO的一些严重问题可通过dmesg查看,如果出现Medium Error,EXT4-fs error(device sdx), Device offlined, I/O error, rejecting I/O to dead device之类的关键字,就说明磁盘已经出问题了,如果是文 阅读全文
摘要:
分布式文件系统主要用于解决海量数据存储的问题,如Goolge、Facebook等大型互联网企业都使用分布式文件系统作为数据存储的基础设施,并在其上构建很多服务,分布式文件系统通常采用三副本的策略来保证数据的可靠性,但随着应用数据量的不断膨胀,三副本策略为可靠性牺牲的存储空间也越来越大,如何在不降低数据可靠性的基础上,进一步降低存储空间成本? Facebook将erasure code应用到内部HDFS集群中,该方案使用erasure code代替传统的三副本策略,在保持集群可用性不变的情况下,节省了数PB的存储空间,Facebook的实现方案(HDFS RAID)目前已贡献给开源社区。Eras 阅读全文
摘要:
Nameserver(NS)是TFS的总控节,NS的主要职责包括为写分配block、为读查找block、管理block与dataserver对应关系、管理dataserver、备NS状态,执行后台复制、均衡、压缩任务,以保证整个集群良好的工作。Block分配NS接收到客户端的写请求,会分配一个可写的block,如果没有可写block,则会创建一个新的block,每个block由一个id标识(uint32_t,后续会将该值提升至uint64_t),blockid不能重复,且不复用,新创建的block,在当前id的基础上递增,产生新的blockid。为了保证产生不重复的blockid,必须将blo 阅读全文