如何實現單伺服器300萬連接-ag真人国际官网
『壹』 求伺服器配置 網站300萬ip,1000萬pv應該怎麼樣配置
要承受日訪問量達到網站300萬ip,1000萬pv的伺服器。流量已經相當不錯了\(^o^)/~。你可以看看國產品牌正睿的這款雙路四核機架式伺服器,標配一顆至強e5620四核處理器,2g ddr3 reg ecc內存,ssd 80g硬碟,intel?5500 (tylersburg) chipset ioh-24d, ich10r伺服器晶元組主板,雙千兆網卡——
然後增加到2個處理器,8gb內存,3個硬碟,建raid5陣列,價格在13000左右。帶300萬沒問題!性能可以說是相當強悍。。。
產品型號:i2496194s-h
產品類型:雙路四核機架式伺服器
處 理 器:xeon e5620
內 存:2g ddr3 reg ecc
硬 盤:ssd 80g
機 構:1u機架式
價 格:¥8999
銀牌服務
重慶五年免費上門服務,全國三年免費上門服務,關鍵部件三年以上免費質保。
給你推薦的是國產品牌正睿的伺服器產品,他們的產品性價比很高,售後也很完善,3年免費質保,3年免費上門服務,在業界口碑很不錯。
『貳』 一個300萬人同時訪問的平台需要用多大虛擬雲
應該是說的同一時間最大訪問量吧.雲伺服器是不限制最大連接數的.通常配置越高.帶寬越大.能承載的同一時間訪問量也就越多.如果是普通的網站.三百人同時在線.建議選擇雙核以上處理器.2g以上內存.3m以上獨享帶寬的配置即可.
『叄』 3萬ip,300-500日訪問量需要什麼配置的伺服器
3萬ip,300-500日訪問量 好像有點矛盾 到底模嫌是日訪問量為 3萬ip 還是 300--500 ip 訪問量
如果是3萬訪問量 估計帶寬要100m 價格就比較高了
如果是300-500 10m 以下帶寬就能滿足
現在的伺服器配置一般都旦睜手比較高 隨便一弄就是 4核 2g-4g 以上內存 1t 的硬碟 所以這個不是問題
伺服器租用或託管都是自己來做維護的 idc 這邊主要是幫你重啟或裝系統 這個費用好多公司都是免費的 詳聊可進入空間查找我的聯絡方早頌式
『肆』 如何實現android和伺服器長連接
提出問題:這種功能必須涉及client(客戶端)和server(伺服器),所以到底client如何和server實現實時連接通訊?
分析問題:這種功能實際上就是數據同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:
1.一種是定時去server查詢數據,通常是使用http協議來訪問web伺服器,稱polling(輪詢);
2.還有一種是移動端和伺服器建立長連接,使用xmpp長連接,稱push(推送)。(按照本人理解:客戶端的實現時:
while(true) {
request(timeout);
request(timeout);
}
客戶端發出一個「長」請求,如果伺服器發送消息或者時間out了,客戶端就斷開這個請求,再建立一個長請求
)
從耗費的電量、流量和數據延遲性各方面來說,push有明顯的優勢。但是使用push的缺點是:
對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連接,相對有一些技術上的開發難度。
對於伺服器:如何實現多核並發,cpu作業調度,數量龐大的長連接並發維護等技術,仍存在開發難點。
在講述push方案的原理前,我們先了解一下移動無線網路的特點。
移動無線網路的特點:
因為 ip v4 的 ip 量有限,運營商分配給手機終端的 ip 是運營商內網的 ip,手機要連接 internet,就需要通過運營商的網關做一個網路地址轉換(network address translation,nat)。簡單的說運營商的網關需要維護一個外網 ip、埠到內網 ip、埠的對應關系,以確保內網的手機可以跟 internet 的伺服器通訊
原理圖如下:
ggsn(gateway gprs support node 網關gprs支持結點)模塊就實現了nat功能。
因為大部分移動無線網路運營商都是為了減少網關的nat映射表的負荷,所以如果發現鏈路中有一段時間沒有數據通訊時,會刪除其對應表,造成鏈路中斷。(關於nat的作用及其原理可以查看我的另一篇博文:關於使用udp(tcp)跨區域網,nat穿透的心得)
push在android平台上長連接的實現:
既然我們知道我們移動端要和internet進行通信,必須通過運營商的網關,所以,為了不讓nat映射表失效,我們需要定時向internet發送數據,因為只是為了不然nat映射表失效,所以只需發送長度為0的數據即可。
這時候就要用到定時器,在android系統上,定時器通常有一下兩種:
1.java.util.timer
2.android.app.alarmmanager
分析:
timer:可以按照計劃或者時間周期來執行相關的任務。但是timer需要用wakelock來讓cpu保持喚醒狀態,才能保證任務的執行,這樣子會消耗大量流量;當cpu處於休眠的時候,就不能喚醒執行任務,所以應用於移動端明顯是不合適。
alarmmanager:alarmmanager類是屬於android系統封裝好來管理rtc模塊的管理類。這里就涉及到rtc模塊,要更好地了解兩者的區別,就要明白兩者真正的區別。
rtc(real- time clock)實時鬧鍾在一個嵌入式系統中,通常採用rtc 來提供可靠的系統時間,包括時分秒和年月日等;而且要求在系統處於關機狀態下它也能夠正常工作(通常採用後備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768khz 晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)
好了,回來正題。所以,alarmmanager又稱全局定時鬧鍾。這意味著,當我用使用alarmmanager來定時執行任務,cpu可以正常地休眠,只有在執行任務是,才喚醒cpu,這個過程是很短時間的。
下面簡單來說明其使用:
1.類似於timer功能:
//獲得鬧鍾管理器
alarmmanager am = (alarmmanager)getsystemservice(alarm_service);
//設置任務執行計劃
am.setrepeating(alarmmanager.elapsed_realtime, firsttime, 5*1000, sender);//從firsttime才開始執行,每隔5秒再執行
2.實現全局定時功能:
//獲得鬧鍾管理器
alarmmanager am = (alarmmanager)getsystemservice(alarm_service);
//設置任務執行計劃
am.setrepeating(alarmmanager.elapsed_realtime_wakeup, firsttime, 5*1000, sender);//從firsttime才開始執行,每隔5秒再執行
總結:在android客戶端使用push推送時,應該使用alarmmanager來實現心跳功能,使其真正實現長連接。
在伺服器端的實現:
在伺服器端,可以使用很多語言來實現,如c/c ,java,erlang等等,如我們國內比較好的極光推送(c開發),openfire(java開發)等等。
最近我看了極光推送的介紹和原理,下面我就說說他們是遇到什麼難題,然後使用什麼技術或者方案來解決呢。
當有大量的手機終端需要與伺服器維持長連接時,對伺服器的設計會是一個很大的挑戰。
假設一台伺服器維護10萬個長連接,當有1000萬用戶量時,需要有多達100台的伺服器來維護這些用戶的長連接,這里還不算用於做備份的伺服器,這將會是一個巨大的成本問題。那就需要我們盡可能提高單台伺服器接入用戶的量,也就是業界已經討論很久了的 c10k 問題。
c2000k
針對這個問題,他們專門成立了一個項目,命名為c2000k,顧名思義,他們的目標是單機維持200萬個長連接。最終他們採用了多消息循環、非同步非阻塞的模型,在一台雙核、24g內存的伺服器上,實現峰值維持超過300萬個長連接。
最後總結:
因為我最近用java在做一個pc、伺服器、android的即時通訊系統(說白了就是模仿qq,後面希望有不同的功能)。我的原則是用別人的原理,自己來實現,這樣才更好深入了解一些框架。所以,估計難點是在通訊開發和伺服器上的開發,必須深刻了解多消息循環、非同步非阻塞的模型。之後我會發表關於這方面的實現。
在現在的android平台上,已經不是android單機的世界了(我不是說做單機游戲沒有前途)。現在都是依靠發展蓬勃的互聯網來支撐整個it體系,所以,要成為一個android應用開發高手,必須朝著android、硬體、雲服務這一體系來發展。