網關服務器分佈式部署(網關: 轉發服務)

1)筆記

1)通用服務器
  (1)網關服務器
  (2)用戶服務器
 
2)系統服務器

3)遊戲服務器

4)多服務器啓動部署
  (1)因爲服務器是c++ lua,因此build出來一個exe用於啓動lua腳本即可啓動
     不同的服務器
  (2)搜索路徑的設置: 共用Stype和Ctype,因此搜索路徑設置爲scripts/ 下,
     因此即使是當前目錄,也要加上 "gateway/gw_service" 這樣

5)網關服務器的功能
  (1)最大的功能是轉發: 客戶端消息-->服務器  服務器消息-->客戶端
  (2)網關服務器的優點
    a.將整個系統的運算和負載分到不同服務器上,方便擴展
    b.千錘百煉的進程不容易掛掉,後面開發的業務進程經常改變,容易出問題,
      業務進程掛掉了,玩家還和網關連接着,不會感知的到 
    c.獨立的網關服務器可以分散業務進程的壓力,讓服務器容納更多的人;
      如果玩家直接去連接業務服務器,只能連接一個,而有網關,則可以轉發到
         不同的服務器上,提升一組服務器的負載
    d.負載均衡和廣播消息的負載均衡,因爲網關知道哪個服務器有負載等

6)目錄調整:
  (1)進程架構目錄:
     gateway
     auth_server  或者 account_server
     talkroom

  (2)Stype.lua: 標記都有哪些服務器
     Auth = 1
     System = 2
     Logic = 3

  (3)Cmd.lua 或 Ctype: 標記所有命令的值 和 protobuf的enum對應,複製過去即可

  (4)game_config.lua: 服務器配置文件
    gateway
      tcp的ip、port: 對外給客戶端使用的tcp端口 
      websocket的ip、port: 對外給客戶端使用的websocket端口 
 
    remote_server: 
      gateway與業務進程之間只採用tcp連接, ws只提供給客戶端即可
      網關啓動後,就會去連接remote配置的這些server
      我們一個個服務來寫,寫一個加一個就ok了

    遍歷servers列表,在網關注冊好這些網關轉發模塊對應的這些服務,只要到了網關後,
      檢測是這個命令,則會走進轉發模塊,轉到對應的ip地址和端口

7)註冊網關轉發模塊
  (1)key:  對應的服務號
     value: 直接搞一個gw_service

  (2)on_gw_recv_cmd: 當收到客戶端對應的命令後,就會進入,轉給其它服務器


  (3)on_gw_session_disconnect: 當客戶端斷開連接後,我們將客戶端斷開的消息
    轉給其它服務器

  (4)gw_service:也叫作轉發服務, 直接轉給對應的stype即可

8)業務邏輯開發人員需要做些什麼?
  (1)複製一個service,在main裏面註冊好對應的類型,當有屬於這個service的業務請求進來的時候,
    這樣就獨立出來了人與人之間的相互交叉

  (2)整個框架就在做事件分發

9)整體架構
  (1)協議

  (2)腳本
    腳本下面有各個服務器
    配置文件
    每個服務器裏面有個入口 + service

  (3)業務邏輯獨立於service進行開發,方便進行分佈式的部署 和 業務拆分
  
  (4)有其它service掛到這個進程下,則在main.lua註冊即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章