goroutine背后的系统知识

Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。

1. 操作系统与运行库
2. 并发与并行 (Concurrency and Parallelism)
3. 线程的调度
4. 并发编程框架
5. goroutine

1. 操作系统与运行库

对于普通的电脑用户来说,能理解应用程序是运行在操作系统之上就足够了,[……]

Read more >>>

Hadoop 2.0 NameNode HA和Federation实践

一、背景

天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基于Hadoop的技术解决方案,由于行业的特殊性,客户对服务的可用性有着非常高的要求,而HDFS长久以来都被单点故障的问题所困扰,直到Apache Hadoop在2012年5月发布了2.0的alpha版本,其中MRv2还很不成熟,可HDFS的新功能已经基本可用,尤其是其中的的High Availability(以下简称HA)和Federation。Cloudera也于7月制作了CDH4.0.1,包含了Hadoop 2.0的诸多新功能和组件,于是我们就基于CDH4.0.1进行了HA和Federation的测[……]

Read more >>>

再认识Google F1和Spanner

F1到底是啥?Spanner的论文里只说它是广告业务系统,Google在今天五月另外还发过一篇文章专门讲的F1,当时没看懂就忘了,现在重看,可以串起来了。

F1才是所谓的分布式数据库,Spanner是它下层的k/v存储(保证了冗余分布和ACID),二者其实是紧密结合的,上层应用的数据模型决定了下层的设计实现,因为F1以前在MySQL上就是按CustomerID做shard,所以到了Spanner里才会有树状的directory,并且以directory为粒度来实现冗余分布,甚至我前天没搞明白的那个问题(为什么不用LSM-tree而用B-tree)很可能也是指:在物理文件的组织上采用树状结[……]

Read more >>>

Google Spanner初探

Google在前几天发布了一篇提交给OSDI’12的论文,《Spanner: Google’s Globally-Distributed Database》,微博上讨论非常热烈,但真正去看完论文以后,比较失望

Spanner是基于BigTable的思路开发的,相比BigTable,它多了这么几个功能:

1. 不牺牲数据一致性的前提下,实现了跨数据中心的数据冗余,以及这样做的一个良好的副作用:数据本地化

2. 跨表,多行的事务处理

3. 树状的,半关系型的数据模型

技术上比较牛逼的是per tablet的paxos状态机组,结合GPS和原子钟实现的TrueTime,[……]

Read more >>>