測速租用:多個跨云服務(wù)器之間滿帶寬測速的一種實現(xiàn)方案
【版權(quán)聲明】文章部分內(nèi)容來源于網(wǎng)絡(luò),僅供參考!若有服務(wù)器租用/托管相關(guān)問題,請咨詢YINGSOO在線客服!良心推薦、按需選配,更簡單、更高效、更劃算!
【主機價格】臺灣云服務(wù)器價格 | 日本物理服務(wù)器價格 | 服務(wù)器價格免費試用 | 荷蘭物理服務(wù)器價格
【延伸閱讀】香港高防服務(wù)器有哪些優(yōu)勢?值得選嗎? | 臺灣服務(wù)器的優(yōu)勢有哪些?你會選臺灣服務(wù)器嗎?
量變引起質(zhì)變。
項目需求
由于我們現(xiàn)在開發(fā)的云平臺項目是一個跨云調(diào)度的重型計算平臺,所以會用到不同的云服務(wù)廠商的計算實例服務(wù)器,比如阿里云的ecs、亞馬遜的ec2或者谷歌云的compute engine等,同時也會在這些計算實例之間進(jìn)行數(shù)據(jù)傳輸。
這些云服務(wù)器之間的傳輸速度通常是不同的,即使是同一個云服務(wù)廠商內(nèi)的不同區(qū)域服務(wù)器之間傳輸數(shù)據(jù),帶寬也會有所不同。
所以需要對這些服務(wù)器之間的帶寬速度進(jìn)行測量,以供調(diào)度進(jìn)程分配任務(wù)和傳輸數(shù)據(jù)。
總結(jié)起來這個功能實現(xiàn)起來有3個要求:
①對不同區(qū)域內(nèi)的云服務(wù)器的tcp/Udp傳輸速度進(jìn)行檢測。
?、诒仨毷菨M帶寬的測速,也就是說兩臺服務(wù)器在測速的時候不能有其它網(wǎng)絡(luò)程序運行。
?、鄱嗯_服務(wù)器之間需要高效地建立兩兩連接。
針對這3個問題,我實行了以下解決方案。
基本結(jié)構(gòu)
一種簡單的設(shè)想就是啟動測速所需的客戶端和服務(wù)端,讓這些程序之間互相爭搶進(jìn)行測速。
但是這種方式在進(jìn)程的管理上很容易出現(xiàn)問題,因為每個進(jìn)程既要操作自己的狀態(tài)還需要操作其它進(jìn)程的狀態(tài),同時一下子起4個進(jìn)程也比較浪費,因為事實上每次測速只會有一個進(jìn)程工作。
所以更好的方式是用主從結(jié)構(gòu),由一個主進(jìn)程來啟停負(fù)責(zé)測速的客戶/服務(wù)端子進(jìn)程。
這樣不但能有效地避免資源的浪費和爭搶,同時主進(jìn)程中也可以集成很多邏輯功能,比如對外提供 Rest Api,記錄日志、備份測試結(jié)果等。
當(dāng)然為了方便部署和程序控制,所有的進(jìn)程都是部署在 docker 容器中。
由于主進(jìn)程需要訪問宿主機的 docker 服務(wù),所以需要開啟 docker 的 remote Api 服務(wù),對容器提供Rest Api進(jìn)行操作。
功能實現(xiàn)
基本測速
tcp與Udp
網(wǎng)絡(luò)協(xié)議是一層一層封裝起來的,而tcp和Udp屬于同一層的兩種協(xié)議。
其中tcp協(xié)議在前后端開發(fā)中非常常用,因為Rest Api請求依賴的Http(s)協(xié)議就是tcp的上層協(xié)議,而Udp協(xié)議在視頻、游戲、下載等業(yè)務(wù)中使用也非常多。
它們有一些共同點:請求的發(fā)起方稱為客戶端,請求的接收方稱為服務(wù)端,服務(wù)端和客戶端可以雙向通信。
而它們的側(cè)重點有所區(qū)別。tcp更注重穩(wěn)定,客戶端和服務(wù)端之間需要建立連接之后才能互相發(fā)送數(shù)據(jù)。
Udp則更注重速度,客戶端不需要和服務(wù)端建立連接即可直接發(fā)送數(shù)據(jù),但是如果發(fā)送速度太快或者網(wǎng)絡(luò)不穩(wěn)定可能會造成丟包,導(dǎo)致對方接收的數(shù)據(jù)部分丟失。
測速工具
常用的命令行測速工具有iperf和speedtest,相較之下選擇了功能更強大的iperf。
iperf是一個比較理想的測速工具,支持tcp、Udp協(xié)議,還可以通過參數(shù)來制定傳輸數(shù)據(jù)大小、傳輸次數(shù)或者傳輸時間,以及輸出結(jié)果的格式。
但是由于前面Udp協(xié)議的特性,測速會略微麻煩一些,需要找到合適的帶寬。
比如按照1gbps的速度發(fā)送數(shù)據(jù),丟包率是70%和按照10mbps的速度發(fā)送數(shù)據(jù),丟包率是0,那么對數(shù)據(jù)完整性有要求的話肯定更偏向于后者。
當(dāng)然實際情況并不是對于丟包率為0就是最好的,而是在可容忍的范圍內(nèi)采用最大速度傳輸(數(shù)據(jù)丟了還可以重傳不是~)。
這就意味著需要根據(jù)實際網(wǎng)絡(luò)狀況不斷調(diào)整和嘗試。
而iperf并沒有這么智能,所以Udp這一塊采用團(tuán)隊內(nèi)部開發(fā)的一款Udp傳輸工具,來找到理想的傳輸速度。
滿帶寬
要保證滿帶寬只需要保證測速時沒有其它程序占用帶寬即可。
由于我們可以啟動一臺獨立的搶占式服務(wù)器來運行測速程序,所以其它非測速程序的進(jìn)程不太可能占用帶寬,而容易爭搶帶寬的是用來測速的子程序。
所以需要讓子程序之間是互斥運行,甚至是互斥存在的。
采用狀態(tài)管理基本上就可以實現(xiàn),主程序在每次有進(jìn)程啟動的時候?qū)顟B(tài)置為”connecting”,測速完成后置為”waiting”,只有在”waiting”狀態(tài)下才可以啟動新的子程序進(jìn)行測速。
但是這只是從代碼邏輯層面控制,對于穩(wěn)定健壯的程序而言,最好還有其它的硬性控制方式。
這時候使用容器的話就可以輕松辦到。
凡是需要進(jìn)行測速的進(jìn)程都在容器中啟動,同時容器的名稱都統(tǒng)一,那么一旦程序出現(xiàn)bug,同時啟動多個子程序時,docke r服務(wù)則會報錯,告知容器名稱沖突,從而創(chuàng)建失敗。
當(dāng)然這種方式也有一定的風(fēng)險,比如上一個進(jìn)程測速過程中出現(xiàn)問題沒有按時退出,那么則無法進(jìn)行新的測速,所以需要需要設(shè)定一個超時時間,超過一段時間后主動停止當(dāng)前測速子程序。
同時如果主程序意外退出,導(dǎo)致停止失敗的話,也要進(jìn)行處理:在每次啟動主程序的時候進(jìn)行檢查,及時銷毀未停止的子程序。
多節(jié)點
多節(jié)點算是非常棘手的問題。試想如果在一段時間內(nèi)同時在多個云服務(wù)器上啟動多個測速程序,如何保證他們有序的進(jìn)行測速呢?
要解決這個問題,先思考一個簡單些的問題:
在一段時間內(nèi),如何決定哪些云服務(wù)器啟動服務(wù)端子程序哪些云服務(wù)器啟動客戶端子程序呢?
如果按照“主-從”模式的話需要建立一個中心節(jié)點來進(jìn)行控制,但是這樣的缺點很多,最重要的一個缺點是如果某個節(jié)點與中心節(jié)點無法通信那么就無法獲得與其它節(jié)點通信的機會,及時它和其它節(jié)點之間網(wǎng)絡(luò)暢通。
同時中心節(jié)點和其它節(jié)點之間也存在多節(jié)點通信的問題。
總而言之這種方式下通信的成本太高,服務(wù)端與客戶端傳輸數(shù)據(jù)需要的中間環(huán)節(jié)太多,很容易出現(xiàn)問題。
所以簡單的方式是讓云服務(wù)器之間互相發(fā)起測速請求并響應(yīng)。
這樣的話,主程序的邏輯要分為兩個模塊,一個模塊用來響應(yīng)請求、、分配端口、啟動服務(wù)端容器。
另一個用來輪詢帶測速隊列并發(fā)起請求、啟動客戶端容器建立連接。
工作流程大致如下:
這種處理方式還有一種極端情況,就是兩個云服務(wù)器之間互相請求進(jìn)行測試,如果雙方請求到達(dá)時間一致,那么就會同時給對方分配端口,然后同時受到對方分配的端口之后發(fā)現(xiàn)服務(wù)端已啟動于是放棄連接。
于是出現(xiàn)了類似進(jìn)程“死鎖”的狀態(tài)。
對于這種情況的處理方式是使用時間戳來記錄請求發(fā)起的時刻,雙方通過時間戳的先后來決定是否啟動客戶端或服務(wù)端。
即使更極端的情況出現(xiàn)——雙方時間戳相同。那么通過超時回收或者發(fā)消息釋放端口來建立下一次連接。
弱網(wǎng)絡(luò)下的處理
弱網(wǎng)絡(luò)指的是網(wǎng)絡(luò)不穩(wěn)定或者帶寬較小的情況。
這種情況的處理方式原則上就是重測,但是關(guān)于重測有幾個需要注意的地方:
對于帶寬較小的情況需要考慮減小傳輸數(shù)據(jù)的體積以保證在制定的超時時間內(nèi)完成測速。
對于測速失敗的情況進(jìn)行判斷并重測,同時限定重測次數(shù),避免無限重測。
重測時可以讓客戶端與服務(wù)端進(jìn)行互換測試,通過限定一方發(fā)起重測可實現(xiàn)。
總結(jié)
總體結(jié)構(gòu)圖如下:
很多時候?qū)崿F(xiàn)一個功能并不困難,但是要把功能實現(xiàn)好卻是一件不簡單的事。
雖然理論上實現(xiàn)起來只是簡單的調(diào)用測速工具就可以得到結(jié)果,但在實際場景下可用性會變得很低。
比如沒有對弱網(wǎng)絡(luò)的重測機制,那么偶然的網(wǎng)絡(luò)抖動就會影響到測速結(jié)果。
如果沒有考慮到多節(jié)點爭搶連接的問題,那么實際運行在多個云服務(wù)器上可能會造成程序錯誤或測速結(jié)果不準(zhǔn)確的問題。
要怎么樣把功能實現(xiàn)好呢?
至少有兩個考慮方向:
倍數(shù)思維。比如當(dāng)前框架支持10個頁面沒問題,那么如果100個、1000個會不會有性能問題?
極限思維。就是一些極端情況下的處理機制,比如在本文中對超時的處理,對容器互斥的處理等。(來源:人和未來gtxlab;作者[香港YINGSOO]:朱德龍)
本公司與全球近120多個國家頂級機房直接合作,提供包括香港、美國、韓國、日本、臺灣、新加坡、荷蘭、法國、英國、德國、埃及、南非、巴西、印度、越南等國家和地區(qū)的服務(wù)器、云服務(wù)器的租用服務(wù),需要的請聯(lián)系本公司客服!
高等院校對于主機租用方面應(yīng)該注意哪些
如果你服務(wù)器租用不穩(wěn)定,訪問速度不快,要想IP上萬,排名第一,對你來說是不可能的事。主機租用的穩(wěn)定就是網(wǎng)站的穩(wěn)定,也是網(wǎng)站穩(wěn)定運營推廣的基礎(chǔ)。主機租用的穩(wěn)定和訪問速度是被百度和谷歌明確的寫入到優(yōu)化手冊當(dāng)中的?,F(xiàn)在就和大[英國服務(wù)器]家講講與主機租用相關(guān)的知識。
第一、無法訪問,主機租用不穩(wěn)定會造成網(wǎng)站運行的錯誤,網(wǎng)站出錯就會導(dǎo)致網(wǎng)頁打不開,無論哪個網(wǎng)頁;
第二、網(wǎng)站不友好,網(wǎng)站如果經(jīng)常打不開,就會造成一部分用戶無法訪問網(wǎng)站的內(nèi)容,百度同樣會被認(rèn)為網(wǎng)站不穩(wěn)定,就會降權(quán)處理,就算是新浪、QQ這一類的網(wǎng)站如果是經(jīng)常打不開網(wǎng)站,用戶量也會慢慢變少的;
第三、網(wǎng)站被刪除是比較嚴(yán)重的后果,網(wǎng)站會有一定的時間是不能訪問的,網(wǎng)站很有可能被搜索引擎刪掉;
第四、推廣運營受阻,網(wǎng)站經(jīng)常打不開,從其他渠道引來的流量無法轉(zhuǎn)化成自己的流量,那么網(wǎng)站就是沒有效果的。
主機租用的穩(wěn)定是網(wǎng)站運營的基礎(chǔ)。所以在建站初期就應(yīng)該選擇好你網(wǎng)站空間,不然更換網(wǎng)站空間也是一件麻煩的工作,那如何選擇主機租用呢?
主機租用應(yīng)具備的因素
線路問題主機租用和虛擬主機線路是一樣的分國外國內(nèi)和單線雙線。
購買國內(nèi)主機租用就建議大家根據(jù)使用情況來選擇線路。國外的一般是以香港和韓國的服務(wù)器以及美國的為主,具體要選擇哪一款就根據(jù)需求而定。
穩(wěn)定[國際專線]性:主機租用穩(wěn)定運行就是網(wǎng)站穩(wěn)定訪問的基礎(chǔ)。
服務(wù)盡量不要出現(xiàn)網(wǎng)站打開慢的狀況,訪問速度要穩(wěn)定,任何時候打開網(wǎng)站的速度都要相當(dāng),只有這樣才可以確定主機租用是穩(wěn)定的。
訪問速度:主機租用上的網(wǎng)站如果在5s之后還是不能訪問。
就說明此網(wǎng)站友好度不是很好,排名自然不會很好的如果有訪問速度不快的主機租用,除非是測試網(wǎng)站,否則就不要用來運營網(wǎng)站。
YINGSOO熱線:400-630-3752
熱門文章:【美國服務(wù)器ip多對網(wǎng)站三大好處】【聊天室服務(wù)器托管】【2020年服務(wù)器租用價格哪家低】【雙線服務(wù)器低價格值得信賴嗎】【最好的美國服務(wù)器】【云計算數(shù)據(jù)中心】【跨境電商網(wǎng)站加速】【美國高防服務(wù)器防御DDoS原理】【vps國外服務(wù)器連接】【服務(wù)器托管費用是怎樣算的】【美國vps】【高級防御服務(wù)器】【香港服務(wù)器和大陸服務(wù)器怎么選】【跨國視頻會議專線】【云服務(wù)器】【服務(wù)器被攻擊了怎么處理】【香港云主機常見問題及解決方案】【香港vps租用】【國外免費vps永久】【荷蘭云主機哪個服務(wù)商好】【香港郵件群發(fā)服務(wù)器有什么作用】【租用美國服務(wù)器】【美國服務(wù)器視頻】【廣州BGP機房】【百度云服務(wù)器】【低延遲服務(wù)器】【獨立服務(wù)器租用是什么意思】【YINGSOO教你用數(shù)據(jù)圍觀情人節(jié)】【游戲服務(wù)器搭建】【服務(wù)器殺手】
海外云服務(wù)器商,YINGSOO,專業(yè)海外云服務(wù)器提供商,提供亞洲,歐美等全球范圍云服務(wù)器租用托管,1對1客服指導(dǎo),7x24小時保障,全球精選線路免費試用
快速穩(wěn)定境外云服務(wù)器_美國_日本_韓國精選線路,實時開通
快速穩(wěn)定境外云服務(wù)器,YINGSOO,專業(yè)海外云服務(wù)器提供商,提供亞洲,歐美等全球范圍云服務(wù)器租用托管,1對1客服指導(dǎo),7x24小時保障,全球精選線路免費試用
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。