分类:: 后端

理解 Nsq (四)源码解析

Overview上一节我们介绍了 Nsq 的一些基本概念,那么我们从这节开始就单刀直入 Nsq 源码探个究竟。 本节先看 nsqd 的入口源代码文件 nsq/apps/nsqd.go 先看 main 方法吧: 123456func main() { prg := &program{} if err := svc.Run(prg, syscall.SIGINT,

理解 Nsq (三)基础概念

上一节中,我们成功编译了 nsq 和对应的基础组件,并使用配套的 cli 工具完成了简单的生产者消费者模型。那么在这一节中,我们就来详细地了解下 nsq 的一些基础概念吧。 本节我们主要来了解 nsq 的一些基础概念。 Featuresnsq 主要有以下功能: 支持分布式的拓扑结构,避免单点 支持无缝水平扩展(没有 broker 的概念) 低延迟(这个主要看benchmark) 负载均衡与消息多

理解 Nsq (二)初体验

上一节已经把 Golang 环境搭好了,这一节可以正常开搞。这一节我打算把 nsq 从源代码编译,然后简单试用下。 Install from source code第一步是下载源代码进行编译。 12345678910$ git clone [email protected]:nsqio/nsq.git $GOPATH/src/github.com/nsqio/nsq$ cd $GOPATH/src/gi

理解 Nsq (一)设置 Golang 开发环境

Nsq 是一个 Golang 实现的消息队列,现在应该特性已经比较稳定了。看了下代码量,还 OK,那么最近开始倒腾倒腾他。 开始倒腾之前,先把环境搭好,那么我来在我的两个主要工作环境上把 Golang 环境搭好。 macOS首先我在公司的电脑的 macOS 系统装上 Golang 吧,直接最新版本开怼:1brew install go 可以说安装是相当傻瓜化了。 准备一个 hello world

多级缓存的设计与实现

Overview 总览在高并发量的后端业务中,多级缓存是一个非常常见的设计。事实上,多级缓存策略在计算机硬件也是普遍存在的。 为什么会有多级缓存?通常缓存都是比原数据要小的,设立缓存的目的很简单:某些数据经常用到,我们不想每次都去最深的地方(这里一般是指数据库)去找,所以我们就在更方便取到数据的地方把这些数据保存起来。 那么,为什么要用多级缓存呢?对于所有的数据来说,并不是每一份数据使用的频率都一

为什么不建议在 Redis 使用大 Key

Preview公司里某位工程师小斌发现在一个 Redis 集群中的 some_big_list 经常出现慢查询,而且 QPS 特别高。初步定位是出现了一个热点的 Key。12newexplore> llen some_big_list500000 上面的命令发现,这个 some_big_list 是一个大 Key,导致 Redis Server 的服务器 CPU idle 很低,结果出现了慢