摘要: Raft/Leader Election 选举发生 若Follower在指定超时时间内没有收到Leader发送的HeartBeat,则节点状态由Follower转为Candidate. 并开始进行选举. 投票 CurrentTerm增加1(表示进入下一任期) 向自身节点投票 设定随机超时时间(Ele 阅读全文
posted @ 2017-08-19 14:15 XLLL 阅读(477) 评论(0) 推荐(0) 编辑
摘要: MIT6.824 Lab2 ============== 设计思路 Server : Server每隔PingInterval(85ms)时间获取View视图 Primary : 设置自身属性为Primary Backup : 设置自身属性为Backup Get : 当Server为Primary时 阅读全文
posted @ 2017-06-04 23:47 XLLL 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 关于sync.RWMutex ================ 关于优先级 为了模拟pthread中的barrier,在代码中使用了RWMutex配合阻塞管道.而其中一个关键问题就是读锁与写锁的优先级问题. "文档" 里面有这样一句话:a blocked Lock call excludes new 阅读全文
posted @ 2017-06-04 10:57 XLLL 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 闲话 最近在刷MIT的分布式课程,线程和锁一定是最基本的元素啦. 由于GO本身提倡的 ,所以在实现的时候试图不用sharing memory + lock而多用channel来实现,这时候就带来了一些小小的不方便,比如一个字符串s可以被多个goroutine读而被一个goroutine写,显然我们要 阅读全文
posted @ 2017-04-11 23:08 XLLL 阅读(2118) 评论(0) 推荐(0) 编辑
摘要: 多线程中的同步与锁 ============== 概念 前面已经有介绍过线程的概念,所以我们知道,当两个线程同时读写一个内存区域的时候结果可能是不确定的.我们假设写操作需要两个存储器访问周期, 而读操作只需要一个访问周期.在写操作执行了一个访问周期后读操作开始执行,那么得到的结果可能并不是我们想要的 阅读全文
posted @ 2017-03-15 12:10 XLLL 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 线程控制 ======= 简介 我们可以将线程看作为一个依托于进程存在的独立逻辑流,它拥有着独立的线程ID,一组寄存器,栈,调度优先级和策略,信号屏蔽字,errno变量以及线程私有数据. 同时,进程的所有信息对所有线程共享,包括可执行程序的代码,程序的全局内存和堆内存以及文件描述符. 关于所有线程共 阅读全文
posted @ 2017-03-13 19:45 XLLL 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 进程控制 ============ 进程标识 每个进程都有一个非负整数表示的唯一进程ID. 进程ID是可以复用的,当进程退出后它的ID可以被其他进程使用.(大多数Unix实现了延迟复用算法) fork函数 函数原型: 通过fork创建的新进程被成为子进程.fork函数调用一次返回两次,父进程返回子进 阅读全文
posted @ 2017-03-12 22:58 XLLL 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 高级I/O ======= 简介 题目虽然叫做高级I/O,但是内容并不高级.本文主要介绍Unix下的异步IO,IO多路转接,带缓冲区的读写,以及存储映射 非阻塞式I/O 本文并不打算详细的介绍非阻塞式I/O,实际上在管道的文章里面已经提及过一些.读出或者写入不会阻塞,当有阻塞的情况出现时函数会立即返 阅读全文
posted @ 2017-03-12 14:06 XLLL 阅读(188) 评论(0) 推荐(0) 编辑
摘要: TCP连接与终止 ================ 简介 我们都知道TCP连接是三次握手,那么这三次握手都发送了什么? TCP连接断开的时候又变成了四次报文传递,这四次的意义又是什么呢? 三次握手 我们通过一个简单的程序构造了一次没有任何数据发送的TCP连接,下面我们来看一下wireshark抓到的 阅读全文
posted @ 2017-03-11 16:55 XLLL 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 消息队列 ========== 简介 前面我们已经介绍了两种消息传递方式,管道以及FIFO.下面我们来介绍第三种:消息队列. 消息队列不同于管道和FIFO,其具有内核级持续性.也就是说,如果我们没有主动删除这个队列,它会生存到操作系统关闭. 我们可以将消息队列看做一个priority_queue,我 阅读全文
posted @ 2017-03-11 10:49 XLLL 阅读(211) 评论(0) 推荐(0) 编辑