請(qǐng)問(wèn)下 要設(shè)計(jì)10W物聯(lián)網(wǎng)設(shè)備在線的服務(wù)器配置 和gatewayworkman 的部署方案
5臺(tái)2核4G 5-10M帶寬服務(wù)器,用gatewayWorker分布式部署。
每個(gè)臺(tái)開(kāi)2個(gè)Gateway進(jìn)程。
BusinessWorker進(jìn)程開(kāi)多一些,例如每臺(tái)開(kāi)20個(gè)BusinessWorker進(jìn)程。
推薦使用webman+gatewayWorker插件
數(shù)據(jù)庫(kù)阿里云RDS,一主一從或多從。主庫(kù)8核16G,從庫(kù)配置可以一樣,也可以低一些后面升級(jí)。
我們有個(gè)物聯(lián)網(wǎng)的項(xiàng)目也是約10萬(wàn)設(shè)備在線,大概是上面這樣的配置。
注意一點(diǎn):
這種大量設(shè)備在線的業(yè)務(wù)要注意一點(diǎn),不要輕易重啟服務(wù)器,重啟一個(gè)問(wèn)題不大,全部重啟的話10萬(wàn)設(shè)備會(huì)一起發(fā)來(lái)登錄請(qǐng)求,類(lèi)似DDOS自己的服務(wù)器,10萬(wàn)請(qǐng)求一起過(guò)來(lái)會(huì)導(dǎo)致服務(wù)端處理不過(guò)來(lái)請(qǐng)求超時(shí),客戶端有超時(shí)重試的話會(huì)再次發(fā)請(qǐng)求,請(qǐng)求積壓越來(lái)越多,整個(gè)服務(wù)癱瘓很久。我們有兩次這樣的事故。
如果不幸出現(xiàn)這種情況,在每臺(tái)服務(wù)器上每隔幾秒執(zhí)行下php start.php reload
清理掉內(nèi)存里積壓的過(guò)期的請(qǐng)求,可以快速恢復(fù)整個(gè)服務(wù)。
謝謝大佬 指點(diǎn) 我有個(gè)疑問(wèn)就是 物聯(lián)網(wǎng)設(shè)備 登錄的ip服務(wù)器都是相同的 不應(yīng)該分離部署嗎 ? 分布式了后 除了登錄的服務(wù)器 其他服務(wù)上的gateway是否還啟作用 我記得分離部署 是注冊(cè)和網(wǎng)關(guān)放到一個(gè)服務(wù)器 其他的服務(wù)器都是BusinessWorker 如果 iot設(shè)備連接的都是固定的一個(gè)ip是不是分離部署更好一點(diǎn) 分布式部署 是不是你們iot連接的設(shè)備 做了負(fù)載均衡 導(dǎo)流到了分布式了
登錄最好不要用ip,用域名好一些,方面后面遷移服務(wù)器。
域名可以綁定一個(gè)ip,也可以多個(gè)。
我們使用的阿里云的負(fù)載均衡,負(fù)載均衡后面是多個(gè)ip,每個(gè)ip上都有Gateway服務(wù)。
注冊(cè),gateway,businessWorker都可以分別部署在不同的服務(wù)器,也可以部署在一起,沒(méi)有限制,我們是分開(kāi)部署的。
確實(shí)這樣。我們的服務(wù)每秒qps1W5,沒(méi)走負(fù)載,單臺(tái)服務(wù)器,然后中間為了升級(jí)服務(wù)器配置,重啟了服務(wù)器,100兆帶寬瞬間被打滿了,半天服務(wù)器進(jìn)不去了。還是得負(fù)載部署