IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:message queue

共 11 篇相关文章

IT 累计浏览 2,717

PHP非阻塞实现方法

这篇讲的是如何让PHP在后端执行耗时任务时,仍能快速响应前端请求,避免阻塞页面加载。文章集中对比了8种实现非阻塞的技术方案。 作者从最简单的PHP-FPM内置函数`fastcgi_finish_request()`切入,它能立即结束会话,让后续代码在后台静默执行。对于需要发起异步HTTP请求的场景,介绍了利用`fsockopen()`设置非阻塞模式,以及使用cURL多句柄`curl_multi_*`函数的方法。 更进阶的方案涉及扩展与架构:`pcntl_fork()`能创建子进程来处理任务,优点是方便,但需要小心处理可能产生的僵尸进程;而Gearman和Swoole等异步框架则提供了更成熟的分布式任务处理能力。文章还提到了在高并发场景下常用的缓存与队列(如Redis)方案,将耗时操作解耦到后台执行。最后,也提及了通过系统命令或PHP原生协程(Coroutines)来实现的可能性。 总的来说,文章从不同技术层面剖析了PHP的非阻塞之道,为需要优化长任务处理的开发者提供了从快速实现到架构设计的多重选择。

IT 累计浏览 2,442

HQueue:基于HBase的消息队列

这篇讲的是阿里一淘团队如何用HBase“搭积木”,造出一个叫HQueue的分布式消息队列。作者从时间序列存储、MapReduce数据输入输出等场景的实际需求出发,选择了站在HBase的肩膀上。 核心思路很巧妙:把消息直接存为HBase的KV对,利用HTable的多Region实现高并发,用Coprocessor来保证消息ID的唯一有序,并处理消息的持久化。这样一来,HBase本身的自动Region迁移、动态负载均衡和数据持久化能力,就直接变成了HQueue的“超能力”,实现了自动容错、消息不丢和性能优化。 文章还详细拆解了它的设计细节:比如用PartitionID+Timestamp+SequenceID组合成RowKey来保证消息全局有序,通过不同的Scanner支持灵活扫描,以及在0.3版本后引入的基于ZooKeeper的订阅推送机制。整体来看,这为需要可靠消息队列又已有HBase技术栈的团队,提供了一个无需额外组件、可随HBase无缝升级的解决方案。

IT 累计浏览 2,865

记录一个并发引起的 bug

这篇讲的是作者在Skynet项目中遇到的一个由多线程并发引发的消息处理bug。作者坦言,完全把多线程程序写对是一件非常困难的事,而这次经历让他再次深刻体会到了这一点。文章并没有深入探讨具体的修复细节,而是聚焦于问题的发现与记录本身。 作者从实际开发中遇到的挑战出发,记录下了这个由并发导致的典型问题。这不仅仅是一个技术故障的报告,更像是一份开发者笔记,反映了多线程编程中那些容易遗漏的陷阱和调试的复杂性。字里行间透露出的经验之谈,对于同样在并发领域摸索的开发者而言,或许能带来一些共鸣与提醒——即便是经验丰富的开发者,也需要时刻对并发问题保持警惕。

IT 累计浏览 3,914

ZeroMQ的学习和研究

这篇讲的是ZeroMQ这个被誉为“史上最快”的消息队列技术。文章并未停留在泛泛介绍,而是直接切入其核心设计——一个基于异步消息传递模式的通信库,而非传统消息队列。 作者从ZeroMQ“无 Broker”的架构出发,点明了它与RabbitMQ、Kafka等传统消息队列的关键差异:后者通常依赖中心化的服务器进行路由和存储,而ZeroMQ则更像一组智能的Socket,在进程或线程间建立直连通道。这种设计带来了极低的延迟和极高的吞吐量,特别适合需要高频、低延迟通信的实时系统,比如交易系统或物联网数据流。 文章也指出了这种取舍:ZeroMQ不提供持久化、消息确认等企业级消息队列的高级功能,因此它更适合在受控环境内部署,而非作为需要持久保障的异步任务总线。对于开发者而言,这意味着在追求极致性能时,可能需要自行处理消息丢失或重试等逻辑。 总的来说,它清晰地界定了ZeroMQ的性能优势及其适用边界,帮助读者在“追求速度”与“需要复杂可靠性”之间做出合适的技术选型。

IT 累计浏览 1,915

关于memcacheq的几个命令

这篇讲的是三个非常实用的MemcacheQ运维监控命令,作者从日常运维需求出发,直接分享了能快速掌握队列核心状态的Shell指令。 第一个命令用于查看指定队列的**阻塞情况**。它通过周期性查询stats队列,并计算出待处理条目数(总数减去已处理数),让你实时看到是否有消息积压。 第二个和第三个命令则分别关注队列的**写入速率**和**消费速率**。它们同样通过轮询获取队列总条目数,但核心是通过awk脚本计算相邻两次查询之间的数值差,从而直观反映出单位时间内的新增消息量和被消费的消息量。 这三个命令结构简洁,都采用了“循环+网络查询+文本处理”的组合,作者巧妙地将监控逻辑嵌入到一行命令中。对于使用MemcacheQ作为消息队列的开发者和运维人员来说,这套命令提供了无需额外工具就能快速诊断队列健康状况、排查生产问题的直接手段。

IT 累计浏览 1,934

fqueue初步分析

这篇讲的是对国产开源消息队列 fqueue 的初步技术分析。作者将其定位为一个轻量级的 MQ,并直接对比了大家熟知的 memcacheq 和 Kestrel,指出它们都支持 memcached 协议。这使得熟悉 Memcache 操作的开发者可以快速上手。 文章的核心关注点在于 fqueue 本身的特性。作为一个“国产”方案,它或许在特定场景或社区支持上具有优势。其“轻量级”的特点,暗示它可能在部署、资源占用或运维复杂度上比一些重型消息队列更简单,适合中小规模或嵌入式应用场景。 作者在文中没有进行冗长的背景铺陈,而是将介绍和特点指向了项目的官方主页,将精力集中于自己的分析上。这种写法为想快速了解 fqueue 核心思想的读者提供了入口,项目主页也是获取最新信息和文档的直接渠道。

IT 累计浏览 2,775

从同步到异步,从匿名到实名

这篇讲的是作者从完成一本正则表达式技术书稿后的反思出发,结合自己从1997年至今超过二十年的上网亲历,提出对网络发展的两个核心趋势观察。 文章并非技术分析,而是一篇带有个人史色彩的散记。作者指出,早期的互联网更像“同步”工具(如IRC、早期论坛),要求参与者同时在线;而如今则彻底转向“异步”(如微信、微博、播客),信息可以自由异时传递。第二个趋势则从“匿名”走向“实名”——早期网络社区的匿名文化,与如今需要绑定手机号、鼓励实名认证的主流平台形成鲜明对比。 作者认为,这两个转变深刻地重塑了网络的气质、交流方式乃至社会结构。这篇文章的价值在于,它用具体而微的个人体验串联起技术变迁的大历史,为我们理解当下数字生活提供了一个清晰而感性的坐标系。

IT 累计浏览 6,207

各消息队列软件产品大比拼

这篇译文聚焦于对 RabbitMQ、ActiveMQ、HornetQ、Kestrel 和 Redis 这五款主流消息队列软件的性能评测。作者将它们置于相同硬件和网络条件下,设计了一系列基准测试,旨在量化对比它们在吞吐量、消息延迟、持久化能力等关键维度的表现。 文章的核心结论清晰而实用:在追求极高吞吐量的场景下,基于内存的 Redis 或 Kestrel 表现突出;当消息的持久化和可靠性成为首要需求时,ActiveMQ 和 RabbitMQ 则更为稳健;而 HornetQ 在两者间取得了不错的平衡。这些结论并非空谈,而是基于大量图表数据的实证分析得出。 对于正在为技术栈选型而困惑的团队,这篇文章提供了一份宝贵的“横评报告”。它不仅展示了各产品的性能上限,更指出了它们各自最擅长的应用场景,能帮助开发者根据业务对性能、可靠性、协议支持等方面的具体要求,做出更贴合实际的技术决策。

IT 累计浏览 6,218

消息分发的同步均衡策略

这篇讲的是淘宝实时数据传输平台 TimeTunnel 在处理海量消息分发时,如何确保消息在各个消费节点间保持同步与均衡的技术实践。 文章从一个实际场景切入:当消息被分发到多个消费者时,由于处理能力的差异或网络波动,很容易出现部分节点积压、部分节点空闲的不均衡状态,严重时会导致消息延迟甚至丢失。作者详细分析了这一问题的根因,即传统负载均衡策略难以应对实时流数据场景下的动态变化和强一致性要求。 为此,文章提出了其核心的“同步均衡策略”。该策略并非简单的轮询分配,而是引入了一个协调者角色,实时感知各消费者节点的消费进度(通过一个标记位)与处理能力。协调者会动态调整分发给每个节点的消息量,确保进度快的节点多分,进度慢的节点少分,同时利用同步机制保证分发过程中的消息不丢失、不重复。 从介绍来看,这个方案的关键在于它将“均衡”与“同步”紧密结合,实现了在动态环境下消息消费的实时公平性。这对于构建高可用、低延迟的数据管道提供了直接的工程思路。

IT 累计浏览 4,048

timetunnel之系统架构

这篇讲的是Timetunnel这款分布式消息中间件的整体架构设计。作者从淘宝内部复杂的数据传输与处理场景出发,介绍了Timetunnel如何为海量应用提供可靠、高效的消息通道。文章聚焦于Timetunnel的核心框架,清晰地勾勒出Broker Server、Broker Router、Broker Admin和Client等组件的角色与协作关系。它详细阐述了消息如何从生产端经过路由与负载均衡,最终被消费端接收的完整链路,并说明了其集群管理与监控的内在机制。目前Timetunnel已在淘宝得到实际应用并完成开源,为需要构建高吞吐、低延迟数据管道的团队提供了一个经过检验的参考方案。

IT 累计浏览 3,658

中庸之道的newsfeed的设计

这篇讲的是社交网络核心功能 Newsfeed 背后的一个基础架构权衡。作者从一个有趣的视角切入——万事万物的“中庸之道”,并将它映射到 Web 2.0 时代信息流的设计选择上。 文章剖析了两种经典思路:一种是“推”模式,即为每个消费者实时生成一份信息,优点是读取快,缺点是分发压力大;另一种是“拉”模式,即消费者登录时去主动拉取所有关注者的内容,优点是生产简单,缺点是可能给消费者带来延迟。作者指出,像 Facebook、Twitter 这样的系统,实际上都面对这个根本问题。 文章的核心观点在于,优秀的系统设计往往不是非此即彼的极端选择,而是像中庸之道一样,寻找最大与最小之间的合理结合点。作者引导读者思考如何在存储压力与读取速度、实时性与系统负载之间找到那个“极值点”与平衡区,从而创造出既合理又高效的架构。 这不仅是对一个具体技术问题的探讨,也启发了我们在面对任何复杂系统设计时,都应超越简单的二元对立,去思考更精妙的折中与融合。