快樂地耕耘著

          上帝說要有光

          常用鏈接

          統計

          最新評論

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

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

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

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 屏山县| 德安县| 山丹县| 纳雍县| 东源县| 凤阳县| 合肥市| 博罗县| 深水埗区| 惠安县| 石嘴山市| 江山市| 厦门市| 陆河县| 潍坊市| 宿迁市| 长岭县| 松原市| 台北市| 盐津县| 贡山| 南充市| 泰安市| 丽水市| 高雄市| 陆河县| 同江市| 青神县| 依兰县| 三穗县| 新密市| 全椒县| 江口县| 家居| 沐川县| 仲巴县| 汽车| 武夷山市| 民权县| 盐亭县| 南岸区|