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

标签:Comet

共 3 篇相关文章

IT 累计浏览 3,566

构建C1000K的服务器(2) – 实现百万连接的comet服务器

这篇讲的是作者如何从零实现一个支持百万并发连接的Comet服务器。在解决了系统内核参数调整的基础问题后,文章将焦点转向了具体的应用实现。 作者选择用C/C++和libevent来构建核心,重点在于如何高效管理百万级的连接与通道。一个巧妙的设计是:服务器启动时便预先分配好100万个通道对象,而动态的订阅者则通过内存池管理,这使得初始内存占用控制在24MB。 最吸引人的是文章展示的实测数据。通过逐步增加连接数进行压力测试,结果非常直观:每个Comet连接大约只消耗2.7KB内存。最终,在支撑100万空闲连接时,进程总内存占用约2.7GB,而CPU使用率维持在0%。这清晰证明了该架构在高并发、低活跃度场景下的高效性。 项目的代码已在GitHub开源,文章提供的测试方法和详细数据,为需要构建类似长轮询服务的开发者提供了一个扎实的参考范例。

IT 累计浏览 1,838

在线状态服务在网站系统中的应用

这篇讲的是如何为一个百万级同时在线、日均亿级PV的网站构建高效的在线状态服务。作者从前篇Facebook聊天架构分析中提取出“在线状态服务器”这一通用模块,指出在普通网站中,它主要维护用户活跃列表,通常通过客户端定时发送心跳包来实现。 挑战在于,当用户量巨大时,服务需要承受极高的心跳包请求压力。文章对比了三种实现思路:最常见的PHP+MySQL方案会因数据库成为瓶颈;改用Redis虽能缓解存储压力,但PHP本身处理能力有限;最终,作者提出用C/C++开发专用HTTP服务器,整合精简协议处理与高速内存数据结构,结合libevent等库,有望在单机上轻松达到每秒万级请求的处理能力。 文章从实际性能瓶颈出发,逐步推导出一个针对性的技术方案,不仅分析了不同技术栈的优劣,也给出了具体的性能预期。文末作者还邀请有兴趣的开发者一起交流实现。

IT 累计浏览 6,078

实现一个简单的服务端推方案

这篇文章解决的是客户端与服务端之间实时通信的经典问题。作者开门见山地指出,传统的客户端轮询(Polling)方式存在着请求频繁、实时性差且浪费资源的痛点,为了解决这一问题,服务端推送(Push)技术应运而生。 文章的核心是深入讲解了目前流行的 Comet 实现方式——长轮询(Long Polling)。它并非一种全新的协议,而是巧妙地“伪装”成普通的 HTTP 请求:客户端发起请求后,服务端会hold住这个连接,直到有新数据产生或超时才返回响应,之后客户端再立即发起下一次请求。通过这种方式,服务端得以在需要时“主动”将信息送达客户端,极大地提升了交互的实时性与效率。 对于想要在项目中实现简单消息通知、实时数据更新等功能的开发者来说,这篇文章提供了一个清晰、易于落地的技术思路。它不仅解释了长轮询的工作原理,也隐含了对其优缺点的讨论,帮助读者在长轮询、SSE、WebSocket等方案中做出更合适的技术选型。