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註冊即可