摘要: 我制作的一些系列课程,都可以通过该导航快速跳转。 阅读全文
posted @ 2020-11-09 12:06 梁天 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 自定义类型 Go语言通过type关键字定义自定义类型。自定义类型是全新的类型。示例: // 将newInt定义为int类型 type newInt int func main() { var a newInt a = 100 fmt.Println(a) // 100 fmt.Printf("%T\ 阅读全文
posted @ 2021-11-09 11:48 梁天 阅读(1707) 评论(0) 推荐(0) 编辑
摘要: 经过前面几篇的学习,相信大家对nsq已经有了一个大概的了解,我在写这篇文章的时候也看了很多其他人写的教程,发现大家对于分析系统每个点写的很不错,但是都很少有整体串起来一起走一遍,所以,我打算分成2-3章来带着大家从nsq启动到创建一个topic,然后发一条消息,最后再开个消费者接收消息,中间的所有流 阅读全文
posted @ 2021-10-25 20:27 梁天 阅读(488) 评论(0) 推荐(0) 编辑
摘要: diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)T 阅读全文
posted @ 2021-10-12 15:37 梁天 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 cha 阅读全文
posted @ 2021-10-08 21:02 梁天 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 这篇文章我们就正式的开始分析nsq的代码了,上一篇给大家介绍了下nsq的特性和功能。再分析代码的同时,大家可以比对着我写的nsq精注版代码一遍看一遍调试。这样的效果更佳。 nsq精注版地址:https://github.com/gwyy/nsq-learn 下面进入正题,nsqd的主函数位于apps 阅读全文
posted @ 2021-09-30 16:16 梁天 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 简介 NSQ 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 特性 分布式: 它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展: 它支持水平扩展 阅读全文
posted @ 2020-12-09 15:59 梁天 阅读(652) 评论(0) 推荐(0) 编辑
摘要: Handler //86 type Handler interface { ServeHTTP(ResponseWriter, *Request) } Handler 是个接口,只要结构体有了 ServeHTTP 这个方法,都可以实现这个接口。 ServeMux & DefaultServerMux 阅读全文
posted @ 2020-12-08 17:12 梁天 阅读(256) 评论(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 梁天 阅读(189) 评论(0) 推荐(1) 编辑
摘要: 首先,熟悉http协议的都知道,http协议是基于TCP实现的。 http服务器的工作方式大概就是监听socket端口,接受连接,获取到请求,处理请求,返回响应。 所以,对应的会有几个部分 Request:用户请求的信息。post、get、url等这些信息 Response: 返回给客户端的信息 C 阅读全文
posted @ 2020-12-07 22:36 梁天 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 垂直分屏:command + d 水平分屏:command + shift + 阅读全文
posted @ 2020-11-11 18:10 梁天 阅读(1994) 评论(2) 推荐(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 梁天 阅读(793) 评论(0) 推荐(0) 编辑
摘要: pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助 阅读全文
posted @ 2020-10-13 10:28 梁天 阅读(4834) 评论(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 梁天 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 最近一直在看k8s, 买了个ecs打算安装个k8s玩玩。众所周知,k8s分为 master 节点和node节点。如果完整安装需要好几台服务器,但是k8s官方有提供个人学习,使用的minikube安装,今天我们也是用此工具来快速搭建我们的k8s环境。 点击可跳转官服文档查看 minikube 安装:  阅读全文
posted @ 2020-09-18 23:22 梁天 阅读(1951) 评论(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 梁天 阅读(3781) 评论(0) 推荐(1) 编辑