摘要:構建高性能服務器前言一想法一直想用做個項目,因為比較喜歡網(wǎng)絡通信這部分,又讓事情變得更有些挑戰(zhàn)性,我最終選擇實現(xiàn)一個高性能的服務器。
C++構建高性能Web服務器——Step 0:前言 一、想法:
一直想用C++做個項目,因為比較喜歡網(wǎng)絡通信這部分,又讓事情變得更有些挑戰(zhàn)性,我最終選擇實現(xiàn)一個高性能的Web服務器。
在宏觀上我希望TinyWeb能夠這樣:
配置簡單
擴展容易
性能高效
功能強大
并希望在開發(fā)的過程中能夠掌握以下知識:
Unix環(huán)境編程的技能
Unix網(wǎng)絡編程的技能
鞏固C++11知識
掌握構建大型C++項目的技能
掌握多進程、多線程同步、通信機制
實現(xiàn)高性能可復用Memory-pool
掌握基本的數(shù)據(jù)結構(紅黑樹、鏈表、Hash)
能夠把通用的網(wǎng)絡部分作為多帶帶的網(wǎng)絡庫、為以后網(wǎng)絡開發(fā)提升效率
TinyWeb 目前的功能是:
基本的Web服務,只能提供靜態(tài)網(wǎng)頁服務。
單進程+Reactor+非阻塞方式運行
只能用于Linux系統(tǒng),不專注跨平臺
基本的Web服務配置
TinyWeb 目前的發(fā)展計劃:
使用進程池的方式提高并發(fā)性
強有力的支持多種版本Http協(xié)議
負載均衡功能
代理功能
如果IO事件沒有發(fā)生,系統(tǒng)阻塞的等待IO事件發(fā)生,那么CPU就被
浪費了,為實現(xiàn)高并發(fā),不能讓進程阻塞,CPU等待IO事件.
借助Linux高效的Epoll機制,
至于為何使用Epoll,而不使用Select或Poll,點這里看看吧.
2.為了提高并發(fā)性:到底是選擇多進程還是多線程模式3.C++最難管理的還是內(nèi)存多進程與多線程各有優(yōu)缺點,并且大部分是互補的,具體就不再贅述了,
詳情請戳這里
我選擇多進程的原因是:安全性高,一個進程崩潰不會影響別的進程
容易調(diào)試,不易造成死鎖
有較為成熟的進程間通信同步機制(共享內(nèi)存,信號,文件鎖,socketpair....)
在接受客戶端連接的時候,如何再去創(chuàng)建一個進程,效率低下.故因此采用進程池的方式:
Master進程為父進程,主要控制子進程的狀態(tài);可動態(tài)配置數(shù)量的Slave子進程,用于接受連接,
處理Http邏輯.
為了方便的進行內(nèi)存管理,我設計了一個內(nèi)存池,不會產(chǎn)生大量的內(nèi)存碎片,性能待測試.以后還會4.進程間通信的方式很多,到底選擇哪幾個
介紹如何實現(xiàn)的,盡請期待.
了解了下Nginx,有考慮了使用的復雜度,我決定使用這幾個通信.同步機制
原子操作
信號量
消息隊列
共享內(nèi)存
信號
想要源代碼的請戳這里,希望大家多多對代碼風格做出評判,畢竟自己只是個大三的學生.
小伙伴想要了解更多的高性能的網(wǎng)絡編程,推薦一個大神的專欄
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41405.html
摘要:構建高性能服務器前言一想法一直想用做個項目,因為比較喜歡網(wǎng)絡通信這部分,又讓事情變得更有些挑戰(zhàn)性,我最終選擇實現(xiàn)一個高性能的服務器。 C++構建高性能Web服務器——Step 0:前言 一、想法: 一直想用C++做個項目,因為比較喜歡網(wǎng)絡通信這部分,又讓事情變得更有些挑戰(zhàn)性,我最終選擇實現(xiàn)一個高性能的Web服務器。 在宏觀上我希望TinyWeb能夠這樣: 配置簡單 擴展容易 性能...
摘要:為了便于您更清晰的理解的體系架構,在這里我將為您展示年開發(fā)者知識圖譜,它包含了所有開發(fā)過程中的關鍵部分。在數(shù)據(jù)展示前端導入導出圖表面板數(shù)據(jù)綁定等場景無需大量代碼開發(fā)和測試,可極大節(jié)省企業(yè)研發(fā)成本并降低交付風險。 作為 Vue 的初學者,您或許已經(jīng)聽過很多關于它的專業(yè)術語了,例如:單頁面應用程序、異步組件、服務器端呈現(xiàn)等,您可能還聽過和Vue經(jīng)常一起被提到的工具和庫,如Vuex、Webp...
摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為...
摘要:新聞熱點國內(nèi)國外,前端最新動態(tài)蘋果開源了版近日,蘋果開源了一款基于事件驅(qū)動的跨平臺網(wǎng)絡應用程序開發(fā)框架,它有點類似,但開發(fā)語言使用的是。蘋果稱的目標是幫助開發(fā)者快速開發(fā)出高性能且易于維護的服務器端和客戶端應用協(xié)議。 showImg(https://segmentfault.com/img/remote/1460000013677379); 前端每周清單專注大前端領域內(nèi)容,以對外文資料的...
閱讀 1407·2021-11-24 10:20
閱讀 3649·2021-11-24 09:38
閱讀 2294·2021-09-27 13:37
閱讀 2196·2021-09-22 15:25
閱讀 2270·2021-09-01 18:33
閱讀 3488·2019-08-30 15:55
閱讀 1783·2019-08-30 15:54
閱讀 2081·2019-08-30 12:50