nsq源码阅读(二)nsqlookup-1

本文详细介绍了nsqlookupd的启动过程,从Init到start,包括new options、读取启动参数、创建daemon并调用main函数。接着分析了TCPServer如何处理TCP连接和http Serve如何监听HTTP请求。当接收到退出信号时,通过exit函数优雅地关闭listener,确保安全退出。整个启动过程的日志信息也进行了展示。
摘要由CSDN通过智能技术生成

nsqlookupd 源码阅读(1)

daemon的启动过程
1. Init
2. start

func (p *program) Start() error {
    opts := nsqlookupd.NewOptions()
    flagSet := nsqlookupdFlagSet(opts)
    .......
    .......
    daemon := nsqlookupd.New(opts)
    daemon.Main()
    p.nsqlookupd = daemon
    return nil
}

(1) 首先new一个options结构

type Options struct {
    // 日志等级
    LogLevel  string `flag:"log-level"`
    // 日志前缀
    LogPrefix string `flag:"log-prefix"`
    // true 使用LogLevel 来设定日志等级,false 不允许,默认是DEBUG
    Verbose   bool   `flag:"verbose"` // for backwards compatibility
    // 日志接口
    Logger    Logger
    // 根据LogLevel 和 Verbose 来得到的真正的日志等级
    logLevel  lg.LogLevel // private, not really an option
    // 监听的tcp地址
    TCPAddress       string `flag:"tcp-address"`
    // 监听的http的地址
    HTTPAddress      string `flag:"http-address"`
    // 广播地址默认是 主机名hostname
    BroadcastAddress string `flag:"broadcast-address"`

    // 从上一次ping之后 生产者驻留在nsqlookup的时长
    InactiveProducerTimeout time.Duration `flag:"inactive-producer-timeout"`
    // tombstone的驻留时长
    TombstoneLifetime       time.Duration `flag:"tombstone、、 tombstone的驻留时长-lifetime"`
}
 func NewOptions() *Options {
    hostname, err := os.Hostname()
    if err != nil {
        log.Fatal(err)
    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值