首页 » 网站推广 » php若何插入中文技巧_golang nsq源码解析u0026添加中文注释系列一

php若何插入中文技巧_golang nsq源码解析u0026添加中文注释系列一

访客 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

一贯也想用Go来写点什么项目,但github上趴了良久终极也没下决心去实际行动,也是恰巧有一天看到一篇文章先容NSQ实时行列步队的源码剖析,让我有了也要去深入学习的冲动。


学习大神的代码思想和整体架构

话说我一贯用着天下上最好的措辞PHP,总想深入做个源码剖析,每次都是刚开始就止步于此。


也想去看看kafka的源码,但是,但可是它利用Scala措辞编写,想看它还得重头来过。

php若何插入中文技巧_golang nsq源码解析u0026添加中文注释系列一

当当当。


重点来了

php若何插入中文技巧_golang nsq源码解析u0026添加中文注释系列一
(图片来自网络侵删)

当Go涌现让统统变得特殊不一样哈,咱也可以做点高大上的事情了 嚯嚯,难道我这是跪久了,是Golang让我也能站起来,翻身农奴把歌唱赶脚。


废话不说了开篇先走一遍流程 NSQ基本先容

基本先容

NSQ是由有名短连接做事商bitly用Go措辞开拓的实时处理系统,具有高性能、高可靠、忽略单点故障等优点,是一个非常不错的新兴的行列步队办理方案。
NSQ现在发展很快,已有多种措辞的客户端,GO和Python版本的客户端是官方出的,比较给力。

目前NSQ是一个成熟的方案,已在大规模生产环境下运用的产品。

开始进入状态把稳事变nsq利用go modules进行包管理,如对此办法不太理解,请看另一篇文章:http://shuchimao.com/2019/12/10/go-modules利用/ 这里我做了详细先容,以及IDE如何配置利用1. 概述

NSQ供应了三大组件以及一些工具,三大组件为:

1.nsqd NSQ紧张组件,用于存储以及分发。
2.nsqlookupd 用于管理nsqd集群拓扑,供应查询nsqd主机地址以及做事终极同等性3.nsqadmin 供应了常规管理以及查询集群中topc/channel/node等
2. 准备事情

下载源码:https://github.com/nsqio/nsq

3. 源码目录构造

├── Dockerfile # docker脚本 镜像构建├── Gopkg.lock├── Gopkg.toml├── LICENSE├── Makefile # 编译指令集├── README.md├── apps # NSQ运用程序入口干系文件├── bench # 批量测试脚本├── bench.sh # 批量测试脚本├── contrib├── coverage.sh # 覆盖率测试├── dist.sh├── fmt.sh├── go.mod # go modules 源码依赖├── go.sum #供应了安全性校验(自动天生可以不用管它)├── internal # 内部利用的干系包/组件等,对外部不可见├── nsqadmin # 用于管理以及查看集群中的topic、channel、node等信息├── nsqd # NSQ紧张组件,用于存储以及分发├── nsqlookupd # 用于管理nsqd集群拓扑,供应查询nsqd主机地址做事以及做事的终极同等性├── test.sh 测试脚本└── travis.sh # travis脚本

后面会对干系目录逐一展开讲解,紧张剖析目录:apps、nsqadmin、nsqd、nsqlookupd

zhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq$ tree apps/apps/├── nsq_stat # 节点数据状态│ └── nsq_stat.go├── nsq_tail # 消费数据打印到掌握台│ └── nsq_tail.go├── nsq_to_file # 消费数据到文件│ ├── file_logger.go│ ├── nsq_to_file.go│ ├── options.go│ ├── strftime.go│ └── topic_discoverer.go├── nsq_to_http # 消费数据由http办法发送│ ├── http.go│ ├── nsq_to_http.go│ └── nsq_to_http_test.go├── nsq_to_nsq # 消费数据然后再由其他生产者生产│ └── nsq_to_nsq.go├── nsqadmin # 用于实时查看集群统计数据(并且实行各种各样的管理任务)│ └── main.go├── nsqd # 吸收、分发到消费者客户端│ ├── README.md│ ├── main.go│ ├── main_test.go│ └── options.go├── nsqlookupd # 管理拓扑信息并供应终极同等性的创造做事│ ├── README.md│ └── main.go└── to_nsq ├── README.md └── to_nsq.goapps目录:运用程序入口干系文件后续重点先展开先容app/nsqd目录来带动其他包nsqd是一个守护进程,卖力吸收、排队、投递给客户端,并不担保的严格顺序,nsqd默认监听一个tcp端口(4150),一个http端口(4151)以及一个可选端口https。


(这章先带动一下即将要展开剖析的nsqd先容)

有兴趣的各位现在就可以手动利用源码文件来编译一下nsqd,下面我逐一跑跑一次.按照我步骤来绝对能跑起来,我也会把碰着的坑贴出来(实在不是坑,是我学艺不精,对go还是半知半解)。

cd apps/nsqdzhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq/apps/nsqd$ go build main.go options.gozhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq/apps/nsqd$ lltotal 21736drwxr-xr-x 7 zhangliang staff 224 12 21 23:24 ./drwxr-xr-x 11 zhangliang staff 352 12 21 22:33 ../-rw-r--r-- 1 zhangliang staff 146 12 21 22:33 README.md-rwxr-xr-x 1 zhangliang staff 11103212 12 21 23:24 main-rw-r--r-- 1 zhangliang staff 1820 12 21 22:33 main.go-rw-r--r-- 1 zhangliang staff 711 12 21 22:33 main_test.go-rw-r--r-- 1 zhangliang staff 8193 12 21 22:33 options.gozhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq/apps/nsqd$ ./main[nsqd] 2019/12/21 23:24:58.588553 INFO: nsqd v1.2.1-alpha (built w/go1.11.4)[nsqd] 2019/12/21 23:24:58.588635 INFO: ID: 210[nsqd] 2019/12/21 23:24:58.588961 INFO: NSQ: persisting topic/channel metadata to nsqd.dat[nsqd] 2019/12/21 23:24:58.590178 INFO: TCP: listening on [::]:4150[nsqd] 2019/12/21 23:24:58.590253 INFO: HTTP: listening on [::]:4151

编译为二进制文件在运行main

zhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq/apps/nsqd$ go run main.go options.go[nsqd] 2019/12/21 23:27:10.553048 INFO: nsqd v1.2.1-alpha (built w/go1.11.4)[nsqd] 2019/12/21 23:27:10.553115 INFO: ID: 210[nsqd] 2019/12/21 23:27:10.553841 INFO: NSQ: persisting topic/channel metadata to nsqd.dat[nsqd] 2019/12/21 23:27:10.554708 INFO: TCP: listening on [::]:4150[nsqd] 2019/12/21 23:27:10.554824 INFO: HTTP: listening on [::]:4151

直策应用go run运行

zhangliang@zhangliang:~/workspace/webapps/golang/weibo/nsq/apps/nsqd$ go run ./[nsqd] 2019/12/21 23:28:19.923649 INFO: nsqd v1.2.1-alpha (built w/go1.11.4)[nsqd] 2019/12/21 23:28:19.923720 INFO: ID: 210[nsqd] 2019/12/21 23:28:19.924537 INFO: NSQ: persisting topic/channel metadata to nsqd.dat[nsqd] 2019/12/21 23:28:19.925513 INFO: TCP: listening on [::]:4150[nsqd] 2019/12/21 23:28:19.925887 INFO: HTTP: listening on [::]:4151

或者利用go run ./,这样就不用利用 go run main.go options.go

这里我记录了当时运行时碰着的问题 http://shuchimao.com/2019/12/20/编译nsqd-出错undefined-nsqdflagset/

晓亮 - 期待您的关注

嚯嚯,终于迈出了第一步,开遍和准备事情搞定了,相信随着我的脚步您现在可以把nsqd编译出来并已运行。

后续文章将正式开始nsqd源码剖析(实在网上有很多源码剖析,我这个系列重点是剖析每行代码并添加上注释,来看看大牛的代码思想和整体架构)由于本人技能有限,我基本上是手动测试源码,看牛人文章,剖析、摘录、凑集已剖析出来的思路,采取大口语办法书写。


望各位看官见谅

标签:

相关文章

Python编程从入门到精通,探索编程之美

编程已经成为现代社会的一项基本技能。Python作为一种简单易学、功能强大的编程语言,在我国教育领域备受关注。本文将从Python...

网站推广 2025-03-02 阅读1 评论0

Scum07代码编程之美与适用方法

编程已成为当今社会不可或缺的技能之一。Scum07代码作为一款经典的编程语言,在我国众多程序员中备受推崇。本文将深入解析Scum0...

网站推广 2025-03-02 阅读1 评论0

Linux环境下的前端代码运行优化与步骤

前端技术逐渐成为软件开发的核心。Linux操作系统因其稳定性、安全性、开放性等特点,成为众多开发者和企业青睐的运行环境。本文将从L...

网站推广 2025-03-02 阅读1 评论0