谁说 PHP 不能搞长连接?

栏目: PHP · 发布时间: 7年前

内容简介:据说,php是世界上最好的语言?画外音:phper说,不服可以点赞来辩。如果站点架构满足以下几点:

据说,php是世界上最好的语言?

画外音:phper说,不服可以点赞来辩。

如果站点架构满足以下几点:

  • 使用 php 这类脚本语言开发

  • 需要连接后端服务,例如RPC服务、memcache、 redis

  • 流量非常大

此时,通过短连接访问RPC服务、mc、redis会出现什么问题呢?

谁说 PHP 不能搞长连接?

典型的web架构如上:
(1) 最前端是APP或者web页面;
(2) 服务器上层是web-server进行接入;
(3) php调用后端,完成业务逻辑,拼接页面;
(4) 最后端是服务、缓存、数据库;

php作为脚本语言,不像C++/Java那样进程常驻,所以它连接后端的服务都是使用短连接。

画外音:有朋友说,可以用C写扩展?

谁说 PHP 不能搞长连接?

上图是一种典型场景,站点php部署在机器A上,缓存memcache部署在机器B上,之间通过短连接通信,过程为:
(1) php建立tcp短连接;
(2) 按照memcache协议发送数据;
(3) 接收memcache返回的数据;
(4) php关闭tcp短连接;

在流量小时,上述过程没有任何问题,当网站流量非常大的情况下,短连接可能会成为性能瓶颈, 有什么优化办法吗?

画外音:建立连接,销毁连接很耗时。

话锋一转, 什么是 UNIX Domain Socket

UNIX Domain Socket 是一种IPC机制,它 不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答 等,只是将应用层数据从一个进程拷贝到另一个进程。

画外音:IPC, Inter-Process Communication , 进程间通信。

它可以用于 同一台主机 上两个没有亲缘关系的进程,并且是全双工的,提供可靠消息传递(消息不丢失、不重复、不错乱)的IPC机制。

画外音:亲缘关系是指,父子进程或者兄弟进程这种“特殊的”进程关系。

可以看到, UNIX Domain Socket 的效率会远高于tcp短连接,但它只能用于同一台主机间的进程通讯,而 php应用和后端服务往往是部署在不同的机器上的 ,此时能否利用它来进行优化呢?

谁说 PHP 不能搞长连接?

优化后的简易架构图如上:

(1) 在php应用服务器上部署一个local-proxy;

(2) php与local-proxy之间使用 UNIX Domain Socket 来通讯;

(3) local-proxy与后端服务进行TCP长连接通讯;

这样就大大提升了通讯效率,免除了每次请求都要进行的建立与关闭tcp短连接的开销。

实现local-proxy有什么要注意的?

local-proxy非常注重 通用性 设计,因为php有RPC、mc、redis等多种后端:

  • 协议设计:local-proxy本身没有任何业务逻辑,只负责请求转发,上游发送过来redis协议,透传给后端的redis

画外音:这样,上游客户端不需要进行任何代码修改。

  • 通讯方式 :如上文所述,local-proxy与上游使用 UNIX Domain Socket 进行通讯,与下游使用tcp长连接进行通信

  • 高效框架:这种方案是为了解决tcp短连接的效率损耗,这样对local-proxy的效率要求就非常高,可以选用成熟高效的 网络框架 和tcp长连 接连接池 技术来实现

画外音:例如libevent。

  • 请求映射:需要将上游发过来的请求与发往下游的请求一一映射起来,这样才能正确的对应上请求包与响应包

思考过程比结论重要 ,希望对你有启示。

谁说 PHP 不能搞长连接?

架构师之路-分享 可落地 的技术文章

相关推荐:

Google FileSystem架构启示

Google MapReduce到底解决什么问题?

Google BigTable到底解决什么问题?


以上所述就是小编给大家介绍的《谁说 PHP 不能搞长连接?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web 2.0 Architectures

Web 2.0 Architectures

Duane Nickull、Dion Hinchcliffe、James Governor / O'Reilly / 2009 / USD 34.99

The "Web 2.0" phenomena has become more pervasive than ever before. It is impacting the very fabric of our society and presents opportunities for those with knowledge. The individuals who understand t......一起来看看 《Web 2.0 Architectures》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试