摘要: 转载自:http://morsmachine.dk/go-schedulerIntroductionOne of the big features for Go 1.1 is the new scheduler, contributed by Dmitry Vyukov. The new scheduler has given a dramatic increase in performance for parallel Go programs and with nothing better to do, I figured I'd write something about it.M 阅读全文
posted @ 2013-11-18 14:24 吴镝 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.sizeofvoid.net/goroutine-under-the-hood/Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。1. 操作系统与运行库2. 并发与并行 (Concurrency and Parallelism)3. 线程的调度4. 并发编程框架5. goroutine1. 操作系统与运行库对 阅读全文
posted @ 2013-11-18 11:31 吴镝 阅读(1049) 评论(0) 推荐(0) 编辑
摘要: 分布式存储系统通常通过维护多个副本来进行fault-tolerance,提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性。一致性协议就是用来干这事的,即使在部分副本宕机的情况下。Raft是一种较容易理解的一致性协议。一致性协议通常基于replica... 阅读全文
posted @ 2013-11-11 22:20 吴镝 阅读(19580) 评论(2) 推荐(4) 编辑
摘要: 转载自:http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.htmlNow that we have theC10K concurrent connection problemlicked, how do we level up and support 10 million concurrent connections? Impossible you say. Nope, systems right now are delivering 10 阅读全文
posted @ 2013-06-05 17:50 吴镝 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 这篇主要写libeasy作为客户端的情形。结合OceanBase 0.4的mergeserver使用libeasy的情况进行分析,mergeserver请求chunkserver是异步请求,chunkserver使用update是同步请求,在libeasy中,同步请求是通过异步请求来实现。使用libeasy作为服务器端的情况见这作为客户端使用时,会涉及到一些数据结构,easy_session_t, easy_client_t, easy_hash_t, easy_hash_list_t等。easy_session_t用来封装一个要发出去的请求,easy_client_t用来封装一个TCP连接的 阅读全文
posted @ 2013-02-17 11:28 吴镝 阅读(3257) 评论(0) 推荐(1) 编辑
摘要: libeasy是个网络框架,这个网络框架基于事件驱动模型,libeasy可以有多个网络I/O线程,每个网络I/O线程一个event loop,事件驱动模型基于开源的libev实现。我认为,libeasy不同于其它的网络框架比如tbnet,muduo。tbnet,muduo等网络框架的目的就是向应用层暴露出简单的发包和收包的接口,让应用层从底层发包和收包的处理细节中解放出来,使得应用层能更加专注于业务逻辑的实现,为了做到这些,网络框架帮助应用程序管理连接,管理输入输出缓冲区,处理具体的发包收包等细节和错误的处理,处理流控,并且允许应用层注入封包,解包,新建连接时处理,断开连接时处理,收到包后处理 阅读全文
posted @ 2013-02-17 11:27 吴镝 阅读(11294) 评论(2) 推荐(2) 编辑
摘要: libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。libev的基本使用方法如下: int main (void) { // use the default event loop unless you have special needs struct ev_loop *loop = EV_DEFAULT; // initialise an io watcher, then start it // this one will watch ... 阅读全文
posted @ 2013-02-04 11:08 吴镝 阅读(6428) 评论(1) 推荐(1) 编辑
摘要: 本文是在Linux wudi-VirtualBox 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux上面试验的,32bit cpu,32 bit os 阅读全文
posted @ 2013-01-29 14:33 吴镝 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 本文记录对原文:http://highlyscalable.wordpress.com/2012/09/18/distributed-algorithms-in-nosql-databases/中replication 技术的理解,同时参考http://www.cnblogs.com/foxmailed/archive/2011/12/25/2301267.html先定义两种一致性:1.读写一致性 从读写这个角度来看,数据库的基本目标就是最小化副本之间不一致的时间并且保证最终一致性。 最终一致性是一种弱的一致性,那么还有两种更强的一致性: 1. read-after-write 一致性:一个. 阅读全文
posted @ 2012-09-29 15:14 吴镝 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changedCAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于网络的数据共享系统,都最多只能拥有以 阅读全文
posted @ 2012-06-19 18:40 吴镝 阅读(432) 评论(0) 推荐(0) 编辑