為什麼要進行閘道器限流?
手遊的架構通常是客戶端通過socket連線直連閘道器,所有請求都需要經過閘道器,然後由閘道器統一進行**,所以只需在閘道器進行限流即可。
常見的演算法主要有計數器限流、令牌桶限流和漏桶限流,這些演算法都是單機的演算法,正好可以用在閘道器限流。
演算法
1、計數器限流
嚴格意義上來說計數器限流不屬於限流演算法,使用計數器來進行限流,主要用來限制總併發數,比如資料庫連線數;只要全域性總請求數或者一定時間段的總請求數設定的閥值則進行限流,是簡單粗暴的總數量限流,而不是平均速率限流。
2、令牌桶演算法(token bucket)
令牌桶演算法是乙個存放固定容量令牌的桶,按照固定速率往桶裡新增令牌。令牌桶演算法的描述如下:
令牌桶演算法(來自網路)
3、漏桶演算法(leaky bucket)
漏桶演算法是乙個存放固定水滴的桶,按照固定速率流出水滴,可以用於流量整形和流量控制,漏桶演算法的描述如下:
漏桶演算法(來自網路)
對比
基於golang的演算法實現:
遊戲伺服器架構
登陸伺服器判斷賬戶合法性,如果合法的話,把session資訊寫入memcache,閘道器伺服器收到玩家連線請求後,在memcache裡查詢是否合法玩家,防止非法連線。閘道器伺服器要管理玩家連線,需要高併發,可以開多個 scene mgr純粹的 訊息功能 資料庫伺服器純粹的查詢修改資料功能,如果成為瓶...
遊戲伺服器架構
只是負責驗證使用者名稱和密碼,驗證之後返回token,token是有有效時間的,在有效時間內,並沒有保持連線的必要,所以,這裡的requestresponse可以做成短連線 http請求響應模式 提公升併發。如果超過了有效時間還沒有進入遊戲,令牌失效,在登入驗證時將被踢回重新獲取令牌。登入伺服器和閘...
遊戲伺服器架構簡介
遊戲的架構設計非常重要,好的架構 清晰,責任明確,擴充套件性強,易於除錯。這些會為我們的開發省下不少時間,對於遊戲伺服器的架構設計,我們首先要了解遊戲的伺服器架構都有什麼組成?一款遊戲到上線,需要具備哪些功能?遊戲架構本身代表是乙個體系,它包括 1.系統初始化 系統初始化是在沒有客戶端鏈結的時候,伺...