摘要: 按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标。本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进... 阅读全文
posted @ 2015-12-03 14:02 一束光 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 一:自动加载__autoload():注意:1:spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用。2:在 5.3.0 版之前,__autoload 函数抛出的异常不能被 cat... 阅读全文
posted @ 2014-07-03 15:28 一束光 阅读(394) 评论(0) 推荐(0) 编辑
摘要: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'string'] [[OPTIONA... 阅读全文
posted @ 2014-06-23 23:29 一束光 阅读(3709) 评论(0) 推荐(0) 编辑
摘要: 作为Web开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢? PHP工程师面临成长瓶颈 先明确这里所指的PHP工程师,是指主要以PHP进行Web系统的开发,没有使用其的语言工... 阅读全文
posted @ 2014-04-27 03:08 一束光 阅读(378) 评论(0) 推荐(1) 编辑
摘要: 一、define(“constant”, “hello world”);和const constant = “hello world”;的区别?(0).使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。(1).const用于类成员(或者接口成员)变量的定义,一经定义,不可修改。php5.3以上支持类外通过const定义常量,并且在使用命名空间时只能用这个来定义常量. define不可用于类成员变量的定义,可用于全局常量。比如:one.phptwo.phpfile1.php结果://Notice: Consta 阅读全文
posted @ 2013-10-21 12:25 一束光 阅读(766) 评论(0) 推荐(0) 编辑

一、常见组件和概念

组件/概念
说明
nsqd 消息接收、队列、分发,可以配置在有nsqlookupd的nsq集群中,更多详见
nsqlookupd 用于发现nsq集群中指定topic的nsqd们,更多详见
nsqadmin 网页界面,用于管理nsq,可以看到nsq的统计数据,包括队列积压数据,也可以新增/删除/暂停/清空topic和channel,更多详见
nsq_to_http 用于将指定topic下指定channel的消息,使用发送http请求的方式分发到指定url,更多详见
nsq_to_nsq 用于将指定topic下指定channel的消息分发到指定nsqd的指定topic,更多详见
topic 一个topic相当于一个消息队列
channel 一个topic可以有多个channel,每个channel都会消费每一条发给topic的消息

二、常见端口说明:

端口
组件
说明
4150 nsqd 一般用于发送消息到nsq队列(tcp连接),更多详见,如果使用的nsq是多台机器集群,不推荐在消费nsq消息时使用此配置,一是因为需要将所有nsqd地址都列出来,二是集群nsqd有调整时也需要变更此配置
4151 nsqd 一般用于发送消息到nsq队列(http协议),更多详见,请求示例:curl -X POST 'http://nsqd_ip:4151/pub?topic=your_topic' -d 'your_message'
4160 nsqlookupd 一般用不到
4161 nsqlookupd 一般用于发现nsq集群中指定topic的生产nsqd列表,更多详见,如果使用的nsq是多台机器集群,推荐在消费nsq消息时使用此配置,一般代码会自动与集群中的所有nsqd建立连接,当然也可以使用多个nsqd配置(不推荐)
4171 nsqadmin nsq管理界面,更多详见

三、常见参数说明:

参数
说明
topic 相当于消息队列名
channel 相当于消息队列子队列名,一个topic可以有多个channel,每个channel都会消费每一条发给topic的消息
max_in_flight 消费消息时,最大并发消费数配置,一般对于nsq集群而言,建议配置成nsqd数量的倍数,比如nsqd数量为3,而此参数配置为2,则有可能其中一个nsqd的消息永远都不被消费

四、nsqadmin界面常见参数说明:

参数
说明
参数
说明
Depth 消息积压数,在一个topic下新建一个channel后,新推送给该topic的所有消息都会发送到该channel,如果没有消费或消费速度小于生产速度,会产生积压
Memory + Disk 内存+磁盘消息积压数,nsq消息会优先放入内存中,当消息数超过mem-queue-size值(nsqd配置,一般建议此值不要设太大,以防内存使用超标)后,消息会写入磁盘
In-Flight 当前分发(消费)中的消息数
Deferred 重新入队或明确要延迟分发而未分发的消息数
Ready Count 当前连接最大并发消费数据,值为0时不会消费新的数据,最大值由消费配置的max_in_flight决定,一般对于nsq集群而言,消费使用nsqlookupd地址,max_in_flight数会被均匀地分到每个与nsqd建立的连接上,例如nsq集群有2个nsqd,与每个nsqd都建立一个连接,max_in_flight为20,则每个连接的最大Ready Count为10

五、使用经验

1、消息处理失败或超时(可配置超时时间)时会重新入队(由配置的消息最大重试次数决定),所以要保证代码的幂等性,且消费处理时间不宜太久,如果消费处理时间超过设置的超时时间且没有办法缩短,建议采用异步处理的方式,避免消息因处理超时而再次入队

posted @ 2023-03-30 14:19 一束光 阅读(170) 评论(0) 推荐(0) 编辑
摘要: NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。 nsq 有三个必要的组件nsqd、nsqlookupd、nsqadmin nsqd :负责接收消息,存储队列和将消息发送给客户端 nsqlookupd:主要负责服务发现、负责nsqd的心跳、 阅读全文
posted @ 2023-03-30 14:17 一束光 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 参考:https://www.jianshu.com/p/715647145664 阅读全文
posted @ 2023-03-30 14:15 一束光 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 一、topic结构体: 折叠源码 type Topic struct { // 64bit atomic vars need to be first for proper alignment on 32bit platforms messageCount uint64 //消息累计条数 后期查看每个 阅读全文
posted @ 2023-03-30 14:14 一束光 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 通过本文你将学到: nsq中TCP协议是怎么处理的? nsq是怎么应对升级版本的(通过增加商量协议号,使升级比较方便) nsq使用的网络字节序是什么形式的? TCP通信中为啥要处理粘包?怎么处理粘包?NSQ中又是怎么处理粘包的?http是怎么处理粘包的?若传输的是UDP是否会出现粘包的现象? 一、协 阅读全文
posted @ 2023-03-30 14:12 一束光 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 一、nsq基础指南 1、nsq介绍 NSQ是分布式实时消息队列。NSQ是分布式的、拓扑结构,具有无单点故障、故障容错、高可用性和保证消息的可靠传递等特点,容易配置和部署。 官网:https://nsq.io/ 2、nsq组件 组件/概念 端口 说明 nsqd TCP端口: 4150 HTTP端口:4 阅读全文
posted @ 2023-03-30 14:12 一束光 阅读(1431) 评论(0) 推荐(0) 编辑
摘要: INSERT ON DUPLICATE KEY UPDATE,影响的行数是多少? REPLACE INTO INSERT IGNORE INTO select into from 和 insert into select 的用法和区别,mysql是否支持insert into select ? 克隆 阅读全文
posted @ 2020-02-06 20:39 一束光 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1、Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Google生产环境运 阅读全文
posted @ 2019-12-31 10:44 一束光 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 一、目录结构 二、 阅读全文
posted @ 2019-11-05 10:32 一束光 阅读(415) 评论(1) 推荐(0) 编辑
摘要: 1.Python程序的执行过程 Python解释器(interpreter)在执行任何一个Python程序文件时,首先进行的动作都是先对文件中的Python源代码进行编译,编译的主要结果是产生的一组Python的字节码(byte code),然后将编译的结果交给Python虚拟机(Virtual M 阅读全文
posted @ 2018-09-08 23:28 一束光 阅读(1127) 评论(0) 推荐(0) 编辑

友情链接

CFC4N
点击右上角即可分享
微信分享提示