網路遊戲伺服器與資料庫的關係?

時間 2021-05-29 23:14:20

1樓:逐風

資料庫太慢,一般情況下資料庫以冷資料儲存為主。

熱資料在快取中處理,然後落地刷到資料庫。

分割槽和資料庫的關係涉及到你具體的邏輯業務。

比如,你單服使用者少無互動,那麼乙個資料庫對應乙個,或者乾脆不用都沒事。

或者,你需要跨服,那麼最好避免分庫,或者對映出共用庫。

或者,不依賴資料庫,自己架中間資料層。

2樓:

每個伺服器對應不同的資料庫,

主要應對高使用者帶來的高併發,

如果所有的伺服器使用同乙個資料庫伺服器,

那麼這個資料庫伺服器需要很大的承載能力,

所以我認為是需要分開的,

你看很多伺服器之間的交易一般是需要錢的,因為這樣需要人工操作個人見解

3樓:楊樂

資料庫比如合適mysql只用來做資料的持久化,在玩家登入遊戲時可以將他的資料從資料庫裡面查詢出來放到服務端記憶體中,之後的資料修改全在記憶體,記憶體的資料每隔一段時間比如30s如果有同步任務會去同步一次,將多次操作的資料一次更新到資料庫。如果新產生的資料,在產生的同時往資料庫裡增加,之後和其它資料一樣,在記憶體維護,定時同步。

4樓:史強

不要把資料庫和遊戲邏輯混為一談。

所有的伺服器都在實現三種功能

(1)資料的通訊(網路IO,佇列,等等)

(2)資料的儲存(共享記憶體,記憶體,資料庫,檔案等等)(3)資料格式的換算和轉換(邏輯具體實現,比如戰鬥,擺攤,交易,副本等等)

資料庫只是資料儲存的一種。

至於你說的那些,很大一部分是(3)要實現的內容,並不是說,遊戲一定要有資料庫,最普通檔案也可以實現,cache(NoSQL)也行,記憶體也算。它只是乙個儲存介質。

理順關係,有助於你的設計。不要一開始就陷入細節,導致自己的迷失。

5樓:王銳

資料庫首先是乙個軟體程序,執行在某台物理機器上。乙個資料庫程序中,可以管理N個資料空間(類似資料夾),這些個資料空間其實就是用來儲存各類資料(檔案)的地方,至於應該怎麼存,這需要看你的業務所規劃的「邊界」在那裡?如果「拍賣行」、「擺攤」這些資料都在某一分區內,那麼自然就應該在同乙個資料空間內。

乙個遊戲伺服器,可以同時讀寫多個資料空間的資料,所以關係在你的業務中,或者說去跟策劃聊聊「業務邊界」應該更有幫助。

6樓:

每個或者每幾個服或頻道對應於乙個提供資料服務的節點。其中儲存方式簡單的理解為kv記錄就可以,因為網遊是大型實時系統,所有資料放在cache中是最高效的。

就資料流向來說,其實到這裡就結束了。

不過機器永遠是不穩定的,機器掛了要恢復就要還原最後機器掛掉的瞬間。所以這裡就要關聯到題主提到的一些傳統資料庫。

至於具體如何同步,如何容災,這些對業務程式是透明的,怎麼實現都可以。每家公司甚至每個團隊都有各自的解決方案。這點就可以參考一些分布式cache如何做災備的,redis,memcached等。

7樓:mysqlops

對於大多數網遊,都有拍賣行系統,擺攤,使用者的資訊(等級,裝備,金錢……),幫派,等等……

那真實的資料庫和這些區之間是怎麼樣的關係?比如華北一區對應乙個資料庫,華北二區對應乙個資料庫?還是其他的方式?

真實的資料庫和伺服器又是什麼樣的關係?比如華北一區在乙個伺服器,或者N個伺服器供華北一區使用,平衡負載?

回答:1.傳統的MMO/MMORPG,包含現在的Web Game,確實如你所言,華北一區對應乙個資料庫,華北二區對應乙個資料庫;

2.一般一台資料庫主機上會部署多個資料庫,對應不同的遊戲大區或服;

3.往往更多的遊戲公司是,一台主機同時部署資料庫,也部署遊戲伺服器,往往只有地圖伺服器單獨部署;

4. 遊戲資料庫的負載不會很大,畢竟玩家數量有限,以及部署的數量也不會超多,只有老區的資料庫會逐漸部署更多在同一臺主機上。不會考慮負載均衡的事情。

5.但是社交遊戲,就非常可怕,不是跟傳統的遊戲一樣。

8樓:imajeason

遊戲中的各個系統在應用中就是不同的介面而已,具體伺服器怎麼架構的就怎麼呼叫,對應關係其實也很簡單,說白了就是(伺服器對應用):一對多,多對多,多對一。一般情況下,資料庫都是要主從的,讀寫分離,也就是乙個服的資料會存在多個伺服器而不需要分割,因為很少有乙個服的資料大到需要分割。

根據規模的不同,架構也完全不一樣。

從小到大:

一台伺服器擔任web、memcached、db多個角色;

每個角色各一台;

多web伺服器,負載均衡,mysql主從,多memcached快取伺服器;

WEB按DNS區域負載均衡,db資料分割,SSD硬碟快取等;

9樓:

遊戲公司一般有兩種庫儲存玩家的不同資訊。

玩家登入賬號的資料資訊、賬號內的餘額,一般儲存在乙個庫中。這個庫在該公司內是通用的,登入官網可以登入查詢充值,在每個遊戲登入的時候都會訪問,在遊戲過程中的消費可以回饋到這個庫里。

每個遊戲的每個大區的每個服還會對應乙個資料庫。在這個庫里,會儲存玩家的角色資訊(等級,裝備,金錢……),玩家的社交關係,拍賣行,任務等一切在遊戲裡的資料。

一般來說是一台真實的資料庫伺服器對應乙個遊戲某個區的某個服。有時候用了高配機,也可能一台機器上跑三個服的庫。總之,遊戲公司會根據資料庫的負載調整遊戲架構。

每個服的人數有限,遊戲資料也並不是實時寫入資料庫中,一般儲存在快取裡,幾分鐘寫入一次庫。所以遊戲的資料庫訪問壓力並不大。負載大的地方大多在邏輯伺服器的資料處理上。

一般是對邏輯伺服器去做負載均衡。

為什麼要把web伺服器和資料庫伺服器執行在不同機器上?

歌盡桃花 這個問題可以從以下幾個方向去思考 一 硬體故障 基本上現在大型的軟體都是搞分布式部署 分布式計算,生產環境最忌諱的就是單點故障,所以現在雲計算 虛擬化得以大行其道,哪怕是乙個簡單的計算微服務,也應該最少要有2份以上的副本,而且最好是要求這些副本不同機器 不同機架甚至是不同的資料中心,這樣在...

雲伺服器和雲資料庫如何關聯?

已登出 購買雲伺服器和雲資料庫時,注意一點,那就是雲伺服器和雲資料庫必須在同一專有網路中!同一專有網路中意味著內網互通,這樣就可以用內網來訪問雲資料庫,不僅速度快,而且不會產生任何流量費用。如果不在同一專有網路中,那麼麻煩事特別多,需要打通內網或者雲資料庫開公網,都可能會產生額外的成本。如果在同一專...

能否將秘密共享協議用於資料庫伺服器root許可權控制機制實現多使用者共同確保root許可權合理使用?

jiangtao9999 多人同時許可帶來的問題是,當你需要 root 許可權的時候,必須有多人到場才可以。但是其實這是沒必要的。解決刪庫的最好辦法是用乙個不會被真實刪庫的資料庫去解決問題。即便你刪庫,也可以靠 log 記錄來恢復資料的資料庫是最佳的。至於你說的秘密共享,是另外一件事。這東西原則上說...