閘道器gateway,它負責與客戶端建立連線,接收客戶端傳送過來的訊息,並對訊息進行驗證,**等。
1,閘道器的功能
1.1 與客戶端建立連線
這個應該是閘道器最基本的網功了,乙個服務做為閘道器,所有客戶端來的訊息都必須先到達這裡。客戶端與閘道器採用tcp長連線。
1.2 訊息過濾
客戶端可能給伺服器傳送任何訊息,合法的或非法的都有可能。而閘道器對業務服務進行了隔離,訊息到閘道器這,閘道器會對訊息進行解密,解包,對訊息的合法性進行統計一的驗證,過濾出非法的請求,減少業務服務的不必要處理的請求量,減輕業務服務的壓力。
1.3 訊息**,負載均衡
閘道器接收到訊息後,根據訊息的路由原則,把訊息分發到登入伺服器或中心伺服器去處理。而且還可以部署多個閘道器,分散太多客戶端的壓力。
玩家進入各遊戲伺服器時,不需要斷開與閘道器伺服器的連線,玩家資料在不同遊戲伺服器間的切換是內網切換,切換工作瞬間完成,玩家幾乎察覺不到,這保證了遊戲的流暢性和良好的使用者體驗。
1.5 保持心跳
閘道器伺服器可以定時通過傳送心跳包給正在連線客戶端,保證客戶端與閘道器的連線,如果某個客戶端掉線了,那麼閘道器就通知各個伺服器去做玩家的下線處理邏輯。
2,閘道器實現中用到的第三方技術
1,與客戶端建立連線
由於閘道器需要與客戶端建立大量的連線,需要承載高併發,高效能的任務,使用tcp長連線的閘道器,我們採用完成埠做為io通訊。
2,與伺服器通訊,分發訊息包
客戶端與服務端採用tcp長連線通訊,採用完成埠,根據訊息的路由原則,**訊息到登入服或中心伺服器。
3,閘道器的功能實現
1,訊息解密
2,訊息解析
3,訊息**
4,訊息序列化
5,心跳連線
4,管理與客戶端的連線
閘道器需要管理所有的客戶端連線。客戶端連線到閘道器之後,並且驗證過之後,我們需要把連線的channel和使用者繫結起來,這樣方便使用使用者id查詢到它和客戶端的連線,就可以給客戶端返回訊息了。
5,訊息的定義
客戶端與伺服器在tcp長連線的情況下,使用訊息進行資料互動。乙個訊息代表客戶端發出的乙個請求,或伺服器返回給客戶端的乙個響應。
訊息的組成
包頭資訊:
包體資訊
6,訊息**和接收
根據訊息的路由原則,**到相應的伺服器。
SpringCloud閘道器gateway超時排查
如圖所示,運營人員反饋線上偶發性出現異常,然後我們獲取一筆單來看,發現閘道器超時。系統用的是springcloud閘道器gateway作為服務 出現超時的ip和專案部署伺服器的ip並不是同乙個ip,假設上面異常 10.10.10.11,而專案部署伺服器的ip 10.20.10.11,明顯不一致導致,...
gateway閘道器筆記
gateway在專案中充當閘道器的作用 使用可看spring官方文件 projects spring cloud learn spring cloud gateway reference doc.route 路由 predicate 斷言 filter 過濾器 配置方式 spring cloud g...
Gateway閘道器 Predicate斷言配置
判斷時間在after配置的時間之後規則才生效 spring cloud gateway routes id after route uri predicates after 2017 01 20t17 42 47.789 07 00 america denver 判斷在before之前路由配置才生效...