快樂地耕耘著

          上帝說要有光

          常用鏈接

          統計

          最新評論

          通用網絡服務器的設計思路

          1. 設計目標:
          ? 高性能,高擴展性,的網絡服務器的底層框架??赡苡腥藭朇++有了ACE庫,而且現在ACE也已經移植到了Java上去了還需要你這個框架嗎?我想說的是我的這個框架是基于ACE之上的。對于某種網絡服務器實現的抽象。ACE提供的是將功能與系統底層具體實現的隔離的infrastructure 級別的框架。而我的這個服務器框架提供的是一種半成品的網絡服務器。只有實現某些狀態接口,回調接口就是一個完整的網絡服務器.?

          2.原始動機:
          ?最開始寫服務器端的程序之時處理用戶并發就是采用多線程的方式,每個用戶聯接用一個線程維護。對于小并發量,小負荷的服務器而言這樣設計最為簡單直觀??墒菍τ诖蟛l處理量的服務器而言派生大量的線程單單線程間的context切換的處理量就已是相當驚人了。更何況OS線程數量的上限以及線程本身消耗的OS內核資源都使得線程模式的服務器不具備良好的擴展性。因此我們會用select的網絡事件的機制來用一個線程來為多個并發用戶服務。這樣做帶來的開發上的區別不僅僅是轉換API那么簡單。因為換用了采用網絡事件來驅動程序,一個用戶的處理不再可以一條線由頭處理到尾了。收到讀事件后還需要當前用戶的狀態才知道下一步的處理。程序邏輯越復雜狀態也越多。如何在一個網絡服務器框架中將這些復雜的狀態遷移機制封裝起來。用一些簡單的描述文件+接口實現就可以組裝出一臺網絡服務器這就是我的設計要解決的問題。目前這個原型是用java NIO來實現的。計劃C++版本就用ACE作底層

          3.目前狀態:
          ?對于java NIO的探索階段已經完成,也構造了基本的原型?,F在的新的設計思路就是并發多個selector線程,Socket Channel 讀操作以及一些不耗時的狀態效驗的操作都在selector線程中完成。其余與IO無關的耗時的邏輯都由另外一個線程池中的線程來完成.

          posted on 2006-05-16 14:20 勤天 閱讀(249) 評論(0)  編輯  收藏 所屬分類: 設計收集站


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 丹东市| 泊头市| 伊春市| 大余县| 中超| 镶黄旗| 新建县| 阳新县| 醴陵市| 阳东县| 永城市| 余江县| 登封市| 静安区| 银川市| 屏东县| 京山县| 依兰县| 巴楚县| 江西省| 讷河市| 格尔木市| 弋阳县| 宜川县| 宁德市| 南涧| 烟台市| 伊吾县| 白城市| 临安市| 什邡市| 南涧| 汽车| 丹凤县| 瑞丽市| 桂林市| 昌邑市| 榆社县| 广西| 营山县| 许昌县|