• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            記錄自己的程序人生和感悟,記錄自己成長的點點滴滴

            目前興趣,游戲開發。

             

            服務器設計,開發的體會

            做服務器有一段時間了,想記錄下自己的體會。
            依我的看法,服務器可以看做是4個部分組合起來的, 底層的網絡框架, 通用的數據結構和庫, 整個服務器的架構設計,服務器的上層業務邏輯。
             
            底層的網絡框架,目前可以說技術基本都是公開的了, 可以自己從頭寫,采用iocp,epoll。也可以直接使用ace, libevent 或者asio,
            如果是linux下,我覺得libevent是個非常好的選擇,效率足夠,而且可移植。代碼也簡單。ace的缺點,就是比較大,用他來開發,沒有什么問題,
            遇到問題需要查找維護,就比較棘手了,asio看過一點,proactor模式的。口碑也不錯。
            如果直接用這些庫來支撐上層邏輯,那么上層的開發還是比較麻煩的,自己還需要在這些庫的基礎上,再加上一些封裝,以簡化上層的開發難度。
            譬如lau stephen老兄的spserver, 就是個不錯的嘗試。他是在libevent的基礎上,整合出一個應用層框架。
            網絡框架的兩個關鍵點,1是性能要足夠,2是要方便上層開發。3是要穩定,有這3點,就足夠了、
             
            通用的數據結構和庫,主要是用來實現一些封裝,譬如封裝線程,封裝數據庫訪問,封裝線程池,封裝內存池, 封裝線程安全的隊列,該隊列主要用來實現
            半同步,半異步模式中關鍵的排隊層。 這個庫,應該是隨著自己的經驗和水平的增進而不斷改進的。對于大部分服務器的開發,這個庫都是必要的.
             
            整個服務器的架構設計,設計架構的時候,考慮無非是簡單,容易擴展,安全性,成本也是一部分考慮。 沒有通用的架構,只有針對自己的需求和條件的
            比較好的架構。所以千萬不能照抄架構,要結合自己的實際情況來思考,別人的東西,只能參考。簡單的出發點,就是便于維護,KISS原則。
            擴展性的關鍵,就在一個負載均衡,要保證系統中沒有會阻礙性能提升的障礙點。安全性的考慮,很多關鍵的業務,必須部署在內網,以避免攻擊。
            例如,網游中常用的gate架構,既有安全性的考慮,也有負載均衡的考慮,他只把gate服務器部署在公網上。
             
            服務器的上層業務邏輯, 這塊千差萬別,但是有一些共同的問題。譬如邏輯采用單線程還是多線程的問題,如果上層業務很簡單,譬如就是簡單的數據庫查詢或者
            注冊認證,可以采用多線程來做邏輯,盡可能的提高服務器的性能。但是如果是很復雜的業務,譬如im或者網游邏輯服務器,數據交互會非常多,這個時候,多線程
            是很不可取的,維護,擴展性,都會出現很大的問題。查錯也會成為大麻煩。
            最好的線程劃分還是按照業務的相關性,把業務糾纏比較緊密的,放在一個線程里。各個線程直接,通過消息或者隊列來進行通信。

            邏輯服務器的高下,主要在于細節。譬如數據結構的效率,內存分配的效率,服務器的防御性編程處理, 對于客戶端的協議支持是否全面。 做邏輯服務器的關鍵,是要用心。只要是花心思了,保證穩定,能夠滿足客戶端的業務需求和性能需求,就是很好了。
             
             

            posted on 2008-06-14 10:13 Hellfire 閱讀(3676) 評論(8)  編輯 收藏 引用

            評論

            # re: 服務器設計,開發的體會 2008-06-14 11:00 cppexplore

            頂下!  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 11:20 true

            好文  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 11:47

            博主寫的不錯啊,有沒有具體的例子?  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 11:56 Hellfire

            @水
            例子,都是商業代碼,不好辦啊。

            其實開源的已經提供了足夠的例子了。只是自己去不去挖掘而已。  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 17:29 23

            不錯!  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 18:06 Kven

            說的太專業了,好難懂完。
            不過,小弟還是謝謝Hellfire的無私分享。  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-14 21:25 羅賓李

            不錯  回復  更多評論   

            # re: 服務器設計,開發的體會 2008-06-17 12:05 長江三峽

            好東東  回復  更多評論   

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            少妇久久久久久久久久| 国产精品99久久久久久www| 久久99久国产麻精品66| 久久久久亚洲精品无码蜜桃| 国产精品女同久久久久电影院| 99久久国产综合精品网成人影院| 亚洲另类欧美综合久久图片区| 久久国产欧美日韩精品 | 久久久久久国产精品无码下载| 久久99精品国产麻豆不卡| 久久综合亚洲色HEZYO国产| 久久人妻少妇嫩草AV蜜桃| 亚洲国产成人久久综合一| 无码精品久久一区二区三区| 亚洲AV无码1区2区久久| 久久人做人爽一区二区三区| 无码任你躁久久久久久老妇App| 国产人久久人人人人爽 | 久久精品国产亚洲一区二区三区| 久久狠狠爱亚洲综合影院| 久久久久噜噜噜亚洲熟女综合| 久久亚洲美女精品国产精品| 国产69精品久久久久观看软件| 久久精品国产亚洲Aⅴ香蕉| 久久免费高清视频| 国产亚洲精品自在久久| 亚洲va久久久噜噜噜久久天堂| 无夜精品久久久久久| 欧美成a人片免费看久久| 国产精品99久久久久久猫咪| 99久久国产综合精品网成人影院| 国内精品久久久久影院优 | 亚洲中文字幕无码久久2020| 狠狠色综合网站久久久久久久| 99精品久久久久中文字幕| 色综合久久久久久久久五月| 久久丝袜精品中文字幕| 午夜精品久久影院蜜桃| 91精品国产综合久久香蕉 | 2021久久精品国产99国产精品| 7777久久久国产精品消防器材|