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

标签:事件驱动编程

共 2 篇相关文章

IT 累计浏览 3,141

使用 AnyEvent 来实现同一个端口跑二种服务

这篇讲的是一个非常实际的网络访问问题:当 Linode 的 SSH 端口(22)被 GFW 过滤后,如何利用仍然开放的 80 端口,让同一台服务器同时提供 HTTP 和 SSH 两种服务。作者从这个痛点出发,实现了一个基于 Perl AnyEvent 库的协议识别与转发代理。 核心方案在于对连接建立时发送的初始数据包进行嗅探。对于 HTTP 请求,开头通常包含“GET”、“POST”等关键字;而对于 SSH 连接,像 SecureCRT 或 Bitvise 这样的客户端会主动发送包含“SSH”字样的协议头。程序根据这个特征,将连接动态转发到本地对应的 80 或 22 端口后端服务。作者基于国外一个 Perl 实现进行了重写和封装,利用 AnyEvent 的事件循环特性来构建高性能的异步代理。 最终效果就是,作者现在浏览的网页和远程管理都是通过这同一个 80 端口完成的。这个方案虽然牺牲了使用 CDN 的可能性,但在特定网络环境下,提供了一种巧妙且有效的端口复用思路。

IT 累计浏览 2,669

【外刊IT评论网】关于node.js语言的讨论

这篇讲的是Node.js被调侃为"Node on nails"(服务器上的Node)背后的技术现实与常见误解。作者并没有从语法细节入手,而是直接切入其核心运行模型——单线程事件循环。 文章剖析了Node.js如何通过非阻塞I/O处理高并发请求,同时也坦率指出其瓶颈所在:一旦遭遇CPU密集型计算,单线程模型会立刻成为性能的"钉子"。作者用具体场景说明,比如图像处理或加密操作,这类任务会阻塞整个事件循环,拖慢所有请求的响应。 核心观点在于,Node.js的威力与其限制同源。它天生适合I/O密集型的网络应用,能用较少资源支撑惊人吞吐量;但若用错地方,比如硬扛重计算任务,其表现反而不如传统多线程语言。这篇讨论为开发者提供了清晰的选型边界:理解工具的特性,才能把它用在真正合适的地方。