国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請教:關(guān)于WebServer如何方便水平擴展

frank

首先感謝大神提供這么好用框架
?背景:公司api項目以前用提t(yī)p框架,性能不高,qps才幾百?,F(xiàn)用workerman的WebServer來實現(xiàn)api開發(fā),性能非常好,相比以前nginx+php-fpm模式,性能提升幾十倍。
但是單機處理請求數(shù)是有極限的,所以想通過辦法水平擴展增加服務(wù)器來提高qps,目標(biāo)是達(dá)到并發(fā)1萬,響應(yīng)時間在100ms以內(nèi)
?
可能的辦法:
1.nginx(1臺) + workerman(多臺) + DB(多臺):nginx負(fù)責(zé)所有請求分發(fā),workerman處理數(shù)據(jù)并返回給nginx。這種方案難點在于 nginx如何與worker通信,協(xié)議如何制定?客戶端通過nginx轉(zhuǎn)發(fā)給workerman處理,增加一層網(wǎng)絡(luò)開銷,性能是否會有影響?
?

  1. 像http://doc2.workerman.net/框架一樣,增加服務(wù)器,配置ip,達(dá)到無感知擴展。流程圖如下:

[attach]1734[/attach]

? 說明:
? ? 2.1)啟動WebServer,開啟5個子進(jìn)程,監(jiān)聽客戶端請求
? ? 2.2)? 啟動多個業(yè)務(wù)服務(wù)(假設(shè)服務(wù)為:Worker),并寫入自己的ip+port到文件中。
? ? 2.3)? 當(dāng)有客戶端請求來時,WebServer建立到Worker異步tpc連接
? ? 2.4)? Worker處理完數(shù)據(jù)返回給WebServer
? ?2.5)? Worker返回數(shù)據(jù)給客戶端
在這個設(shè)計中,WebServer相當(dāng)于gateway/worker模型中的gateway, 業(yè)務(wù)服務(wù)相當(dāng)于worker進(jìn)程。WebServer進(jìn)程開啟一個定時器,讀取注冊的業(yè)務(wù)服務(wù)器ip+port,采用某種算法(假設(shè)隨機抽取)分發(fā)請求。不知道這種方案是否可行,有沒有需要改進(jìn)的地方??(注:沒有用gateway/worker框架是因為和客戶端不需要長連接)
?

  1. 通過DNS輪徇,一個域名配置多個ip(服務(wù)器),通過dns實現(xiàn)負(fù)載均衡,但這種方式有局限,請求數(shù)不能很好平均轉(zhuǎn)到workerman服務(wù)器,導(dǎo)致wokerman負(fù)載不均衡。
    ?
    個人想法傾向是以第二種方式實現(xiàn),請教各位!
3377 1 0
1個回答

walkor 打賞

方案1,nginx可以直接做透明tcp代理,直接將請求轉(zhuǎn)發(fā)給后端的workerman,不用考慮nginx和workerman之間的通訊協(xié)議。缺點是加了一層nginx,性能有一點點損耗,另外量大了nginx自身容易出現(xiàn)瓶頸,如果nginx故障則可能出現(xiàn)全站不可用的問題。
?
方案2,對于webserver而言,方案2過于復(fù)雜了。
?
方案3,最簡單并且性能無損耗的是方案3 DNS輪詢,請求量小的時候看起來可能不太均衡,請求量大的話是趨近于均衡的。如果某臺服務(wù)器出現(xiàn)故障,會影響部分請求。
?
如果要想性能好并且均衡的話可以用lvs(阿里云的lbs)。如果某臺服務(wù)器出現(xiàn)故障會自動踢出。
?
如果我選的話我會選擇dns輪詢,其次是lvs(lbs)。

  • frank 2019-02-21

    非常感謝大神提供的意見,這么快的速度就回復(fù)了

年代過于久遠(yuǎn),無法發(fā)表回答
??