具有故障模拟功能的RPC实现分析 发表于 2016-09-07 | 分类于 分布式 引言分布式系统学习中,需要理解如何对各种故障进行正确地处理,包括网络故障,机器故障等等。如何能方便的模拟故障,来验证自己的原型系统是否能够正确的应对这些故障就非常重要。本文将分析一个基于golang实现,具有故障模拟的RPC实现原理,源码来自MIT 6.824课程的labrpc。 RPC基本原理在了 ... 阅读全文 »
golang reflection学习笔记 发表于 2016-09-06 | 分类于 语言 Introductionreflection是golang中用来获取interface的type, value和method的方式,本文主要介绍这三种使用方式。 golang reflectioninterface的类型 获取interface的type 12t := reflect.Typeof ... 阅读全文 »
golang实现单机版MapReduce 发表于 2016-08-27 | 分类于 分布式 介绍本篇文章主要描述了如何使用golang实现一个单机版的MapReduce程序,想法来自于MIT-6.824课程的一个lab。本文分为以下几个模块: MapReduce基本原理 MapReduce简单使用 MapReduce单机版实现 MapReduce基本原理MapReduce的计算以一组K ... 阅读全文 »
C++ template基础 发表于 2016-08-07 | 分类于 语言 Introduction本文总结了C++ templates相关的基础知识,包括如下 template definition template argument deduction Template Definition分为function template和class template。 Fu ... 阅读全文 »
libeasy实现原理 发表于 2016-07-17 | 分类于 后台开发 Introductionlibeasy是一个高性能网络编程框架,Oceanbase等阿里的服务端程序采用了libeasy作为网络框架,目前其开源在github TDH项目中。本博客写了一系列文章分析libeasy的实现原理,如下 libev设计与实现 libeasy基础数据结构 libeasy服务 ... 阅读全文 »
libeasy服务端框架实现原理 发表于 2016-07-17 | 分类于 后台开发 Introduction本文分析libeasy服务端框架实现原理,主要分析libeasy是如何处理以下事件的 libeasy服务端连接建立 libeasy服务端连接关闭 libeasy服务端可读事件 libeasy服务端可写事件 libeasy服务端框架实现原理本节先讨论libeasy的网络和线 ... 阅读全文 »
MapReduce原理 发表于 2016-07-16 | 分类于 分布式 1. Introduction本文是读MapReduce论文的总结,收录在我的github中papers项目,papers项目旨在学习和总结分布式系统相关的论文。 Google发现有一些应用的计算模型比较简单,但涉及到大量数据,需要成百上千的机器来处理。如何并行化计算、分布数据和处理故障需要复杂的处 ... 阅读全文 »
分布式系统时序基础 发表于 2016-07-02 | 分类于 分布式 Introduction本文是学习Time, Clocks, and the Ordering of Events in a Distributed System论文的总结,本文总结了提出了通过total ordering events来解决分布式系统的同步问题。 What is a distrib ... 阅读全文 »
The go programming language 学习笔记二 发表于 2016-06-28 | 分类于 语言 Introduction本文为学习The go programming language的总结笔记,主要分为 Functions Methods Interfaces FunctionsFunction DeclarationsGO函数声明的语法如下 123func name(parameter ... 阅读全文 »
libev设计与实现 发表于 2016-06-18 | 分类于 后台开发 Introductionlibev是一个高性能的事件处理框架,基于reactor模式实现。本文先讨论reactor模式,然后具体地分析libev的设计和实现。 本文组织结构如下: reactor模式 libev设计和实现 参考文献 Reactor由于libev是基于reactor模式实现的事件处 ... 阅读全文 »