golang
文章平均质量分 65
FAS_2019
这个作者很懒,什么都没留下…
展开
-
etcd 2.3.7启动流程分析
etcd总共有两种模式。一种是proxy,一种是作为kvstore,这里主要记录了etcd作为kvstore的启动流程,etcd的启动入口在etcd.go/startEtcd,本章先粗略的描述下启动流程的重要环节,后面在详细描述没有重要环节里面的键步骤。首先为各个peer建立net.Listener,用于后续监听各个peer的连接。// 存储peers net.Listener的数组p...原创 2018-06-24 20:45:39 · 728 阅读 · 0 评论 -
etcd-raft leader选举 2.3.7
etcd-raft的周期性心跳信号产生定时器在扩展的raftNode(raft.node实现raft.Node接口)节点启动,由于raftNode节点一般为扩展etcd-raft算法的结合需求的可定制类,之所以把tick的产生信号放在raftNode主要是方便修改心跳超时时间时不用修改raft协议核心代码,可以见EtcdServer的raftNode:// etcd-2.3.7/etcdser...原创 2018-06-29 13:38:27 · 1141 阅读 · 0 评论 -
etcd-raft 2.3.7 raft peer间的交互通信流程
在写etcd-raft的leader选举的那篇文章时,每次牵扯到消息接收和发送都用”接收到消息”、“把消息发送”出去这样的字眼给代替了,感觉有那么一点的别扭,这节主要描述下etcd的消息发送流程。 在介绍信息交互流程之前先介绍几个比较关键的结构体类型以及里面关键嵌入成员: EtcdServer :type EtcdServer struct { // etcdserver中用于...原创 2018-06-29 20:17:41 · 1130 阅读 · 1 评论 -
etcd 2.3.7请求响应流程分析
以对etcd键值的操作请求为例介绍下etcd的请求的开始处理到响应的大体流程,etcd中处理的kv请求的handler为keysHandler,由于keysHandler最终作为http请求的处理函数,所以请求开始处理的入口为ServeHTTP:func (h *keysHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {...原创 2018-06-25 14:37:38 · 580 阅读 · 0 评论 -
etcd-raft 2.3.7 raft 日志复制 log replication 以及心跳Heartbeat
raft的日至复制和etcd-raft的leader选举 “`原创 2018-06-30 17:31:30 · 918 阅读 · 0 评论 -
golang context用法详解
最初接触golang http源码的时候就发现有一个比较特别的package,顺便把它的源码给看了下,了解下它的工作原理,并且在后面学习etcd源码的时候发现几乎每一个回调相关的函数都会有一个ctx参数,今天闲下来了这么常用的东西还是做下笔记为好。 context包在golang源码的golang.org/x/net/context目录下,context主要用在结束若干个相互具有父子(主...原创 2018-06-28 09:06:38 · 4697 阅读 · 0 评论 -
golang 六种排序算法-快速排序、冒泡排序、交换排序、插入排序、归并排序以及堆排序
六种排序方式的注意点以及实现步骤都在代码里面,实现代码如下:package arraysortimport ( "fmt")// 数组的开闭原则:前闭后开// 查找start到end内最小的元素下标func FindMinElemIndex(arr []int, start, end int) int { mini := start for index ...原创 2018-06-28 18:37:58 · 394 阅读 · 0 评论