近期文章
Golang标准库RPC实践及改进
2016校招总结-谷歌, 亚马逊, 网易游戏, 百度, 美团
Borg Paper Review
Tachyon Paper Review
用etcd做服务发现及Go代码示例
Cassandra Paper Review
kubernetes在高性能分布式计算中的应用 (一)
Apache Tez Paper Review
Spark Paper Review
一次网页请求的过程
Linux I/O mulitplexing和epoll编程
平坦的数据存储中心
在centos docker中安装nvidia驱动
深夜关于docker的一些思考
一致性问题和Raft一致性算法
TCP/IP 读书笔记
C++11 读书笔记
Go实现长连接
unlimited channel buffer in Go
Leader Election 选举算法
Process, Thread, Locks
彻底搞定KMP字符串匹配算法
Type conversions in C++类型转换
vim里面以root权限保存

Golang标准库RPC实践及改进

March 2, 2016

一直用Golang标准库里的的RPC package来进行远程调用,简单好用. 但是随着任务数量的增大, 发现简单的像包里面的示例那样的代码出现了各种各样的问题,下面就把我踩过的一些坑记录一下吧. 首先是最初使用的文档里的版本,使用HTTP来发送请求.

Read More

2016校招总结-谷歌, 亚马逊, 网易游戏, 百度, 美团

November 14, 2015

感觉是好久没更新博客了, 最近忙于各种公司的校招, 连paper都少读了好多, 每次看到教我云计算的老师都惭愧得不敢抬头. 忙了一个多月面试了五家公司拿到了四个offer, 总算有所回报, 我就按照面试的时间顺序来写一下经历吧, 题目当然能是不能细说, 但我可以给出一些应对的策略.

Read More

Borg Paper Review

November 1, 2015

本文读完Google的论文”Large-scale cluster managemnet at Google with Borg”的总结. Borg是谷歌内部使用了十多年的集群管理系统,是Kubernetes的前身. ##Summary This paper introduces Google’s large scale cluster management system named Borg. It explains how Borg is designed from both user perspective and developers perspective.

Read More

Tachyon Paper Review

October 3, 2015

##Summary This paper presents a Java implemented memory speed storage called Tachyon. Tachyon read and write files to the cluster shared memory to eliminate writing bottleneck, and provides fault-tolerance through lineage.

Read More

用etcd做服务发现及Go代码示例

September 30, 2015

之前说到要让我们的系统zrpc可以动态调整集群大小. 那么首先就要支持服务发现, 就是说当一个新的节点启动时,可以将自己的信息注册给master, 让master把它加入到集群里, 关闭之后也可以把自己从集群中删除. 既然是用Go语言, 我们采用etcd来做服务发现, 在我们这个情况下其实就是一个membership protocol, 用来维护集群成员的信息. 实现时发现现在网上的etcd Go API的教程都是采用go-etcd这个已经被废弃的库, 官方推荐使用etcd/client, 用法跟以前的稍有不同, 我就写一个简短的示例好了.

Read More

Cassandra Paper Review

September 25, 2015

这是读完 A. Lakshman, P. Malik, ‘‘Cassandra: a Decentralized Structured Storage System,’’ ACM SIGOPS Operating Systems Review, 2010. 的总结. ##Summary This paper presents a distributed structured storage system named Cassandra which meet reliability and scalability. Cassandra is developed to solve Facebook Inbox Search problem.

Read More

Apache Tez Paper Review

September 15, 2015

##Summary: This paper introduces Apache Tez, an open source project optimized for customized data-processing applications running in Hadoop. It models data processing as a data flow graph, so projects in the Apache Hadoop ecosystem can meet requirements for human-interactive response times and extreme throughput at petabyte scale.

Read More

Spark Paper Review

September 12, 2015

##Summary: This paper presented an In-memory cluster competing system called Spark, which is claimed faster than the current distributed computing system like Hadoop by an order of magnitude. Spark is fast because it stores intermedia results in memory rather in stable storage.

Read More

Linux I/O mulitplexing和epoll编程

July 21, 2015

##Nonblocking I/O 当我们对一个文件描述符进行I/O操作,它还没有准备好但我们又不想等时; 或者当我们想同时监视多个文件描述符时, 我们就可以使用nonblocking I/O. 只需在打开文件时启用O_NONBLOCK, 那么不能及时完成的I/O system call会就返回错误而不是阻塞继续等待.

Read More

平坦的数据存储中心

July 14, 2015

近期读微软的一篇paper Flat Datacenter Storag,称速度比HDFS快很多,这是不是未来存储的一个趋势呢? ###局部性问题 传统的存储模型是树状的,每一台机器都是树上的一个节点.那么接近根节点的机器的网络带宽肯定会小余在它下面机器的带宽之和.这样造成的结果就是同一个rack传输很快,而不同的rack之间或接近根节点的机器传输就很慢.

Read More

深夜关于docker的一些思考

July 13, 2015

Docker最近很火,但是实际上在哪里能够用到呢? 在做分布式系统的过程中,我一直都在思考, 在什么样的情况下我要使用docker. 这段时间搭建了一个六台服务器的分布式计算系统, 文件系统使用的是Gluster, 调度系统是自己写的Admiral, 开发测试时一直用的ansible来操纵集群, 觉得docker并没有什么用处. 知道今天组里让我再配一个集群时我突然想到,这不就是需要用到docker的情况吗? 如果我事先将这些东西全部打包好, 那岂不是直接将镜像拷贝过去就好了. 下面将记录一下使用docker过程中的点点滴滴.

Read More

一致性问题和Raft一致性算法

July 11, 2015

一致性问题

一致性算法是用来解决一致性问题的,那么什么是一致性问题呢? 在分布式系统中,一致性问题(consensus problem)是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的结果达成一致. 更详细的解释就是,当其中某个服务器收到客户端的一组指令时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到同样的指令,这样的话所有的服务器会产生一致的结果,看起来就像是一台机器一样.

Read More

TCP/IP 读书笔记

July 3, 2015

才七月份,就已经收到很多HR的邮件了,所以复习要抓紧了.今天来复习一下网络知识.

Read More

C++11 读书笔记

June 27, 2015

###左值和右值 c++的表达式中,左值可以放在赋值语句的左侧,而右值则不能。 通过“&&”来获得右值引用,右值引用只能绑定到一个将要销毁的对象。 使用move函数可以得到一个左值的右值引用,然后可以直接将其中的资源拿出来而不是重新拷贝一份。

Read More

Go实现长连接

June 26, 2015

记得在很久以前(其实就是去年),有个面试问题是问我什么时候该使用长连接,什么时候用短连接,当时我都没听说过这两个词,乱答一通。今天回想起来,学习了一下。

Read More

unlimited channel buffer in Go

June 17, 2015

channel buffer可以事先分配大小,但是这些是需要占用内存的,事先分配几G内存给一个channel很浪费资源的,所以怎样创建一个无限的channel buffer呢?比较naive的写法就是把东西放进一个队列里,然后时刻检查队列的大小,比如说:

Read More

Leader Election 选举算法

June 16, 2015

觉得之前几篇文章有点水,这样还怎么证明自己是搞分布式的呀,今天来一点干货,讲一讲分布式系统中必不可少的选举算法。 leader 就是一堆服务器中的协调者,某一个时刻只能有一个leader且所有服务器都承认这个leader. leader election就是在一组进程中,选举一个leader且让该组的进程都同意这个leader.

Read More

Process, Thread, Locks

June 15, 2015

今天来复习一下线程进程这些基本概念。 ###process 拥有独立的adress table, 进程之间的变量和数据不共享,需要通过进程间通信来交流,如pipe, file, socket, signal.

Read More

彻底搞定KMP字符串匹配算法

June 13, 2015

每次看算法书看到KMP就看不下去,或者就是粗略的看一下不求甚解,导致过了一会儿就忘了。今天抽了一个小时写了一遍KMP算法,才算搞明白。

Read More

vim里面以root权限保存

December 8, 2013

用vim修改系统文件的时候经常会忘记sudo,以至于后来不得不退出然后重写一次,非常困扰啊。Google到一个在vim里面以root权限保存的方法,非常有趣,记下来免得忘记。

Read More