最近在看etcd的相关源码,从简单的raftexample进行代码入手是一个不错的方案。相应代码入口在etcd-io/etcd/contrib/raftexample,建议可以先从github上将对应clone下来对照着来会好些。 raftexample大致流程图 我尝试用过先整理整个大概框架,然后再通过细分讲解里面具体模块的方式来说明这个服务的处理流程。 挑里面的重点,简单讲解下流程 这个示例中,我们Server支持PUT、GET、POST、DELETE共四种请求方式,分别对应的也是数据的更新和获取,配置的新增和删除; 步骤1、2,我们以其中的PUT方法展开说明,当收到client发送过来的数据更新或新建操作后,首先会调用我们的状态机(KVStore)向我们的通信管道(proposeC)发送数据; 步骤3,raftNode模块从管道proposeC中监听到有数据事件到来后会将该数据继续往下层模块node传递,node模块也算是我们raft协议里面实现的核心部分,在这个地方我们先记住它是预先对我们数据进行了一些简单处理。随后node模块会通过另外一个管道告知我们数据预处理好了; 步骤4,当raftNode收到从nkvode模块传递上来的准备就绪信息后就开始进行余下的操作,…

《人世间》 状态:100% finished 个人评价:力荐 偶然机会看到了这本书,第十届茅盾文学奖的作品之一,正好《中国之声》在推荐,遂看之。 一部115w字的知青类小说,从改革开放到2016年,跨越了整整五十年,往往很多人评价,这是一部适合五六十年代的人看的书,因为他们能产生更多的共鸣。没想到我竟会迷上,酒香不怕巷子深嘛,哈哈。梁晓声写这部作品是带了感情的,对特殊年代、动荡岁月的全景描述,整个人物的刻画是很容易把我带入其中的。书中没有很多明目张胆教书育人的做法,但是看完后却能让你不由自主的去思考。正如有人的评价:无论哪个国家,为什么名著多处于社会动荡的岁月?因为动荡岁月中的人,生活是跌宕的,经历是丰富的,感情是被熬炼过的。 对于这个评价,…

常常因为想看一下MySQL里面的配置my.cnf,却苦于找不到这个文件的存放位置。下面是常用的三个查找方法,快准狠! ps 利用ps命令。mysql启动时往往携带很多启动参数,看看是否有启动指定的配置文件,命令如下: ps aux|grep mysql 命令 ps aux|grep mysql|grep 'my.cnf' 输出 fdipzone 25174 0.0 0.0 3087244 600 ?? S 4:12下午 0:…

本文的总结源于林晓斌在极客时间里面的课程,为避免产生商业问题,我只是用于个人学习总结。 原文地址:https://time.geekbang.org/column/article/69862 小结 根据加锁范围:MySQL里面的锁可以分为:全局锁、表级锁、行级锁 全局锁 对整个数据库实例加锁 MySQL提供全局读锁的方法:flush tables with read lock(FTWRL) 这个命令可以使整个库处于只读状态,使用该命令之后,数据更新语句、数据定义语句和更新类事务的提交语句等操作都会被阻塞。 使用场景:全库逻辑备份 风险: 如果在主库备份,在备份期间不能更新,…