Zenghui Bao's World

about life, programming, misc thoughts.

Go Context的踩坑经历

0 引言

context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。由于它使用简单,现在基本变成了编写go公共库的通用规范。笔者在使用context上有一些经验,遂分享下。

本文主要谈谈以下几个方面的内容:

  1. context的使用。
  2. context实现原理,哪些是需要注意的地方。
  3. 在实践中遇到的问题,分析问题产生的原因。
Paxos协议 学习小结

一直对Paxos协议比较感兴趣,之前对这个算法 有耳闻 但只是了解皮毛,最近在学Zookeeper,趁着这股新鲜劲,就花时间研究了下Zookeeper的选举算法实现,再重新学习了Paxos算法,这篇文章算是我的学习总结吧。

实现了一个Zookeeper C++客户端

最近学习了下开源的分布式协调系统zookeeper,在学习使用的过程中,感觉原生zookeeper c api比较难用、不方便,遂花时间实现了一个C++客户端,这篇文章主要记述实现过程中的一些思考。

Java初学感想

最近花了一个月时间学习了Java,看了一些书,熟悉了一些工具,写了一些代码,算入门了。由于之前一直做C/C++开发,在学习Java的时候总会不自觉地思考 与C++有什么异同,这篇文章算是我的思考笔记吧。

《解密腾讯海量服务之道》讲座笔记

一直对腾讯做产品的能力比较敬佩的,我们组做消息推送系统,而腾讯的信鸽就是我们学习的榜样。京东很多做产品的思想是跟腾讯学的,而京东很多同事也从腾讯过来的(京东合并了腾讯电商),耳濡目染学到很多东西。

前几天前腾讯的同事给我们分享了《解密腾讯海量服务之道》,讲了几个腾讯开发产品的经验原则,比较受益,遂总结下。

分布式存储 理论与实践 初探 (二)

数据分布

分布式存储系统需要将数据分布到多个节点,并在多个节点之间实现负载均衡。常见的数据分布的方式有两种:一种是哈希分布,如一致性哈希,典型的系统是Amazon Dynamo系统;另一种是顺序分布,即将表格上的数据按主键排序,并切分成多块数据,每个数据存到不同的节点中,典型的系统是Google Bigtable, Taobao Oceanbase。

[转] fflush与fsync的区别

转自: http://blog.xiaoheshang.info/?p=274

1 来源

fflush为C标准库函数, fsync为系统函数。

分布式存储 理论与实践 初探 (一)

硬件基础

分布式存储系统是运行在通用计算机硬件体系结构上的底层系统,熟悉各种硬件的性能,能帮助我们更好的调整架构,最大限度地发挥硬件的价值。