日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏服务器概述

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏服务器概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聲明:本文內容源自騰訊游戲學院程序公開課。

一、什么是游戲服務器

1,從游戲玩家之間的交互形態出發

  • 單機游戲:一個人在機器上玩。
  • 聯網游戲:同時玩的范圍比較小,比如8-10個人。
  • 網絡游戲:在遠端有許多機器跑一個很大的系統,可以有幾千幾萬幾十萬甚至更多的玩家連進來一起玩。

2,游戲服務是互聯網服務的一種

  • 常見的其他互聯網服務有:搜索(百度)、電商(阿里)、即時通訊(騰訊)、郵件、視頻等

3,游戲服務的基本職能有哪些?

  • 網絡連接和數據收發:TCP收包打包分包。
  • 數據存取
  • 邏輯計算
  • 狀態保持:上下文、內部驅動等等。

4,游戲服務器:嚴格說是一個硬件概念

  • 常見種類:機架式服務器,刀片機,小型機。
  • 會根據游戲類型或運行程序的不同,在CPU/內存/硬盤上有所側重。

5,游戲服務器開發

  • 從游戲交互形態,看游戲開發分工

游戲后臺開發==游戲服務器開發

6,“游戲服務器”到底指什么?

  • 承載游戲服務的硬件
  • 提供游戲服務的軟件
  • 開發游戲服務的程序員

?

二、游戲服務的特點及應對

1,游戲服務要解決的核心問題

滿足海量游戲用戶的穩定和高質量的服務需求

  • 海量 - 十萬~百萬~千萬級同時在線,最高達億級注冊量;
  • 穩定 - 相對于:宕機,網絡和計算卡頓;
  • 高質量 - 快速:網絡延遲;邏輯嚴謹;更新頻率和及時性。

2,游戲服務與其他互聯網服務的區別?

延遲敏感

  • 實時交互游戲一般需要網絡延遲在300ms以內才能保證體驗。

實時的高強度交互

  • 單個終端高頻發送請求;
  • 單次請求引發多處數據改變;

業務邏輯復雜,內部耦合度高

  • [延遲敏感+高強度交互]同時作用下,[狀態維護]往往成為必需;
  • 復雜游戲服務的實現代碼,可達百萬行量級。

變更頻度高,幅度大

  • 變更幅度,包含內容和邏輯。

3,前后臺程序的區別

  • 獨占,意味著什么?
  • 擁有所有資源的控制權;
  • 重視資源的合理使用而不是最少占用。
    • 大量并發任務,意味著什么?
  • 重視性能;
  • 重視可伸縮性。
  • 性能來自于

    • 算法選擇與算法優化:排序、查找、空間-時間。
    • 操作系統/應用程序運行機制:IO多路復用;局部性原理;編程語言。
    • 硬件:CPU的充分利用_多線程/多進程;存儲層級的理解和利用;多隊列網卡。

    持續運行,意味著:穩定最重要;容錯;日志和監控。

    (1)服務穩定包含的因素

    • 避免程序異常終止;
    • 持續高效的運算與通信。

    (2)如何才能做到穩定?

    KISS==Keep It Simple&Stupid (一看就懂)

    容錯方面

    (1)錯誤不可避免(邏輯自身bug、程序運行環境、外部影響)

    (2)基本要求 - 錯誤范圍可控

    • 一個用戶的錯誤不要傳染到其他用戶;
    • 非核心功能的失效不要導致整個系統服務的失效。

    (3)基本應對 - 錯誤隔離和可快速恢復。

    4,游戲后臺開發的方法論

    (1)本質上是應對海量服務的問題。

    (2)出發點:兩種不同的困難

    • 事情本身邏輯很簡單,但是并發規模非常大;
    • 事情本身的邏輯復雜,要經歷復雜的處理步驟。

    (3)方法論 - 分治

    大的問題分解成小問題,小問題繼續分解,最終在合適的力度下得到解決。

    服務分布化

    • 三層架構:接入-邏輯-存儲;
    • 通用服務:微服務。

    內部復雜度應對:分層分塊。

    (4)方法論 - 灰度

    什么是灰度:拋棄0/1思維;在不同的場景下提供不能的服務。

    在不同范疇維度的應用:服務降級;灰度分布。

    感悟:任何事情都不是非黑即白的,可以灰度發布,灰度服務(取中間值)。

    5,游戲服務器的相關參與者

    開發者:服務器程序員。

    開發伙伴:客戶端程序員,游戲策劃。

    構建-測試:測試工程師。

    部署維護:運維工程師。

    ?

    三、游戲服務器開發技術介紹

    1,算法

    (1)了解常見查找/排序算法的特點:利用算法來改善性能,勝于通過編譯器選項、編程技巧;

    (2)根據業務情況合理的選擇算法

    • 盡量選用復雜度<=O(NlogN)的算法;算法時間復雜度查詢
    • 常見話題:C++ STL的使用。

    2,系統層面

    (1)對操作系統基礎知識的了解

    • 處理器管理
    • 進程管理
    • 線程調度
    • 內存管理
    • IO管理
    • 權限管理 ...etc

    (2)對Linux操作系統的了解

    • 內核
    • 用戶管理
    • 文件系統
    • 進程、線程
    • 進程間通信
    • 網絡
    • 信號處理
    • 權限等

    3,開發工具

    • 對編譯器gcc的了解
    • 對調試器gdb的了解
    • 對文檔工具ar的了解
    • 對autotools的了解
    • 對Makefile的了解
    • 對性能分析工具的了解
    • 對內存泄露調試工具的了解
    • 對samba文件共享的了解
    • 對版本管理工具(cvs/svn/cc)的了解

    4,語言

    (1)選擇編程語言的幾個因素

    • 業務復雜度
    • 執行效率VS開發效率
    • 開發人員和團隊能力

    (2)C/C++技能要求

    • 對C/C++的語法非常了解
    • 對Ansi C庫函數非常了解
    • 對指針有正確而且牢固的認識
    • 對STL庫非常了解
    • 對C/C++語言的內存分配機制非常了解
    • 對第三方框架的了解(如ACE/ICE等)

    5,腳本語言

    (1)Shell腳本

    • Linux下的程序開發,學會使用shell腳本會大大的提高工作效率;
    • 一些工作適合用shell來完成,開發效率更快;
    • shell腳本常常被用來做一些集成的工作。

    (2)程序內嵌腳本語言

    • 了解腳本(解釋性語言)的優缺點;
    • 腳本在游戲開發中的適用范圍;
    • Lua/Python/自定義腳本。

    6,軟件設計技巧

    (1)化繁為簡的重要途徑:區分“變化性”是其中的關鍵。

    (2)設計原則 - SOLID

    • 單一責任原則
    • 開發-封閉原則
    • 里氏替換原則
    • 依賴倒置原則
    • 接口分離原則

    (3)設計模式:可以視為設計原則的應用。

    想清楚:用到這些方法、方式,它的原因是什么?

    7,Linux下的常用工具

    • 系統管理工具:ipcs/ps/top/...
    • 文件系統工具:ls/find/where/which/locate...
    • 文件處理工具:sed/grep/...
    • 性能檢測工具:iostat/memstat...
    • SSH工具:ssh/ssh2/sshd/ssh2d/scp/...

    8,專項技術

    (1)關系數據庫

    • 對數據庫原理的了解
    • 常見DBMS:mysql:了解mysql的安裝和簡單管理;性能調優的房;賦值;備份和恢復。
    • 對SQL語言的了解及使用
    • 對數據庫表結構設計的了解

    (2)NoSQL

    • KV型的數據存儲方式
    • CAP & BASE
    • Redis/MongoDB

    (3)文件

    (4)網絡接入,協議

    • 了解TCP/UDP協議
    • 了解HTTP協議
    • 底層網絡編程接口:BSD SOCKET
    • 網絡多路處理機制:signal/select/poll/epoll/...
    • C10K ~ C1000K
    • Google Protobuf

    ?

    四、參考資料

    服務器_維基百科

    游戲服務器與普通服務器有什么區別_知乎

    Lua 為什么在游戲編程領域被廣泛運用?_知乎

    ?

    五、總結

    在拿到offer的那一刻,我不知道游戲服務器端是做什么的。在部門大佬的指導和介紹下,我打開了本課程開始學習。課程總共有16節,我爭取學習完一節課程后就整理,總結,吸收好這節課的內容,然后發布到博客上,希望我能堅持到底!

    如果有寫的不好或需要補充的地方請及時提出來,我看到后會及時更新的。^_^

    ?

    轉載于:https://www.cnblogs.com/OctoptusLian/p/9367578.html

    總結

    以上是生活随笔為你收集整理的游戏服务器概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。