網路遊戲伺服器中全域性廣播的優化
容器:
我們建立兩個連線的列表。把一個列表稱為未廣播連線列表,另一個稱為已廣播連線列表。
我們建立兩個廣播資訊的列表。一個稱為全域性廣播資訊列表,另一個稱為當前廣播資訊列表。
資訊傳送:
在傳送廣播資訊的地方,我們把資訊直接加入到全域性廣播資訊列表。
優化方法:
1- 廣播資訊觸發邏輯:
定期檢查全域性廣播資訊列表和當前廣播資訊列表,如果全域性列表不空且當前列表為空,則從全域性列表取定量的待廣播資訊,放入當前廣播資訊列表。
2- 廣播資訊傳送邏輯:
當前廣播資訊列表不為空時,從未廣播連線列表中取數個連線,將當前廣播資訊列表中的資訊從連線上發給客戶端,然後把這些連線加入到已廣播連線列表
直到未廣播連線列表為空,清空當前廣播資訊列表,交換未廣播連線列表和已廣播連線列表。
新連線到來:
根據需要,將他們加入到已廣播連線列表和未廣播連線列表。我是推薦加入到已廣播連線列表。防止收到重複的廣播資訊。
這樣優化之後,通過調整一次傳送的廣播資訊的量,和每次廣播的連線個數,就可以有效的降低廣播對伺服器的壓力。
相關推薦
網路遊戲伺服器中全域性廣播的優化
在網路遊戲伺服器中,有些通知,世界聊天等資訊需要對全服進行廣播,如果每條資訊都立即進行全服連線遍歷和傳送,不是很合適。所以有必要對這個進行優化。容器: 我們建立兩個連線的列表。把一個列表稱為未廣播連線列表,另一個稱為已廣播連線列表。 我們建立兩個廣播資訊的列表。一個稱為全域性廣播資訊列表,另一
網路遊戲伺服器注意事項,優化措施
1:IO操作是最大的效能消耗點,注意優化餘地很大。 2:演算法資料結構。排序尋路演算法的優化。list,vector,hashmap的選擇。大資料定址,不要考慮遍歷,注意考慮hash. 3:記憶體管理。過載new/delete,記憶體池,物件池的處理。 4:資料的提前準備
《網路遊戲伺服器端程式設計》——學習筆記(day1)
宣告 本人萌新一枚,以後想進入遊戲開發行業,so,開始自學《網路遊戲伺服器端程式設計》一書,在部落格上寫筆記以記錄提取一些書中我自認為有用的知識點,如有侵權或者一些別的問題,請私信我,謝謝! 網路程式設計基礎 網路遊戲伺服器端開發概述 Client/Serve
遊戲伺服器中的IOCP應用
2018年10月31日 18:13:23 michael_maomao 閱讀數:1 個人分類: 遊戲伺服器
一種經典的網路遊戲伺服器架構
@飯中淹 多謝樓主解答,不過還是有一些疑問,我說一下自己對這個架構的理解。 從使用者登入開始,使用者登入連線閘道器,發資料到loginserver校驗賬戶密碼,如果areaDB中沒有賬戶資訊,向資料中心要賬戶密碼,插入areaDB,以後校驗賬戶就可以直接在區域DB中做了,如果賬戶密碼
網路遊戲伺服器架構設計
入手 假如,我現在接手一個新專案,我的身份還是主程式。在下屬人員一一到位之前,在和製作人以及主策劃充分溝通後,我需要先獨自思考以下問題: 1、伺服器跑在什麼樣的作業系統環境下? 2、採用哪幾種語言開發?主要是什麼? 3、伺服器和客戶端以什麼樣的介面通訊? 4、採用哪些第三方的類庫? 除了技術背景之外,考慮
遊戲伺服器中pvp、pve、rppvp、ffa-pvp的含義
最近看mangos原始碼,在登入伺服器部分,遇到幾個伺服器型別的縮寫,讓我這個非玩家出身的人困惑了一陣,現列舉出來: pvp: 玩家對玩家.就係在爭奪中領土可以隨意攻擊敵對陣營玩家.不論級數 pve: 玩家對電腦.就是不論任何領地.除非戰場.都不能攻擊敵對陣營玩家. r
FSM:網路遊戲開發中的有限狀態機(實踐篇)
上一篇文章《FSM:網路遊戲開發中的有限狀態機(理論篇)》中,講解了FSM的基礎知識。這裡,我結合圖形及具體例子,講解下FSM在實際開發中的運用。首先,圖解下上篇文章中提到的各種action。1.InputAction:某狀態下收到某事件,輸出相應動作。這裡不發生狀態變更,只
Unity3D開發之網路遊戲中伺服器端的架構設計
最近在研究網路遊戲開發,感覺結構很好玩,所以就將自己學到了解到的記錄下來。部落格前幾篇的Socket通訊講的就是網路遊戲部分Socket的基本結構。上一篇的對MySql使用就是伺服器對資料庫的連線使用。今天要介紹的就是遊戲伺服器的設計架構以及一些核心程式碼。 通
Spark專案實戰-實際專案中常見的優化點-廣播大變數
首先我們從這篇部落格簡單瞭解下Spark中的共享變數。然後我們在這裡舉個簡單例子更加深入的瞭解一下為什麼需要廣播大變數。 假設,我們現在有一個外部變數A(大小10M),然後有三個Task都需要用到變數A。 在這種預設的,task執行的運算元中使用了外部的變數,每個ta
23中設計模式在遊戲伺服器裡面例子
遊戲裡面有很多資料有用XML 形式配置,有用資料庫生成。 建立型(6) 1.簡單工廠模式 由一個工廠物件決定創建出哪一種產品類的例項。 比如在遊戲活動設計的時候:每個活動配置資料的生成 public abstract class AbsLimitActiv
把組合(樹)模式整合到遊戲伺服器引擎中去!
什麼是組合模式? 組合模式是一種設計模式,和物件組合的概念是不同的。物件組合是相對於物件派生而言的一種物件間協作的關係。而組合模式是將物件組合成樹形結構以表示整體-部分的層次結構,使得使用者對單個物件和組合物件的使用更加一致的一種設計模式。( compose objects
linux伺服器歷險之sysctl優化linux網路
1, 優化網路裝置接收佇列 net.core.netdev_max_backlog=3000 該檔案表示在每個網路介面接收資料包的速率比核心處理這些包的速率快時,允許送到佇列的資料包的最大數目。 預設值:Red Hat Linux release 9 (Shri
《從零開始搭建遊戲伺服器》優化——Jedis連線池
前言 在Java的開發中,遇到一些耗時的操作,我們通常會啟動一個執行緒,讓新建的執行緒來完成這個耗時操作而不至於影響主執行緒工作的正常進行,而當需要同時進行多個耗時操作的時候,就要相應地為其建立多個執行緒,但是這樣顯然會造成執行緒的浪費,所以我們
Java遊戲伺服器開發之二十三--將xml-cfg和redis的配置內容加到properties中
Java遊戲伺服器開發之二十三–將xml-cfg和redis的配置內容加到properties中 之前將xml-cfg和redis的工具類都寫好了,但是裡面的引數都是寫在程式裡面的,這一篇的話就是講這2個的配置檔案寫到properties中,不需要編譯程式就可
libevent:一個在網路伺服器中事件驅動開發庫
Libevent 是一個基於事件觸發的網路庫。它提供一種機制,即當某個具體事件發生在一個檔案描述符上或已經達到超時時,來執行某一個回撥函式。此外,它也支援訊號或定時器事件的回撥。 Libevent 是為了取代在事件驅動的網路服務中的事件迴圈。應用程式只需要呼叫event_dispatch() 函式,然後動
Android-通過網路獲取xml檔案使用pull解析得到伺服器中的資訊(新聞客戶端)
通過網路獲取xml檔案,使用pull解析該檔案得到伺服器中的資訊; demo中使用了一個開源的圖片載入包,故上傳原始碼方便檢視; 效果圖: 步驟: 1.連線伺服器獲取xml檔案; 2.使用pull解析xml檔案存入實體物件中; 3.解析後將實體物件存入List集合中;
Go遊戲伺服器開發的一些思考(八):Docker橋接網路及固定IP
為什麼需要Docker的橋接網路 有時我們需要把Docker容器暴露到某個網段,這樣就可以把一個Docker容器看成一臺物理機。這時就需要用到Docker的橋接網路。 比如 在做Redis叢集時,通常現有的Redis管理軟體會通過ssh來管理一組Redis。
遊戲伺服器之伺服器優化思路
本文只是提供一些遊戲伺服器優化思路,其中一些思路是用在不同場合的,不是同個架構的。需要根據應用場景選用合適方式。本文的引用的文章都是在自己寫的在本部落格內的,也都是上線開幾百個服的成熟專案的。 一、框架設計優化 1、分靜態伺服器和動態伺服器。 2、動態伺服器使用兩層負載均
遊戲伺服器架構中的中心節點
議會制 Vs 君主制 分散式的伺服器架構有點像議會制度,每一個節點都可以參與制定管理策略,進行一部分工作(徵稅,作戰或是處理遊戲邏輯,儲存)。中心集中式的伺服器(比如比較古老的單程序伺服器架構),則把所有工作集於一身,自己愛幹嘛就幹嘛,毫無約束。他們的缺點也很明顯,對於議會