南国倾城

左手代码,右手年华


  • 首页

  • 标签

  • 归档

  • 搜索

分布式文件存储frangipani速览

发表于 2019-06-25 | 阅读次数:

前言

  frangipani是一个很特殊很有意思的分布式文件存储系统,与GFS之类的架构大相径庭。它的思想很精简也很巧妙,本文将快速总结一下它的核心设计思想。

阅读全文 »

chubby和zookeeper:分布式一致性服务浅析

发表于 2019-06-18 | 阅读次数:

前言

  如果我们的项目需要一致性,例如leader选举、配置维护、分布式锁等服务,我们可以用Raft, Paxos等协议自己实现,也可以看看有没有相关的库。但是,我们的项目可能一开始的架构只是单机的,或者根本没有考虑到将来的扩充会引入一致性协议,可能会导致代码变动较大。因此,我们也许需要一套松耦合的分布式一致性应用,独立地给我们的应用提供服务,chubby和zookeeper就是这样的两个应用。

阅读全文 »

gfs技术要点总结与浅析

发表于 2019-06-13 | 阅读次数:

前言

  gfs是谷歌研发的一套非常经典的分布式存储系统,当年的论文对后续分布式存储的发展有非常重要的指导与借鉴意义,影响深远。实验室参与开发的冷存储系统当时也借鉴了其中的一些思想。关于gfs论文的分析也非常多了,本文不打算重复太多的gfs原理,而是尝试把一些分布式存储系统通常关注的要点分类整理出来,简要地一窥其全貌。

阅读全文 »

raft协议实现分析

发表于 2019-04-13 | 阅读次数:

前言

  之前也细读过raft协议论文,项目里也独立实现过,不过做了mit 6.824的lab2之后,才发现有很多细节没有注意到,论文里figure 2的每一句话真的都需要完全毫无偏差的实现,不然肯定有某些corner case没考虑到。本文就分析一下mit 6.824课程lab2里raft协议实现的思路和细节,以及总结一些注意事项,代码可见个人github仓库https://github.com/wjqwsp/MIT-6.824-2018 ,最新的名为“raft”的commit里,用golang实现。后续还会在这个仓库里不断补全课程的其他实验代码。本文不会详细阐述raft的原理和细节,只关注实现和注意事项。

阅读全文 »

linux io过程自顶向下分析

发表于 2018-12-18 | 阅读次数:

前言

  IO是操作系统内核最重要的组成部分之一,它的概念很广,本文主要针对的是普通文件与设备文件的IO原理,采用自顶向下的方式,去探究从用户态的fread,fwrite函数到底层的数据是如何被读出和写入磁盘的的全过程。希望通过本文,能梳理出一条清晰的linux io过程的脉络。

阅读全文 »

浅析fuse kernel mmap write过程及性能问题

发表于 2018-11-04 | 阅读次数:

前言

  最近在项目里面用到了fuse文件系统,在使用过程中遇到了一个内核在做mmap write的一个bug,目前并没有从根本上解决这个bug,而是通过修改fuse kernel module的一些参数,绕开了这个bug。这里记录一下这个问题,并顺便梳理一下fuse在做mmap write的过程,包括如何与项目里的后台服务程序交互的。

阅读全文 »

xv6中断处理浅析

发表于 2018-09-23 | 阅读次数:

前言

  xv6是x86处理器上用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6),本文主要对其中断处理过程进行分析。中断也是需要硬件和内核合作完成的,我也将从这两部分进行分析。

阅读全文 »

xv6内存管理与进程调度过程浅析

发表于 2018-09-01 | 阅读次数:

前言

  xv6是x86处理器上用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6),本文主要对其虚拟内存管理以及进程调度的部分进行分析,从源码入手去总结一下其中要点。这部分内容其实一年前就看过了,一直没时间动笔写下来,在看过了CSAPP的相关内容后,又有了新的认识,也勾起了一年前已有点模糊的记忆,还是得记录下来。本文将按内核执行的时间顺序,梳理一遍在启动内核的过程中涉及进程调度和内存管理的部分,并由此扩展开来,进行简要分析。

阅读全文 »

linux系统内存管理

发表于 2018-08-18 | 阅读次数:

前言

  主要介绍linux操作系统的虚拟内存以及动态内存分配的概念,从硬件,内核,用户程序3个层面自底而上地概述一下linux内存管理的要点。

阅读全文 »

redis sentinel与raft协议

发表于 2018-08-03 | 阅读次数:

redis的高可用性

  前一篇文章提到,redis用复制来解决可靠性,一份数据做多份冗余。但是,当master节点因为某种原因下线,还必须有一种机制能让slave节点自动地转化成master节点,对外提供写服务,保证系统的高可用性。redis的sentinel就是这样的一种机制。

阅读全文 »
12…5
Gavin Wong

Gavin Wong

蟾宫桂花千里香,暖风拂面惹人狂。我欲因之凌霄起,嫦娥丹桂尽入囊。

43 日志
39 标签
© 2019 Gavin Wong
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4