當前位置:首頁 » 雲伺服器 » 伺服器怎麼開發

伺服器怎麼開發

發布時間: 2022-01-24 11:32:04

A. linux伺服器開發需要哪些知識'

[開發前准備]
在進行linux伺服器開發之前,必須很清楚地了解所開發的對象需要考慮的相關問題
比如:
功能架構:提供服務的模塊體系結構
穩定性:伺服器的出core率,內存泄露情況
性能:請求與返回的速度與正確性
負載能力:能同時訪問的最大數量和頻度
根據不同伺服器對象的環境和應用,伺服器開發的對應手段相差甚遠。比如就客戶端連接時間較短卻又比較頻繁的伺服器(例如HTTP伺服器)而言,
在可選的伺服器結構中,預先派生進/線程的結構就要比並發式結構高效
總之,在開發伺服器之前,必須進行完整的伺服器開發需求分析,否則一旦你的伺服器開發完成而因為效率或者其他某項事物不能滿足你的客戶,那麼很有可能失敗!
[伺服器讓我明白了這件事情]
伺服器一般在後台運行,與客戶端的交互通過請求和返回兩種方式進行通信。
以epoll為例,一個epoll開發的伺服器程序,等待著一百萬的客戶端用戶的請求,輪詢觀察某個時刻是否有客戶端發來的請求;排隊依次處理發來的請求,並將結果返回給
客戶端應用程序。
涉及到幾個技術問題:
第一,客戶端訪問進入epoll輪詢隊列的優先順序是否需要控制。比如甲是我們的vip白金用戶,那麼,我始終先處理甲發來的請求,不然白金用戶要生氣的。
第二,極大可能程度上優化處理請求的速度,這是伺服器設計的核心業務。
第三,如果客戶端請求了這樣一個事情:我需要看這一百年來某企業所有的信息,那麼我想這個信息量是很大的,也就是現在很熱門的大數據大文件傳輸問題,如何快速
將服務端的這些結果傳給客戶端,在帶寬允許的情況下當然越快越好!這里會有很多處理措施,當然你可以打成一個包直接扔過去,但是這樣是愚蠢的,像蝸牛背著一個
重殼在挪動,用戶可等不了這么久;聰明的做法當然很多,根據你的實際需要,比如,你可以壓縮,你可以分批,等等。
等等,其實伺服器的整個開發,每個細節都決定了你的伺服器的成敗優劣。在開發linux伺服器的項目後,我個人決定,一個讓你的伺服器變得強大的很重要的因素是——
——你不願意放棄任何一個可以挺高性能的因素,即使是快0.01ms或者少傳1bt的數據!
[流行的伺服器模型]
1 PPC/TPC 模型
這兩種模型思想類似,就是讓每一個到來的連接一邊自己做事去,別再來煩我 。只是 PPC 是為它開了一個進程,而 TPC 開了一個線程。可是別煩我是有代價的,
它要時間和空間啊,連接多了之後,那麼多的進程 / 線程切換,這開銷就上來了;因此這類模型能接受的最大連接數都不會高,一般在幾百個左右。
2 select 模型
2.1. 最大並發數限制,因為一個進程所打開的 FD (文件描述符)是有限制的 由 FD_SETSIZE 設置,默認值是 1024/2048 ,因此 Select 模型的最大並發數就被相應限制了。
自己改改這個 FD_SETSIZE ?想法雖好,可是先看看下面吧 …
2.2. 效率問題, select 每次調用都會線性掃描全部的 FD 集合,這樣效率就會呈現線性下降,把 FD_SETSIZE 改大的後果就是,大家都慢慢來,什麼?都超時了??!!
2.3. 內核 / 用戶空間 內存拷貝問題,如何讓內核把 FD 消息通知給用戶空間呢?在這個問題上 select 採取了內存拷貝方法。
3 poll 模型
基本上效率和 select 是相同的, select 缺點的 2 和 3 它都沒有改掉。
4 Epoll 模型
把其他模型逐個批判了一下,再來看看 Epoll 的改進之處吧,其實把 select 的缺點反過來那就是 Epoll 的優點了。
3.1. Epoll 沒有最大並發連接的限制,上限是最大可以打開文件的數目,這個數字一般遠大於 2048, 一般來說這個數目和系統內存關系很大 ,
具體數目可以 cat /proc/sys/fs/file-max 察看。
3.2. 效率提升, Epoll 最大的優點就在於它只管你「活躍」的連接 ,而跟連接總數無關,因此在實際的網路環境中, Epoll 的效率就會遠遠高於 select 和 poll 。
3.3. 內存拷貝, Epoll 在這點上使用了「共享內存 」,這個內存拷貝也省略了。
等等。
在開發你的伺服器之前,應根據自己的業務需求和實際情況,恰當地選擇伺服器的模型,這對這個伺服器的功能效率都是具有很重要的意義的

B. 有一台計算機伺服器,如何開發它呢

裝IIS,然後,開發代碼!

C. 伺服器開發需要學習什麼

  1. 伺服器所用到的知識:TCP/UDP,最基本的;

  2. 並發——你可以選擇使用select、poll,或者是多線程、多進程:如果你使用多線程,那麼就必須使用同步技術——信號量、互斥體、條件變數的一種或幾種,並且對於多線程技術,你還需要考慮使用進行線程分離與合並;

  3. 如果你使用了多進程,那麼同步技術就不是你需要考慮的了,你需要考慮的是進程相關的問題了,你是使用fork還是vfork,你該如何處理客戶端的請求,如何處理客戶端斷開連接後保證能夠處理完數據並且沒有僵屍進程產生,你還需要考慮高並發的問題;

  4. 你發送接受數據的時候,採用何種方式,是阻塞的還是非阻塞的,還有連接超時、重傳等問題
    你是選擇TCP還是UDP,如果選擇UDP你可得忙了,需要你自己去進行重傳驗證,模擬TCP的三次握手,保證數據不會丟失,保證數據的有序性;

  5. 還有其他很多需要你考慮的,以上都是指在Linux下的C++,本人對windows C++不了解。

  6. 推薦書目:UNIX高級環境編程,UNIX網路編程,卷一。C++只不過是你使用這些技術的方式,不管你使用C還是C++,你都可以使用從這兩本書中學習到很多有用的知識,但是不能保證你就可以寫出高質量的伺服器程序。

D. 伺服器一般用什麼語言開發

伺服器語言開發一般用Delphi、C++、.net 、 javaphppython等這幾種。

E. 如何開發web伺服器

伺服器的數字信號處理遠程模擬 2010-10-26
2007 基於 Matlab Web 伺服器的數字信號處理遠程模擬汪治華 ,朱海波 ,胡順仁 (... 貢獻者: sgne 汗牛充棟 八級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 0次| 0人評| 共3頁

_工控軟體互操作規范OPC技術_講座第9講輸入輸出板卡OPC伺服器程序的... 2010-10-10
對於硬體廠商而言 , 則需根據不同的硬 件開發不同的 OPC 伺服器程序 , 本文... 貢獻者: sgne 才識過人 七級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 0次| 0人評| 共3頁

油田單井數據自動化遠程採集系統 2010-12-14
現場設備將採集到的數據傳送到伺服器中 ,伺服器安裝了服 務器版本監控軟體 ,不... 貢獻者: sgne 滿腹經綸 十級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 13次| 0人評| 共5頁

北方交通大學基於三層B_S模式WEB資料庫在物流供應鏈信息系統中的應用... 2010-08-01
000撇leServer資料庫庫 JJJSP、EJB等中間件件 WWWWW瀏覽器/伺服器器資料庫層商業... 貢獻者: sgne 七級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 3次| 0人評| 共4頁

光纖測溫技術在變電站高壓開關櫃中的應用 2011-01-06
2 系統構成「光纖測溫系統」由位於集控中心的一台「變電站溫 度監測伺服器」(... 貢獻者: sgne 滿腹經綸 十級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 13次| 7人評| 共2頁

基於ArcSDE的空間基礎資料庫設計與實現 2010-12-01
伺服器端主要包括 A rcSDE 應用伺服器 和 RDBMS 伺服器以及地理資料庫實體 ( ... 貢獻者: sgne 滿腹經綸 十級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 1次| 2人評| 共3頁

利用負載均衡提升網路性能 2010-12-01
系統 。隨著 Web 和網路服務變得越來越成熟 , 僅僅 監視 Web 伺服器的某一層... 貢獻者: sgne 滿腹經綸 十級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 5次| 0人評| 共2頁

動態數據交換在礦井監測監控系統中的應用 2010-10-10
作伺服器向組態王客戶端返送的變數 ,取新變數名為 vbtoview。項目名為服務程序... 貢獻者: sgne 才識過人 七級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 0次| 0人評| 共2頁

基於C_的汽車測試系統無線通訊模塊的設計 2010-10-31
若此時伺服器 端有已存在客戶端的連接, 伺服器端發送「busy 」 信息到客戶端... 貢獻者: sgne 汗牛充棟 八級文檔關鍵詞 文檔關鍵詞暫無 更多相關推薦文檔 ...

貢獻者: sgne | 下載: 1次| 0人評| 共3頁

高校校園網站建設的關鍵技術 2010-10-18
摘要:高校網站建設按照性價比最優的原則選擇伺服器,優選含 CPU、硬碟、機箱的...

F. 如何一步步學習開發伺服器

因為題目中提到了Nginx和Tengine,所以這里假設是Linux下面的HTTP伺服器的開發。
HTTP伺服器開發是個漫長的體力活,如果真的想做下去,必須要有強烈的興趣支撐。但是除此之外,HTTP伺服器開發並沒有什麼特別高深的演算法在裡面,好好努力的話,做出來自己的HTTP伺服器也並不是一件太難的事。
需要准備的有:
扎實 的C語言編程基礎。相信到了大三的時候,你已經有了幾年的變成經驗,但是對於開發HTTP伺服器來說,還是遠遠不夠。課本中會給你C語言的一個大概講解,但是在現實世界中,還是會有很多課本中覆蓋不到的地方。因為你已經在閱讀Nginx的代碼了,所以建議你首先檢查一下代碼中是否有不認識的C語言語法和用法。如果有,那麼就自己Google學習一下。如果沒有,那麼說明你的C語言學的足夠好,不存在語言層面上的問題。接下來,非常推薦學習一下這本經典的The Practice of Programming。學校里學習到的知識太書本化,代碼又太專業,不好懂。這本書能幫你在兩者之間找一個平衡,讀了之後就會知道很多地方為什麼要這么做。
C語言准備的差不多了之後,可以開始准備網路編程的知識。Unix Network Programming的確是本好書,但是問題在於,它太厚了。對於初學者來說,它提供的東西太多了。從實用的角度,我更推薦Beej』s Guide to Network Programming,不太長,但是涵蓋了網路編程的基本上所有常用的內容。全部讀完也不過幾個小時的時間。UNP可以用來在修煉的差不多了之後用來做參考書。或者用來學習網路編程中具體某個細節的知識。
接下來,因為是要寫HTTP伺服器,所以對HTTP協議需要有很深入的了解。當然最權威的資料就是一系列的RFC,比如HTTP 1.1的hwww ietf.org/rfc/rfc2616.txt。這時候就到了最開始講的體力活的地方。不斷的仔細閱讀RFC,然後把它講到的內容全部用代碼實現一遍。當然,也有偷懶的辦法,直接使用現有的HTTP解析庫,比如h2o/picohttpparser · GitHub。
另外,關於Nginx的架構設計,Andrew Alexeev在 The Architecture of Open Source Applications (Volume 2): nginx裡面講的很清楚。這個會對你讀代碼有很大的幫助。

熱點內容
javarest 發布:2024-09-19 09:28:43 瀏覽:753
密碼子的原料是什麼 發布:2024-09-19 09:11:42 瀏覽:348
半夜編程 發布:2024-09-19 09:11:36 瀏覽:104
海康威視存儲卡質量如何 發布:2024-09-19 08:55:35 瀏覽:941
python3默認安裝路徑 發布:2024-09-19 08:50:22 瀏覽:517
環衛視頻拍攝腳本 發布:2024-09-19 08:35:44 瀏覽:419
sqlserveronlinux 發布:2024-09-19 08:16:54 瀏覽:257
編程常數 發布:2024-09-19 08:06:36 瀏覽:953
甘肅高性能邊緣計算伺服器雲空間 發布:2024-09-19 08:06:26 瀏覽:163
win7家庭版ftp 發布:2024-09-19 07:59:06 瀏覽:717