国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TinyWeb--C++構建高性能Web服務器

Yumenokanata / 1877人閱讀

摘要:構建高性能服務器前言一想法一直想用做個項目,因為比較喜歡網絡通信這部分,又讓事情變得更有些挑戰性,我最終選擇實現一個高性能的服務器。

C++構建高性能Web服務器——Step 0:前言 一、想法:

一直想用C++做個項目,因為比較喜歡網絡通信這部分,又讓事情變得更有些挑戰性,我最終選擇實現一個高性能的Web服務器。

在宏觀上我希望TinyWeb能夠這樣:

配置簡單

擴展容易

性能高效

功能強大

并希望在開發的過程中能夠掌握以下知識:

Unix環境編程的技能

Unix網絡編程的技能

鞏固C++11知識

掌握構建大型C++項目的技能

掌握多進程、多線程同步、通信機制

實現高性能可復用Memory-pool

掌握基本的數據結構(紅黑樹、鏈表、Hash)

能夠把通用的網絡部分作為多帶帶的網絡庫、為以后網絡開發提升效率

TinyWeb 目前的功能是:

基本的Web服務,只能提供靜態網頁服務。

單進程+Reactor+非阻塞方式運行

只能用于Linux系統,不專注跨平臺

基本的Web服務配置

TinyWeb 目前的發展計劃:

使用進程池的方式提高并發性

強有力的支持多種版本Http協議

負載均衡功能

代理功能


二、設計思想 1. 網絡中最麻煩的是如何處理阻塞的事件:
如果IO事件沒有發生,系統阻塞的等待IO事件發生,那么CPU就被
浪費了,為實現高并發,不能讓進程阻塞,CPU等待IO事件.
借助Linux高效的Epoll機制,

至于為何使用Epoll,而不使用Select或Poll,點這里看看吧.

2.為了提高并發性:到底是選擇多進程還是多線程模式

多進程與多線程各有優缺點,并且大部分是互補的,具體就不再贅述了,
詳情請戳這里
我選擇多進程的原因是:

安全性高,一個進程崩潰不會影響別的進程

容易調試,不易造成死鎖

有較為成熟的進程間通信同步機制(共享內存,信號,文件鎖,socketpair....)

在接受客戶端連接的時候,如何再去創建一個進程,效率低下.故因此采用進程池的方式:
Master進程為父進程,主要控制子進程的狀態;可動態配置數量的Slave子進程,用于接受連接,
處理Http邏輯.

3.C++最難管理的還是內存
為了方便的進行內存管理,我設計了一個內存池,不會產生大量的內存碎片,性能待測試.以后還會
介紹如何實現的,盡請期待.
4.進程間通信的方式很多,到底選擇哪幾個

了解了下Nginx,有考慮了使用的復雜度,我決定使用這幾個通信.同步機制

原子操作

信號量

消息隊列

共享內存

信號


三、源碼

想要源代碼的請戳這里,希望大家多多對代碼風格做出評判,畢竟自己只是個大三的學生.


四、參考文獻

小伙伴想要了解更多的高性能的網絡編程,推薦一個大神的專欄

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41405.html

相關文章

  • TinyWeb--C++構建性能Web務器

    摘要:構建高性能服務器前言一想法一直想用做個項目,因為比較喜歡網絡通信這部分,又讓事情變得更有些挑戰性,我最終選擇實現一個高性能的服務器。 C++構建高性能Web服務器——Step 0:前言 一、想法: 一直想用C++做個項目,因為比較喜歡網絡通信這部分,又讓事情變得更有些挑戰性,我最終選擇實現一個高性能的Web服務器。 在宏觀上我希望TinyWeb能夠這樣: 配置簡單 擴展容易 性能...

    shengguo 評論0 收藏0
  • Vue 2019開發者圖譜

    摘要:為了便于您更清晰的理解的體系架構,在這里我將為您展示年開發者知識圖譜,它包含了所有開發過程中的關鍵部分。在數據展示前端導入導出圖表面板數據綁定等場景無需大量代碼開發和測試,可極大節省企業研發成本并降低交付風險。 作為 Vue 的初學者,您或許已經聽過很多關于它的專業術語了,例如:單頁面應用程序、異步組件、服務器端呈現等,您可能還聽過和Vue經常一起被提到的工具和庫,如Vuex、Webp...

    cgspine 評論0 收藏0
  • 前端每周清單半年盤點之 React 與 ReactNative 篇

    摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構建工具由遷移到,引發了很多開發者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為...

    Barry_Ng 評論0 收藏0
  • 前端每周清單第 54 期: SwiftNIO, 自定義 vue-router, Web 緩存與 Gr

    摘要:新聞熱點國內國外,前端最新動態蘋果開源了版近日,蘋果開源了一款基于事件驅動的跨平臺網絡應用程序開發框架,它有點類似,但開發語言使用的是。蘋果稱的目標是幫助開發者快速開發出高性能且易于維護的服務器端和客戶端應用協議。 showImg(https://segmentfault.com/img/remote/1460000013677379); 前端每周清單專注大前端領域內容,以對外文資料的...

    劉東 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<