伺服器處理數據時是一個賬號一個賬號的處理嗎,還是上萬個一起處理


首先,伺服器性能沒你想的那麼低,推送萬人並沒有你想像中的那麼困難。

其次,數據也是得看大小的。正常的像全服郵件或者全服通告之類的,有兩種做法。

一就是分批發送,跑個非同步線程慢慢發。

二呢就是隻發個消息頭,然後讓客戶端主動過來請求。玩家不一定會立馬查看,這樣就形成時差,保證不會同一時間處理,從而降低伺服器壓力。


題主你好,你說的這個問題,主要涉及到演算法的.同時也要看對面伺服器具體是個什麼配置.

一般來講,推送給萬人的話,他是不會傻傻的真去同時發幾萬個包,就算能發,他也不必要這麼去浪費這個資源,就和前面幾個大佬講的一樣,它可以採用分批發送,來緩解伺服器的壓力.

拿個實際的栗子吧,大型遊戲開服或者搞活動的的時候,官方是不是會送虛擬物品,這個時候,明明規則是大家都可以領,而你的小夥伴領到了,你卻半天還沒領到,這就是他的賬號處於前面發送的那幾批.而你的賬號在後面.


萬人在線,精準發送

在線這個要求就排除了通過登錄來錯峯,實際上好多給全服玩家發送數據的行為可以通過登錄這個玩家操作來錯峯,比如全服郵件。

如果這個數據對實時性非常敏感的話,一般通過優化代碼,如果還不行就做一些拆分,實際上這樣的業務在遊戲中不會很多,對實時性要求敏感的,一般同步的客戶端量不會很大,如果需要同步的客戶端確實很多,可以在業務上做一些改變,比如網遊同屏玩家顯示,可以不同步所有理論上看得到的玩家,太多了你也看不過來,或者這些玩家做分組等等措施。

如果對實時性不敏感的話,通過隊列做限流慢慢發,或者通過先發送小消息,讓客戶端主動來取完整消息達到錯峯目的來解決。


每個在線的客戶端都存在內存中的,採用循環發送數據的方法,但是為了不阻塞其他玩法邏輯,全服推送的數據會採用分批發送。


在這個很簡單啊,你把伺服器想的太簡單又太笨了,他比我們想像的聰明,當然這中間他們也執行著不同的協議,按照協議有條不紊進行數據交互。


我做的是卡牌遊戲,手遊……是一個一個處理的……事實上不存在「同時」


推薦閱讀:
相關文章