nsq源码分析

nsq使用的TOML配置文件规范文档中文版

倾然丶 夕夏残阳落幕 提交于 2020-04-15 20:31:44
【推荐阅读】微服务还能火多久?>>> 在阅读 nsq 源码的时候,发现nsq使用 TOML 配置文件规范。顺带翻译了大部分。采用英中文混排的方式,这样比较容易理解。 toml-lang/toml TOML Tom's Obvious, Minimal Language. 直观的,最小化的语言 By Tom Preston-Werner. Latest tagged version: v0.2.0 . Be warned, this spec is still changing a lot. Until it's marked as 1.0, you should assume that it is unstable and act accordingly. Objectives TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. TOML is designed to map unambiguously to a hash table. TOML should be easy to parse into data structures in a wide variety of languages. 最小化配置文件格式,直观的语意,很容易阅读

NSQLookupd Main方法分析

送分小仙女□ 提交于 2019-12-01 09:50:21
上一篇 http://my.oschina.net/astute/blog/296955 已经分析了 nsqlookupd 启动时的命令行解析,最终构造了 NSQLookupd 结构体,这是一个很重要的结构体。 type NSQLookupd struct { options *nsqlookupdOptions // 命令行参数 tcpAddr *net.TCPAddr // tcp 端口 httpAddr *net.TCPAddr // http 端口 tcpListener net.Listener httpListener net.Listener waitGroup util.WaitGroupWrapper DB *RegistrationDB } 这篇文章分析下 daemon.Main() 执行过程 1、创建 context,内部只有一个指向NSQLookupd的指针 context := &Context{l} 2、创建 listener;Listen 方法支持面向流的监听,包括 unix domain stream socket。 tcpListener, err := net.Listen("tcp", l.tcpAddr.String()) 3、创建 tcpServer struct,内部只含有一个 context 指针,为什么需要对 NSQLookupd

nsqlookupd 入口文件分析

ぐ巨炮叔叔 提交于 2019-11-30 04:45:16
nsq 中 nsqlookupd 角色相对简单,适合作为分析 nsq 的入口 apps/nsqlookupd/nsqlookupd.go nsqlookupd 是一个独立的程序,所以放到 apps 目录下,依赖内部包 nsqlookupd, util,外部包: github.com/BurntSushi/toml # TOML是一种配置文件规范,此包是golang的解析包 github.com/mreiferson/go-options # 把命令行和配置文件参数注入到struct中的工具包,只有一个文件 关键代码解析 1、全局变量定义 go 中命令行参数成为 flag,flag 的集合成为 FlagSet,解析命令行参数之前需要先创建 FlagSet,定义每一个 flag,如下面的全局变量所示,同时提供了重要的默认值 var ( flagSet = flag.NewFlagSet("nsqlookupd", flag.ExitOnError) config = flagSet.String("config", "", "path to config file") /////////////// ) 2、命令行参数解析 flagSet.Parse(os.Args[1:]) os.Args 是所有的命令行参数;os.Args[0] 是执行程序的全路径名; flagSet.Parse