文档章节

nsq 问题

昏鸦
 昏鸦
发布于 2014/03/25 16:15
字数 181
阅读 113
收藏 0

在nsq 进行topic get的时候都会对map进行枷锁

func (n *NSQD) GetTopic(topicName string) *Topic {
    n.Lock()
    t, ok := n.topicMap[topicName]
    if ok {
        n.Unlock()
        return t
    } else {
        t = NewTopic(topicName, &Context{n})
        n.topicMap[topicName] = t

        log.Printf("TOPIC(%s): created", t.name)

        // release our global nsqd lock, and switch to a more granular topic lock while we init our
        // channels from lookupd. This blocks concurrent PutMessages to this topic.
        t.Lock()
        n.Unlock()
        // if using lookupd, make a blocking call to get the topics, and immediately create them.
        // this makes sure that any message received is buffered to the right channels
        if len(n.lookupPeers) > 0 {
            channelNames, _ := lookupd.GetLookupdTopicChannels(t.name, n.lookupHttpAddrs())
            for _, channelName := range channelNames {
                t.getOrCreateChannel(channelName)
            }
        }
        t.Unlock()

        // NOTE: I would prefer for this to only happen in topic.GetChannel() but we're special
        // casing the code above so that we can control the locks such that it is impossible
        // for a message to be written to a (new) topic while we're looking up channels
        // from lookupd...
        //
        // update messagePump state
        select {
        case t.channelUpdateChan <- 1:
        case <-t.exitChan:
        }
    }
    return t
}


© 著作权归作者所有

共有 人打赏支持
昏鸦
粉丝 7
博文 182
码字总数 59043
作品 0
程序员
私信 提问
NSQ 的 PHP 客户端 - php-nsq

php-nsq php-nsq 是nsq的php客户端,采用c扩展编写,性能和稳定性。 安装 : 请提前安装libevent Dependencies: libevent (apt-get install libevent-dev ,yum install libevent-devel) 1. s......

匿名
06/21
0
0
How we redesigned the NSQ- 其他特性及未来计划

在系列文章前面几篇中,介绍了 NSQ 改造的过程和几个基础特性,本文中我们继续介绍几个高级特性及其使用场景,这些都是结合有赞业务场景总结提炼出来的重要功能。 NSQ 拓展消息格式的设计 有...

有赞技术
03/30
0
0
NSQ:分布式的实时消息平台

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版。 NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,...

hejunyi1204
2015/08/14
0
0
nsq 使用笔记

nsqd 出现问题 https://github.com/nsqio/nsq/issues/691 https://github.com/nsqio/nsq/issues/506 nsqadmin 在访问的时候报错误 这个错误就是DNS访问出了问题。 解决方法: 使用 -broadca...

solate
2016/11/01
137
0
去中心化分布式服务实时消息平台-NSQ

NSQ是一个基于Go语言的开源的分布式实时消息平台 NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架构,可以每天处理数以亿计的实...

kiwisoft
2016/10/27
22
0

没有更多内容

加载失败,请刷新页面

加载更多

【HAVENT原创】NodeJS 两个模块进行 RSA 加密解密(匹配Java RSA)

业务逻辑需要使用 NodeJS 进行公钥加密传输给 Java 后端进行私钥解密,但是默认 NodeJS 使用的 RSA padding 模式与 Java 的不一致,所以需要配置。 不啰嗦,上代码,分别用 crypto 和 node-r...

HAVENT
4分钟前
0
0
Notification通知栏

目录介绍 1.Notification简单概述 2.Notification通知用途 3.Notification的基本操作 3.1 Notification创建必要的属性 3.2 Notification简单创建步骤 3.3 关于setSmallIcon()与setLargeIcon(...

潇湘剑雨
13分钟前
0
0
云环境所面临的安全威胁

为了云计算的健康发展和等级保护工作在新形势下顺利推进,就不能忽视对云计算面临的各类安全威胁的研究和分析,并制定和建立相应的等级保护政策、技术体系,应对即将到来的云浪潮。在云环境中...

linuxCool
13分钟前
0
0
server unexpectedly closed network connection

2011-10-04 01:17:05 今天用PUTTY或winscp远程连接服务器时, 均提示如下错误server unexpectedly closed network connection 服务器防火墙已经关闭, sshd.conf中的USEDNS也设为了no, 重启ssh...

爱吃窝窝头
27分钟前
0
0
配合OAuth2进行单设备登录拦截

要进行单设备登录,在其他地点登录后,本地的其他操作会被拦截返回登录界面。 原理就在于要在登录时在redis中存储Session,进行操作时要进行Session的比对。 具体实现,假设我们的OAuth 2的登...

算法之名
32分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部