摘要: 我制作的一些系列课程,都可以通过该导航快速跳转。 阅读全文
posted @ 2020-11-09 12:06 梁天 阅读(393) 评论(0) 推荐(0) 编辑
摘要: diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)T 阅读全文
posted @ 2021-10-12 15:37 梁天 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 cha 阅读全文
posted @ 2021-10-08 21:02 梁天 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 这篇文章我们就正式的开始分析nsq的代码了,上一篇给大家介绍了下nsq的特性和功能。再分析代码的同时,大家可以比对着我写的nsq精注版代码一遍看一遍调试。这样的效果更佳。 nsq精注版地址:https://github.com/gwyy/nsq-learn 下面进入正题,nsqd的主函数位于apps 阅读全文
posted @ 2021-09-30 16:16 梁天 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 简介 NSQ 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 特性 分布式: 它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展: 它支持水平扩展 阅读全文
posted @ 2020-12-09 15:59 梁天 阅读(160) 评论(0) 推荐(0) 编辑
摘要: Handler //86 type Handler interface { ServeHTTP(ResponseWriter, *Request) } Handler 是个接口,只要结构体有了 ServeHTTP 这个方法,都可以实现这个接口。 ServeMux & DefaultServerMux 阅读全文
posted @ 2020-12-08 17:12 梁天 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 我们继续看,直接进入ListenAndServe函数 func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.Lis 阅读全文
posted @ 2020-12-07 22:44 梁天 阅读(83) 评论(0) 推荐(1) 编辑
摘要: 首先,熟悉http协议的都知道,http协议是基于TCP实现的。 http服务器的工作方式大概就是监听socket端口,接受连接,获取到请求,处理请求,返回响应。 所以,对应的会有几个部分 Request:用户请求的信息。post、get、url等这些信息 Response: 返回给客户端的信息 C 阅读全文
posted @ 2020-12-07 22:36 梁天 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 垂直分屏:command + d 水平分屏:command + shift + 阅读全文
posted @ 2020-11-11 18:10 梁天 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 上一篇说了以命令行方式执行了pprof,这次我们学习以web方式运行pprof. 下面看个例子: var datas []string func main() { go func() { for { log.Printf("len:%d",Add("gwyy")) time.Sleep(time.S 阅读全文
posted @ 2020-10-13 10:44 梁天 阅读(330) 评论(0) 推荐(0) 编辑
摘要: pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助 阅读全文
posted @ 2020-10-13 10:28 梁天 阅读(1851) 评论(0) 推荐(0) 编辑
摘要: 名词解释: QPS(Query per second 每秒处理完的请求数) 什么是wrk 看下他GitHub上的介绍:https://github.com/wg/wrk wrk is a modern HTTP benchmarking tool capable of generating sign 阅读全文
posted @ 2020-10-12 11:40 梁天 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 最近一直在看k8s, 买了个ecs打算安装个k8s玩玩。众所周知,k8s分为 master 节点和node节点。如果完整安装需要好几台服务器,但是k8s官方有提供个人学习,使用的minikube安装,今天我们也是用此工具来快速搭建我们的k8s环境。 点击可跳转官服文档查看 minikube 安装:  阅读全文
posted @ 2020-09-18 23:22 梁天 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 最近一直在写go, switch说实话用的不算多。但是今天用了下发现go的switch可真不太一样啊。 无需break func main() { i := 0 switch i { case 0: fmt.Println("0000000000") fmt.Println("0") case 1: 阅读全文
posted @ 2020-09-14 23:13 梁天 阅读(1454) 评论(0) 推荐(0) 编辑
摘要: golang中的select语句格式如下 select { case <-ch1: // 如果从 ch1 信道成功接收数据,则执行该分支代码 case ch2 <- 1: // 如果成功向 ch2 信道成功发送数据,则执行该分支代码 default: // 如果上面都没有成功,则进入 default 阅读全文
posted @ 2020-09-07 23:49 梁天 阅读(6220) 评论(1) 推荐(1) 编辑
摘要: 将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同。如编写main包结构如下: main | main.go | show.go 在main.go中编写了main函数,main函数调用了在show中定义的函数或变量。到此和一般的go包都一致。但是当运行go run mian 阅读全文
posted @ 2020-08-24 00:35 梁天 阅读(619) 评论(0) 推荐(0) 编辑