摘要: QA同学反映,对TFS进行压力测试时,网卡一直压不上去,看了下他们的测试环境,发现在测试时客户端的日志都是往屏幕打印的,将日志重定向到文件,压力马上上去了。日志打印到屏幕其实是个非常耗时的事情,打印到屏幕会影响到客户端的请求并发;这个问题解决了,QA同学又反映另一个奇怪的现象。如下图所示,client1和client2的请求分别被定向到server1和server2。 (4台独立的物理机)单个客户端case1:只启动client1,client1不打印日志,server1的网卡能跑到110M/S左右(千兆网卡,接近满)case2:只启动client1,client1打印日志,server1的网 阅读全文
posted @ 2013-04-22 19:58 ydzhang 阅读(2756) 评论(0) 推荐(2) 编辑
摘要: 使用gdb调试时,有的函数只在某些路径上会执行到,而触发这些路径执行的条件构造起来比较麻烦,比如某个server在接收到READ请求时,会调用do_read进行响应,这时如果我们想调试do_read函数,就必须在客户端构造一个READ请求来触发。 int do_read(const ReadRequest& req); 假设我们知道do_read调用时参数ReadRequest的具体内容,能否直... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(2229) 评论(0) 推荐(0) 编辑
摘要: block标识 TFS每个block有一个唯一标识,目前的实现是一个uint32_t的整数id,每次新增一个block,就会为其分配新的id,具体实现方式是保存一个全局global_block_id的值,每次分配时就直接将这个值加1做为新的blockid;代码实现大致如下,每次需要分配时就调用generate函数。 class BlockIdFactory { public: uint32_... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 去年写过一篇tbnet的分析文章,主要介绍tbnet(获取源代码)框架结构及基本使用方法,最近又重读了下源码,有一些新的收获。 连接是核心 tbnet框架围绕网络连接(对应Connection类)展开,Connection主要包含如下成员。 class Connection { bool _isServer; ... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(1773) 评论(0) 推荐(0) 编辑
摘要: 近半年在做分布式系统开发的同时,也做了不少的测试工作,软件工程教科书上描述软件项目的流程,基本上都会提到单元测试、集成测试、压力测试等名词,但对这些词汇一直停留在理论认识阶段。研究生阶段做的项目,因为要求不高,基本上也没做什么测试工作;去年在实习的时候,因为时间有限,主要接触单元测试和系统功能测试;直到现在才把这些词汇都近距离的感受了一下。 单元测试 分布式系统的开发工作通常会被划分成多个模块,由... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(1573) 评论(0) 推荐(0) 编辑
摘要: SNIA的云存储标准(Cloud Data Mamangement Interface,CDMI)出来有一段时间了,目前云存储战场竞争激烈,标准的到来给云存储服务提供了指导作用,期待未来有美好的一天,所有的云存储提供商都遵循这个标准,让标准真正的发挥作用,让互联网用户受益。 理想很丰满,现实很骨感,制定标准跟标准落地还有很长的一段距离,标准的合理性首先需要得到检验并不断的改善,而... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 2012年,结束了长达19年的校园生活长跑,走上了工作岗位,开始人生一个新的起点。我的工作其实跟在实验室差不多,依然是分布式存储领域,公司简单的同事关系就跟在学校同学一般纯真,每天上班依旧是一辆破自行车,甚至连距离都跟宿舍去实验室差不多,还有在学校的同学雷雷、小鳄、宝仔在同一个组工作。 新人学习 入职后加入TFS(Taobao File System)项目组... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(172) 评论(0) 推荐(0) 编辑
摘要: google开源的gflags是一套命令行参数解析工具,比getopt功能更强大,使用起来更加方便,gflags还支持从环境变量、配置文件读取参数(可用gflags代替配置文件)。本文简单介绍gflags的使用,内容主要译自 http://gflags.googlecode.com/svn/trunk/doc/gflags.html 。 定义参数 使用flags需要包含头文件 #i... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(644) 评论(0) 推荐(0) 编辑
摘要: linux socket使用16bit无符号整型表示端口号,最大到65535。关于端口号,有一个经典的误解就是,因为端口号有限,所以一个客户端最多建立65536个socket连接,但实际上并不是这么回事,端口是可以复用的。 一个socket连接是一个[srcip, srcport, destip, destport]组成的四元组,如果再算上协议(tcp、udp、rawsocket等)就是五... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(2738) 评论(0) 推荐(0) 编辑
摘要: 最近写博客的频度远不如以前,主要是想要求自己尽量保证每篇博文的质量,每次想写博客的时候,就发现想写的内容很简单(浅薄),根本不值一写,于是就搁置了。平时关注互联网的内容也比较多,没有明确的主题,单独写出一篇博客的确不值,所以就准备把零散的想法组织到一起记录下来,今天就先从微信公众平台说起。 微信公众平台 微信刚火起来那会,大家都用微信发语音短信,那会我没有智能手机,只能在一边羡慕嫉妒恨,当时对微信... 阅读全文
posted @ 2013-04-19 14:14 ydzhang 阅读(258) 评论(0) 推荐(0) 编辑