内容简介:据说,php是世界上最好的语言?画外音:phper说,不服可以点赞来辩。如果站点架构满足以下几点:
据说,php是世界上最好的语言?
画外音:phper说,不服可以点赞来辩。
如果站点架构满足以下几点:
此时,通过短连接访问RPC服务、mc、redis会出现什么问题呢?
典型的web架构如上:
(1) 最前端是APP或者web页面;
(2) 服务器上层是web-server进行接入;
(3) php调用后端,完成业务逻辑,拼接页面;
(4) 最后端是服务、缓存、数据库;
php作为脚本语言,不像C++/Java那样进程常驻,所以它连接后端的服务都是使用短连接。
画外音:有朋友说,可以用C写扩展?
上图是一种典型场景,站点php部署在机器A上,缓存memcache部署在机器B上,之间通过短连接通信,过程为:
(1) php建立tcp短连接;
(2) 按照memcache协议发送数据;
(3) 接收memcache返回的数据;
(4) php关闭tcp短连接;
在流量小时,上述过程没有任何问题,当网站流量非常大的情况下,短连接可能会成为性能瓶颈, 有什么优化办法吗?
画外音:建立连接,销毁连接很耗时。
?
UNIX Domain Socket 是一种IPC机制,它 不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答 等,只是将应用层数据从一个进程拷贝到另一个进程。画外音:IPC, Inter-Process Communication , 进程间通信。
它可以用于 同一台主机 上两个没有亲缘关系的进程,并且是全双工的,提供可靠消息传递(消息不丢失、不重复、不错乱)的IPC机制。
画外音:亲缘关系是指,父子进程或者兄弟进程这种“特殊的”进程关系。
可以看到, UNIX Domain Socket 的效率会远高于tcp短连接,但它只能用于同一台主机间的进程通讯,而 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 不能搞长连接?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- TCP基础 —— 为什么建立连接需要三次握手,而断开连接则需要四次?能不能是三次? 原 荐
- 解决zabbix-agent二进制班不能连接使用docker搭建的zabbix-server
- ApiCloud开发SuperWebView——极光推送不能监听通知内容以及不能跳转的问题
- 有的便宜不能占
- golang不能使用debug
- 影像云,一个不能错失的时代
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!