在游戲服務(wù)器中,處理玩家登陸需要向數(shù)據(jù)庫查詢玩家的賬號(hào)和密碼,玩家上線和下線需要對(duì)玩家的角色數(shù)據(jù)從數(shù)據(jù)庫中讀取和保存。可以說,相對(duì)于游戲邏輯處理來說,數(shù)據(jù)庫操作是一種相對(duì)很慢的操作,即便你通過使用多個(gè)線程多個(gè)數(shù)據(jù)庫連接來提高數(shù)據(jù)庫操作的處理能力,但是,在高并發(fā)高負(fù)載的服務(wù)器應(yīng)用中,這樣仍然會(huì)是相當(dāng)?shù)呢?fù)載瓶頸。設(shè)想這樣一種設(shè)計(jì)方案,見下圖: 在大量玩家登陸游戲服務(wù)器時(shí),由于有大量的數(shù)據(jù)庫訪問請(qǐng)求,即便是有自己實(shí)現(xiàn)的CACHE機(jī)制,還是會(huì)導(dǎo)致服務(wù)器耗盡所有的邏輯線程資源,服務(wù)器的處理能力將降低成DBMS的處理能力。 為了不阻塞邏輯線程,可以采用異步數(shù)據(jù)庫訪問的方式,即數(shù)據(jù)庫操作請(qǐng)求提交給專門的數(shù)據(jù)庫處理線程池,然后邏輯線程不再等待數(shù)據(jù)庫處理結(jié)果,繼續(xù)處理其他,不再阻塞在這里。 抽象的來看,對(duì)于一個(gè)需要持久化的游戲?qū)ο髞碚f,可以考慮它有2個(gè)方法,讀取和保存。那么我們抽象一個(gè)DBO接口:
Powered by: C++博客 Copyright © 浩毛