分布式系统时序基础 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
Introduction本文是学习Time, Clocks, and the Ordering of Events in a Distributed System论文的总结,本文总结了提出了通过total ordering events来解决分布式系统的同步问题。
What is a distributed system空间分离的进程合集,进程之间只能通过消息交换来通信进程之间的消息通信耗费的时间要远远高于单个进程间的通信时间The Partial Ordering在讨论Partial Ordering之前,先复习下离散数学中关系的特性,其中二元关系<>是针对集合A的。
如果对于任意的a属于A,满足a<>a,则二元关系是自反的如果对于任意的a,b属于A,如果满足a<>b,且同时也满足b<>a,则二元关系是对称的如果对于任意的a,b,c属于A,如果满足a<>b且b<>c,也同时满足a<>c,则二元关系是可传递的如果对于任意的a,b属于A,如果满足a<>b且b<>a,则a=b,则二元关系是反对称的一个partitial ordering关系满足的条件是自反的,对称的和可传递的,因此在p...阅读全文

 libev设计与实现 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
Introductionlibev是一个高性能的事件处理框架,基于reactor模式实现。本文先讨论reactor模式,然后具体地分析libev的设计和实现。
本文组织结构如下:
reactor模式libev设计和实现参考文献Reactor由于libev是基于reactor模式实现的事件处理框架,所以,先简单介绍下reactor模型的整体思路,方便讨论libev设计和实现时对照分析。
reactor模式底层使用了I/O多路复用模型,是单个线程中管理多个I/O流的技术。I/O多路复用模型是unix环境中的一种I/O模型,除了它之外,还有阻塞I/O,非阻塞I/O,I/O多路复用,信号驱动I/O和异步I/O。
Unix 5种I/O模型阻塞I/O
对于阻塞I/O,应用调用I/O操作后,会一直等待阻塞,等待数据准备好。此时进程无法做其他的任何事情,只能傻傻等着recvfrom返回。

非阻塞I/O
非阻塞I/O与阻塞I/O的区别是,非阻塞I/O在等待数据的时候,进程不是阻塞的,它可以先做其他的事情,然后定期的来询问数据是否准备好。

I/O多路复用
I/O多路复用的流程是先...阅读全文

 MapReduce原理 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
1. Introduction本文是读MapReduce论文的总结,收录在我的github中papers项目,papers项目旨在学习和总结分布式系统相关的论文。
Google发现有一些应用的计算模型比较简单,但涉及到大量数据,需要成百上千的机器来处理。如何并行化计算、分布数据和处理故障需要复杂的处理呢?MapReduce的出现即为了解决这个问题。通过提供的编程库,用户能轻松地写出处理逻辑,而内部的并行化计算、数据分布等问题由MapReduce来处理,大大简化了用户的编程逻辑。
MapReduce受到lisp等函数式编程语言的启发,发现大部分的计算任务包括两个处理流程:
map操作:对每条逻辑记录计算Key/Value对reduce操作:对Key/Value按照Key进行聚合接下来,按照如下结构分析MapReduce系统
Programming ModelImplementationRefinements2 Programming ModelMapReduce的计算以一组Key/Value对为输入,然后输出一组Key/Value对,用户通过编写Map和Reduce函数来控制处理...阅读全文