1. 程式人生 > >中小型棋牌類網路遊戲服務端架構

中小型棋牌類網路遊戲服務端架構

這裡寫圖片描述

Gateway

  1. 伺服器僅暴露 Gateway 監聽埠,Client 與 Server 之間通訊均通過 Gateway 轉發
  2. Client 與 Gateway 僅建立一條連線,Gateway 可與多種 Server(Login、Game)建立連線,初步設想同一時間僅保留一條連線,內網連線的切換代價不高,當然同時保留多條連線也行
  3. Gateway 應具備以下功能:加密與解密、壓縮與解壓,我個人認為沒有太大必要讓除 Gateway 之外的 Server 具備壓縮與解壓,邏輯簡單就好

Manager

  1. 所有的 Gateway、Server、DBProxy 均來這裡註冊登出用於 Client、Gateway、Server 發現可用的 Gateway、Server、DBProxy,來註冊的服務,應即時報告當前處理數量,實現負載均衡;應具有狀態(開放、關閉),實現偽熱切換
  2. 提供管理介面:開關指定服務,訊息廣播(系統訊息,全域性訊息),查詢和通知玩家所在 GameServer 玩家充值事件等等

Login

  1. 玩家註冊,玩家鑑權登陸,和不需要快取玩家資訊的所有邏輯(玩家在大廳裡的操作)

Game

  1. 快取玩家資訊實現遊戲相關邏輯

DBProxy

  1. 資料快取與持久化,監聽並與 Login、Game 進行互動

Message

  1. 訊息頭(長度32bit + 標識8bit + 主命令16bit + 子命令16bit) + 訊息體
  2. 標識用來按位指定是否加密是否壓縮
  3. 使用網路位元組序即大端位元組序
  4. 從主命令開始加密壓縮

注:

  1. Manager 只會啟動一個,剩餘所有服務均可多開進而負載均衡
  2. 客戶端傳送心跳包,服務端接收心跳包,實現客戶端保活
  3. 應該會為每個服務啟用守護程序(supervisor)
  4. 這裡並未獨立出來日誌伺服器,先這樣吧
  5. 有些架構中把登陸伺服器放在第一位,它的登陸和我的登陸意義不同,它的登陸像是一個使用者中心
  6. 客戶端獲取 Gateway 地址列表,要麼自己實現 Http 服務,要麼購買相關雲服務,相較於 DNS 指向這些地址更加靈活
  7. 沒有最好的架構,只有最適合的架構,隨著架構承載不起當前人數,我認為我會高興的加班調整已不那麼適合的架構,其實本架構我設想的是應對中小型棋牌遊戲專案

思考的時候有很多想要額外說明的,成文時卻東忘西忘,想到時再來補充吧

2017.4.15
關於 Login 想再多說些,它所實現的功能不能僅通過它的名稱來感覺,若把 Login 再拆成 Login、Lobby 也不為過,但是會讓架構稍微複雜些,若非要去掉 Login 把所有邏輯揉進 Game 也並非不可實現,我這裡所想的也只是滿足中小型這個期望作折衷而已,如何來判定指定邏輯是否應該寫入 Login 伺服器,我舉例來說明我的想法,譬如註冊、登陸、簽到、排行榜等等,這些邏輯可以通過 Login 與 DBProxy 直接互動返回結果,它們就應該寫入 Login 伺服器

相關推薦

中小型棋牌網路遊戲服務架構

Gateway 伺服器僅暴露 Gateway 監聽埠,Client 與 Server 之間通訊均通過 Gateway 轉發 Client 與 Gateway 僅建立一條連線,Gateway

中小型手機棋牌網路遊戲服務架構設計(帶原始碼)

承接自己《中小型棋牌類網路遊戲服務端架構》博文,用Golang實現基礎架構邏輯後,準備再次談談我的想法。 已實現的邏輯與前文描述有幾點不同: 1. Gateway更名為Proxy,DBProxy更名為DB 2. Proxy同時持有與(Login, Game

h5牛牛平臺搭建中小型棋牌網絡遊戲服務架構

tin timer redis緩存 公眾平臺 客戶端 三種 參考 組件 初始 h5牛牛平臺搭建相關教程:http://h5.mostsheng.com 相關聯系方式:QQ1279829431電聯17061863554 用Golang實現基礎架構邏輯後,準備再次談談我的想法。

基於滴滴雲的棋牌遊戲服務架構設計

現在小團隊開發的棋牌遊戲有很多,棋牌行業的相互攻擊是非常普遍的現象,同行之間往往會採取 DDOS、CC 等攻擊的手段來打擊對手,這是目前棋牌運營商們面臨的比較嚴峻的一個問題,那麼在設計棋牌遊戲服務端架構時就需要考慮高可用和抗攻擊這兩個特性,本文詳細介紹瞭如何基於滴滴雲現有的產品組合來設計一套

網狐棋牌遊戲服務架構設計原理

基本設計概念和處理流程 呼叫模型 模仿COM元件介面模式,利用面向物件思想多型性polymorphism,呼叫方儲存著被呼叫方的基礎介面指標(interface or sink鉤子)(Pure Virtual Function),呼叫方直接呼叫介面指標內宣告的純虛方法

遊戲服務架構介紹

型別1:卡牌、跑酷等弱互動服務端卡牌跑酷類因為互動弱,玩家和玩家之間不需要實時面對面PK,打一下對方的離線資料,計算下排行榜,買賣下道具即可,所以實現往往使用簡單的 HTTP伺服器:登入時可以使用非對稱加密(RSA, DH),伺服器根據客戶端uid,當前時間戳還有服務端私鑰

談一款MOBA遊戲《碼神聯盟》的服務架構設計與實現(更新優化思路)

一、前言   《碼神聯盟》是一款為技術人做的開源情懷遊戲,每一種程式語言都是一位英雄。客戶端和服務端均使用C#開發,客戶端使用Unity3D引擎,資料庫使用MySQL。這個MOBA類遊戲是筆者在學習時期和客戶端美術策劃的小夥伴一起做的遊戲,筆者主要負責遊戲服務端開發,客戶

談一款MOBA遊戲服務架構設計

一、前言   《碼神聯盟》是一款為技術人做的開源情懷遊戲,每一種程式語言都是一位英雄。客戶端和服務端均使用C#開發,客戶端使用Unity3D引擎,資料庫使用MySQL。這個MOBA類遊戲是筆者在學習時期和客戶端美術策劃的小夥伴一起做的遊戲,筆者主要負責遊戲服務端

關於棋牌服務架構的一點思考

公司的服務端架構可能有點問題···有些敏感資料都存放在客戶端這樣很危險。·· 敏感資料: 玩家金錢,遊戲中的加減錢,遊戲結算的加減錢,玩家的牌的邏輯資料,玩家傳送的命令。 這些資料都必須經過服務端的校驗才能轉發給其他客戶端。 目前的架構來說存在安全隱患,這樣做雖然能減輕伺

android開發之網路棋牌線上遊戲開發心得(伺服器、Java)

  這個專案的一個特別之處是,客戶端是手機,使用者通過行動網路與伺服器通訊。和PC相比,手機的處理能力極弱,而且網路流量費用昂貴。因為除了要考慮普通網路遊戲的一些問題之外,這兩點也需要在設計中充分考慮。  首先是開發語言的選擇,由於伺服器是Linux的環境,MS的技術直接排除,至於MONO嘛,我實在不放心。可

棋牌遊戲服務架構: 詳細設計(一) 內核設計

att 固定 但是 aar ase servers 比較 獲取 emp 內核的幾個組件被設計成Service,也就是說這幾個模塊都要實現如下接口: 圖1 IService接口 Start方法用來啟動服務。 Stop 方法用來關閉服務。

棋牌遊戲服務架構: 部署

logo 使用 承載 機器 div red 監聽端口 配置服務器 oom 先看一下,下面這張可能的部署圖吧。 在這個圖中,可以看到,客戶端的形式多種多樣,可能是pc上的一個可執行文件,也可能是通過瀏覽器打開的一個網頁,甚至於手機客戶端。它們都通過internet連

棋牌遊戲服務架構: 詳細設計(三) 數據庫設計

ice 影響 相關 地址 line person esc 站點 one 主要有3類Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存儲的是遊戲列表的信息,UserInfoDB存儲玩家的全局

棋牌遊戲服務架構設計

實時更新 取整 所在 存在 順序執行 思想 業務邏輯 請求 分區 轉載自:簡書一位同行的文章 一,棋牌類服務器的特點 1,棋牌類不分區不分服 一般來說,棋牌遊戲都是不分區不分服的。所以棋牌類服務器要滿足隨著用戶量的增加而擴展的需要。 2,房間模式 即在同一局遊戲中就是在

分享一個C++與Python開發的中小型通用遊戲服務框架(跨平臺,開源,適合MMORPG遊戲

在開發一款遊戲專案時,在立項時我們往往會考慮或者糾結很多,比如:   1,對於開發來說:服務端和客戶端應該選擇什麼語言?用什麼協議通訊才更效率?協議後期如何維護?Socket是用長連線還是短連線?TCP還是UDP?客戶端資源、配置表、程式碼如何進行熱更新?等等。   2,對於策劃來說:配置表使用什麼比較方便?

遊戲系統開發筆記(六)——服務架構設計

. http://blog.csdn.net/mooke/article/details/8913051 上回寫了寫服務端的分層結構,分層是比較巨集觀上的東西,至於層次間具體的互動方式還得通過各個模組的互動方式來體現,姑且把這種模組劃分以及其間的互動關係稱之為架構吧,下

怎樣讓tomcat啟動就執行我的寫的java,即遊戲服務

我的第一個服務端程式 最近在學習寫網路遊戲,所以要寫伺服器端程式,我找了一圈,PHP,JAVA,C,最後為了與阿里雲和騰訊雲的相容性好,成本低廉以及學習難度低,我選擇了java。 然後開始學習怎麼寫java的class。以及怎麼連線資料庫,怎麼實現隔幾秒執行

遊戲開發筆記(六)——服務架構設計

        上回寫了寫服務端的分層結構,分層是比較巨集觀上的東西,至於層次間具體的互動方式還得通過各個模組的互動方式來體現,姑且把這種模組劃分以及其間的互動關係稱之為架構吧,下面就來談談MMORPG的服務端架構,         對於製作一款遊戲而言,首先要考慮的是做什

Go遊戲服務框架從零搭建(一)— 架構設計

         五邑隱俠,本名關健昌,10年遊戲生涯,現隱居海邊。   本教程以Go語言分割槽遊戲服務端框架搭建為例。   Go語言是Google開發的一種靜態強型別、編譯型、併發型、具有垃圾回收功能的程式語言。語法上近似C語言,支援介面、可通過struct

多人即時戰鬥遊戲服務系列[2]--90坦克Online遊戲對象介紹以及渲染機制

d+ ica 部分 avi 產生 4.4 1.8 timer lock 先上類圖,略大,點擊此處放大: 1.先說下方接口 1.1 場景物品接口 ISceneObject : OpLog.IOpItem, IStackPoolObject 全部場景對象的基本