日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
php使用tcp長連接的一種優(yōu)化思路

一、面向人群

在新鄉(xiāng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,新鄉(xiāng)網(wǎng)站建設(shè)費用合理。

如果站點架構(gòu)滿足以下幾點,那么本文的優(yōu)化方案會非常適合:

1)使用php等腳本語言作為開發(fā)語言

2)需要連接后端服務(wù),例如RPC服務(wù)、memcache或redis等

3)流量非常大

二、解決的問題

 常見的web架構(gòu)如上:

1)最前端是APP或者web頁面

2)服務(wù)器上層是web-server進行接入

3)php腳本語言調(diào)用后端數(shù)據(jù),完成業(yè)務(wù)邏輯,拼接頁面

4)***端是服務(wù)、緩存、數(shù)據(jù)庫

php是一種腳本語言,不像C++/Java那樣進程能夠常駐,所以它連接后端的服務(wù)都是使用短連接:

 上圖是一種典型場景,站點php部署在機器A上,緩存memcache部署在機器B上,之間通過短連接通信,過程為:

1)php建立tcp短連接

2)按照memcache協(xié)議發(fā)送數(shù)據(jù)

3)接收memcache返回的數(shù)據(jù)

4)php關(guān)閉tcp短連接

在站點流量小時,上述過程沒有任何問題,當站點流量非常大,QPS很高的情況下,php對memcache的tcp建立+關(guān)閉tcp短連接的開銷便不能忽略了,有可能成為性能的瓶頸,如何進行優(yōu)化是本文即將討論的核心。

三、UNIX Domain Socket介紹

話鋒一轉(zhuǎn),先一起來看看UNIX Domain Socket技術(shù)。

UNIX Domain Socket是一種進程間IPC通訊機制,它不需要經(jīng)過網(wǎng)絡(luò)協(xié)議棧,不需要打包拆包、計算校驗和、維護序號和應(yīng)答等,只是將應(yīng)用層數(shù)據(jù)從一個進程拷貝到另一個進程。它可以用于同一臺主機上兩個沒有親緣關(guān)系的進程,并且是全雙工的,提供可靠消息傳遞(消息不丟失、不重復(fù)、不錯亂)的IPC機制。

四、優(yōu)化方案

可以看到,UNIX Domain Socket的效率會遠高于tcp短連接,但它只能用于同一臺主機間的進程通訊,而php應(yīng)用和后端服務(wù)往往是部署在不同的機器上的,此時能否利用它來進行優(yōu)化呢,答案是肯定的。

 優(yōu)化后的簡易架構(gòu)圖如上,在php應(yīng)用服務(wù)器上部署一個local-proxy,php與local-proxy之間使用UNIX Domain Socket來通訊,而local-proxy與后端服務(wù)進行TCP長連接通訊,這樣就大大提升了通訊效率,免除了每次請求都要進行的建立+關(guān)閉tcp短連接的開銷。

五、local-proxy要點

要實現(xiàn)上述優(yōu)化方案,local-proxy是實現(xiàn)要點,在實現(xiàn)local-proxy時,有這么幾點需要注意

1)協(xié)議設(shè)計:local-proxy本身沒有任何業(yè)務(wù)邏輯,只負責請求轉(zhuǎn)發(fā),上游發(fā)送過來memcache協(xié)議,透傳給后端的memcache,這樣的話,上游客戶端不需要進行任何代碼的修改

2)通訊方式:如上文所述,local-proxy與上游使用UNIX Domain Socket進行通訊,與下游使用tcp長連接進行通信

3)高效框架:這種方案是為了解決tcp短連接的效率損耗,這樣對local-proxy的效率要求就非常高,可以選用成熟高效的網(wǎng)絡(luò)框架(例如libevent)和tcp長連接連接池技術(shù)來實現(xiàn)

4)請求映射:需要將上游發(fā)過來的請求與發(fā)往下游的請求一一映射起來,這樣才能正確的對應(yīng)上請求包與響應(yīng)包

文章轉(zhuǎn)載自微信公眾號“架構(gòu)師之路”


本文名稱:php使用tcp長連接的一種優(yōu)化思路
路徑分享:http://m.5511xx.com/article/dpddieo.html