专栏名称: 架构师之路
架构师之路,坚持撰写接地气的架构文章
目录
相关文章推荐
架构师之路  ·  分布式系统一致性为什么难做? | ... ·  2 天前  
架构师之路  ·  PHP使用local-proxy的一种思路! ... ·  3 天前  
架构师之路  ·  秒杀架构优化,掌握这一个核心原则! | ... ·  1 周前  
美团技术团队  ·  榜单揭晓|2024年美团第二届低空经济智能飞 ... ·  6 天前  
51好读  ›  专栏  ›  架构师之路

PHP使用local-proxy的一种思路! | 架构师之路(19)

架构师之路  · 公众号  · 架构  · 2024-12-09 12:01

正文

《架构师之路:架构设计中的100个知识点》
19.脚本语言使用长连接的一种思路

脚本类语言,例如PHP,不能像C++/Java那样能搞服务常驻内存,不能搞长连接?


为什么脚本语言要搞长连接?

脚本类语言每次访问后端数据库,服务,缓存,都需要经历上述四个步骤:

1. 建立连接;

2. 发送数据;

3. 接受数据;

4. 销毁连接;

在吞吐量很高的情况下,TCP建立与断开连接的开销不能忽略了,有可能成为性能瓶颈。


像PHP可以用swoole来优化解决,但其仅限于PHP。脚本语言有没有通用的长连接优化方法呢?


那你可以搞一个本地服务local-proxy,PHP与本地服务利用UDS通讯,本地服务与缓存用TCP长连接通讯。这样脚本语言就可以避免每次访问缓存建立连接销毁连接。


什么是UDS?

UNIX Domain Socket,是一种进程间IPC通讯机制,它不需要经过网络协议栈,不需要打包拆包、不需要计算校验和等,它只是将应用层数据从一个进程拷贝到另一个进程。它可以用于同一台机器上两个没有亲缘关系的进程通讯,不但全双工,还保证消息不丢,不重,不错乱

如上图所示,我们在PHP应用服务器上部署一个local-proxy

1. PHP与local-proxy之间使用UDS通讯;

2. local-proxy与缓存之间用TCP长连接通讯。


local-proxy的实现要点是什么?

1. 没有任何业务逻辑,只转发请求;

2. 复用缓存协议,这样调用缓存的业务代码不需要大幅度修改。如果封装了缓存访问client,只要要升级client,将访问缓存升级为访问local-proxy,这样业务代码甚至都不用动。


你会发现,非常非常多基于server实现的缓存,数据库中间件,都是这两个思路。


知其然,知其所以然。

思路比结论更重要。

补充阅读材料:
《Swoole:PHP 协程框架》
https://www.swoole.com/
不多介绍了,硬生生为PHP续命的技术。

==全文完==


20年,系列1:
流量从10万到10亿,遇见的80个架构问题》
以实践为主线,结合讲解架构知识点几十个小时视频内容,已完结

今年,系列3:
《架构设计中的100个知识点》
架构知识点为主线,结合讲实践。讲解形式:短视频+图文+直播+星球社群,免费欢迎感兴趣的童鞋关注。
第20集:分布式系统一致性为什么难做?

技术没啥人看了,坚持还有意义吗?
置顶标星日更好文不错过。
点赞,转发,在看三连。感谢!