etcd 启动分析_Etcd源码分析: 启动篇

启动

启动从源码 /etcdmain/main.go 中的main函数开始

func Main() {

checkSupportArch() // 检查系统是否支持

if len(os.Args) > 1 { // 获取入参

cmd := os.Args[1] // 获取启动命令

if covArgs := os.Getenv("ETCDCOV_ARGS"); len(covArgs) > 0 {

args := strings.Split(os.Getenv("ETCDCOV_ARGS"), "\xe7\xcd")[1:]

rootCmd.SetArgs(args)

cmd = "grpc-proxy"

}

switch cmd {

case "gateway", "grpc-proxy":

if err := rootCmd.Execute(); err != nil {

fmt.Fprint(os.Stderr, err)

os.Exit(1)

}

return

}

}

startEtcdOrProxyV2()

}

上面仔细去看,前面是根据命令行输入的第一个参数去启动不同的代码逻辑

后面的startEtcdOrProxyV2()则是启动etcd server的函数

命令行输入

我们来查看一下etcd命令的使用帮助:

$ ./etcd -help

Usage:

etcd [flags]

Start an etcd server.

etcd --version //查看版本

Show the version of etcd.

etcd -h | --help //获取帮助

Show the help information about etcd.

etcd --config-file //设置配置文件

Path to the server configuration file.

etcd gateway //启动 L4 TCP网关代理

Run the stateless pass-through etcd TCP connection forwarding proxy.

etcd grpc-proxy //L7 grpc 代理

Run the stateless etcd v3 gRPC L7 reverse proxy.

可以看到有三个启动命令

./etcd //启动etcd服务

./etcd gateway start //启动tcp网关代理

./etcd grpc-proxy start //启动grpc网关代理

其中,代码中的rootCmd,这个是一个叫corba的在github上的开源库,它的设计目的是提供一个编写/生成交互式命令程序的框架.

简单的说,它就是可以添加命令和子命令的插件库,查看 gateway.go的源码可以发现

var (

rootCmd = &cobra.Command{ (1)

Use: "etcd",

Short: "etcd server",

SuggestFor: []string{"etcd"},

}

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值