1.etcd源码笔记 - 写在最前

2019-08-07  本文已影响0人  兰CC

一、准备工作

1. 下载源码

需要注意的是 ETCD 地址迁移之后,项目内的包名并未更名,

随便翻开一个源码文件的 import 部分,项目内部的引用路径写的还是旧的

import (
    ...
    "github.com/coreos/etcd/lease"
    ...
)

常规操作是会把该源码下载到 $GOPATH/src/github/etcd-io/etcd

如此操作,项目的内部引用应该是 github.com/etcd-io/etcd/lease ,才得搜得到正确引用。

但由于源码文件的 import 仍引用旧包名,所以实际下载后,项目内引用是会失败的。

有如下三种方式可以解决这个问题,

$GOPATH
   ├── bin
   ├── pkg
   ├── src
   │   ├── github
   │   │   └── etcd-io (源码下载的落地目录)
   │   │   └── coreos (软链,链接到上面 etcd-io)

2. 选择分支

选一个稳定版本即可,目前最新发布的是 3.3,就选择这个分支吧。

3. 下载依赖

用的是 glide 进行依赖管理,那就装个,然后 glide install 一下即可。

(go项目最头大的就是有很多依赖需要翻墙,好在我厂网络自带翻墙,给网络小哥哥比心。)

分支切到 release-3.3,会发现有个 grpc 的依赖有问题,需要打开 glide.yaml 添加之,

- package: github.com/grpc-ecosystem/go-grpc-middleware
  version: v1.0.0

然后 glide up 更新 glide.lock 文件,再 glide install 重新安装依赖。

4. 选择 debug 工具

一开始在 gdbdelve 两者之间选择。

本来要选择后者了,毕竟后者确实强大很多。

后来发现,常用的 intellj 自带的工具还不错,就放弃 delve 了。毕竟是要阅读源码,在控制台切来切去的,可读性差。

二、阅读路径

1. 了解功能

了解一个系统,当时得 由外及里,由简及繁

所以肯定得把 ETCD 是神马,以及提供的所有功能都轮一篇啦,至于怎么轮,就自由发挥吧。

2. 了解 raft

etcd 的亮点在于 使用 raft 协议解决了分布式一致性的问题,所以这个也是作为阅读代码前的基础。

3. 轮廓

笔者在厂里的工作有一部分是中间件开发,一个完整的中间件工程有以下几个部分,

粗略看了一下,ETCD 也基本上遵循了以上的项目结构,

综上所述,我们最好的方式是先了解 raft libraryraft demo,再了解 核心功能

上一篇 下一篇

猜你喜欢

热点阅读