程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 服務器開發的一點心得體會,開發心得體會

服務器開發的一點心得體會,開發心得體會

編輯:C++入門知識

服務器開發的一點心得體會,開發心得體會


這段時間在公司做一款游戲服務器開發,開發過程中的一點體會記錄下來,日後也是一點經驗

1.定時刷新機制,服務器中,要有不斷定時刷新的措施,比如任務系統

2.線程的管理和調度,一般使用線程池方案

3.內存方面,為了提高性能,通常使用內存池,而不是頻繁地動態分配內存

4.數據包的設計,通常為 頭部+數據包體 的方式,接受數據包時,先接受包頭,然後根據包頭描述的大小接收剩下的數據;

   數據包的內存表現上,為了節省空間,通常將數據按二進制形式串行化(或者說序列化)到Buffer中再發送。

 Google的protobuf是個很好的工具,雖然在此次項目中沒有用到,以後可能會考慮使用。

5.隊列的運用,服務器中一般是多線程處理,隊列的思想能夠讓邏輯變得清晰,服務器中經常用到,比如數據包隊列。其實在Windows平台下,完成端口IOCP也是運用了隊列 的思想

6.避免競爭,將一個Socket或者連接的處理都放在一個線程中,不要讓多個線程同時處理同一個socket

7.日志系統,日志系統也可以運用線程和隊列思想,可以考慮用跨平台的日志庫,Log4cplus(Log4cxx),一款功能強大的開源C++日志庫

8.異步回調思想的運用,服務器中有時要處理的結果比不是馬上能夠獲取到會發生阻塞,比如數據庫的查詢等,此時可以運用異步回調的方式提高性能

9.超時檢測,有時候由於網絡原因,客戶端已經斷線了,但服務器可能會很久都沒收到信號,因此,定時的超時檢測是很有必要的。

10.狀態機的運用,比如用戶狀態機,狀態機的運用能夠使得邏輯更清晰

11.設計模式運用,用的比較多比如單例模式,觀察者模式

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved