偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux高性能網(wǎng)絡(luò)編程十談 | 九個(gè)C++的開源的網(wǎng)絡(luò)框架

開發(fā) 前端
libev - 高性能事件循環(huán)?的特點(diǎn):極致性能: 專為高性能設(shè)計(jì),最小化系統(tǒng)調(diào)用開銷;Linux 優(yōu)化: 深度優(yōu)化 epoll 性能,支持 Linux 特有功能;輕量級(jí)設(shè)計(jì): 代碼簡(jiǎn)潔,內(nèi)存占用極小;多種事件類型: 支持 I/O、定時(shí)器、信號(hào)、子進(jìn)程等事件。

github代碼地址:https://github.com/linkxzhou/mylib/tree/master/c%2B%2B/high_performance_server

為了大家簡(jiǎn)便測(cè)試,所以當(dāng)前項(xiàng)目使用 Bazel 構(gòu)建,減少一些庫(kù)的依賴,構(gòu)建步驟如下:

# ========== 安裝bazel
# macOS
brew install bazel

# Ubuntu/Debian
sudo apt install apt-transport-https curl gnupg
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo"deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel

# CentOS/RHEL
sudo dnf copr enable vbatts/bazel
sudo dnf install bazel

# ========== 安裝依賴
# macOS
brew install libuv libevent libev boost
brew install folly wangle proxygen  # 可選

# Ubuntu/Debian
sudo apt-get install libuv1-dev libevent-dev libev-dev libboost-all-dev

# CentOS/RHEL
sudo yum install libuv-devel libevent-devel libev-dev boost-devel

# ========== 構(gòu)建所有服務(wù)器
./build_all_bazel.sh

# 或使用 Bazel 直接構(gòu)建
bazel build //...

# 構(gòu)建特定服務(wù)器
bazel build //ace:ace_echo_server
bazel build //libevent:libevent_echo_server
bazel build //boost_asio:boost_asio_echo_server
bazel build //seastar:seastar_echo_server
bazel build //libev:libev_echo_server
bazel build //libuv:libuv_echo_server
bazel build //mongoose:mongoose_echo_server
bazel build //proxygen:proxygen_echo_server
bazel build //wangle:wangle_echo_server

開源框架

框架

類型

C++ 標(biāo)準(zhǔn)

特點(diǎn)

代表的開源項(xiàng)目

libevent

事件驅(qū)動(dòng)

C++11

跨平臺(tái)、輕量級(jí)、廣泛使用

Memcached, Tor, Chromium, tmux

libev

事件驅(qū)動(dòng)

C++11

高性能、Linux 優(yōu)化

Node.js (早期版本), PowerDNS, Varnish

libuv

事件驅(qū)動(dòng)

C++11

Node.js 底層、跨平臺(tái)

Node.js, Julia, Luvit, pyuv

Boost.Asio

異步 I/O

C++11

功能豐富、標(biāo)準(zhǔn)化

Beast (HTTP/WebSocket), cpp-netlib, Riak

ACE

面向?qū)ο?/p>

C++17

企業(yè)級(jí)、模式豐富

TAO (CORBA), OpenDDS, JAWS Web Server

Seastar

無共享

C++17

極高性能、現(xiàn)代設(shè)計(jì)

ScyllaDB, Redpanda, Seastar HTTP Server

Wangle

異步

C++17

Facebook 開源、Pipeline 架構(gòu)

Proxygen, McRouter, Facebook Services

Proxygen

HTTP 專用

C++17

Facebook HTTP 庫(kù)

Facebook Web Services, Instagram API

Mongoose

嵌入式

C++11

輕量級(jí)、易集成

ESP32 項(xiàng)目, IoT 設(shè)備, 嵌入式 Web 服務(wù)器

性能對(duì)比

圖片圖片

框架簡(jiǎn)介

1. libevent - 事件驅(qū)動(dòng)架構(gòu)

特點(diǎn):

  • 跨平臺(tái)兼容性: 支持 Linux (epoll)、macOS (kqueue)、Windows (IOCP) 等多種平臺(tái)
  • 多種 I/O 多路復(fù)用: 自動(dòng)選擇最優(yōu)的 I/O 機(jī)制 (epoll/kqueue/select)
  • 緩沖事件處理: 內(nèi)置緩沖區(qū)管理,簡(jiǎn)化網(wǎng)絡(luò)編程
  • HTTP 支持: 內(nèi)置 HTTP 服務(wù)器和客戶端功能
  • 定時(shí)器支持: 高精度定時(shí)器和超時(shí)處理
  • 線程安全: 支持多線程環(huán)境下的事件處理
  • 內(nèi)存管理: 高效的內(nèi)存池和緩沖區(qū)管理

底層架構(gòu):

圖片圖片

核心組件:

  • event_base: 事件循環(huán)核心,管理所有事件
  • evconnlistener: 連接監(jiān)聽器,處理新連接
  • bufferevent: 緩沖事件處理,自動(dòng)管理讀寫緩沖區(qū)
  • 回調(diào)函數(shù): echo_read_cb, echo_event_cb
  • 平臺(tái)適配: 自動(dòng)選擇最優(yōu) I/O 多路復(fù)用機(jī)制

2. libev - 高性能事件循環(huán)

特點(diǎn):

  • 極致性能: 專為高性能設(shè)計(jì),最小化系統(tǒng)調(diào)用開銷
  • Linux 優(yōu)化: 深度優(yōu)化 epoll 性能,支持 Linux 特有功能
  • 輕量級(jí)設(shè)計(jì): 代碼簡(jiǎn)潔,內(nèi)存占用極小
  • 多種事件類型: 支持 I/O、定時(shí)器、信號(hào)、子進(jìn)程等事件
  • 嵌套事件循環(huán): 支持事件循環(huán)的嵌套調(diào)用
  • 高精度定時(shí)器: 基于紅黑樹的高效定時(shí)器實(shí)現(xiàn)
  • 信號(hào)處理: 安全的異步信號(hào)處理機(jī)制

底層架構(gòu):

圖片圖片

核心組件:

  • ev_loop: 高性能事件循環(huán),支持多種后端
  • ev_io: I/O 事件監(jiān)視器,監(jiān)控文件描述符
  • ev_timer: 高精度定時(shí)器,基于紅黑樹實(shí)現(xiàn)
  • accept_cb: 連接接受回調(diào),處理新連接
  • client_cb: 客戶端數(shù)據(jù)處理回調(diào)

3. libuv - 跨平臺(tái)異步 I/O

特點(diǎn):

  • Node.js 底層: Node.js 的核心依賴,經(jīng)過大規(guī)模生產(chǎn)驗(yàn)證
  • 跨平臺(tái)統(tǒng)一: 統(tǒng)一的 API 抽象不同平臺(tái)的異步 I/O
  • 線程池: 內(nèi)置線程池處理文件 I/O 和 CPU 密集任務(wù)
  • 異步文件操作: 完整的異步文件系統(tǒng) API
  • 進(jìn)程管理: 跨平臺(tái)的進(jìn)程創(chuàng)建和管理
  • 網(wǎng)絡(luò)抽象: 高級(jí)網(wǎng)絡(luò) API,支持 TCP、UDP、管道
  • 事件循環(huán): 單線程事件循環(huán) + 多線程工作池

底層架構(gòu):

圖片圖片

核心組件:

  • uv_loop_t: 跨平臺(tái)事件循環(huán),統(tǒng)一不同平臺(tái)的異步機(jī)制
  • uv_tcp_t: TCP 句柄,封裝網(wǎng)絡(luò)連接
  • uv_read_start: 開始異步讀取數(shù)據(jù)
  • uv_write: 異步寫入數(shù)據(jù),支持批量寫入
  • 線程池: 處理阻塞操作,避免阻塞主線程

4. Boost.Asio - 異步網(wǎng)絡(luò)編程

特點(diǎn):

  • C++ 標(biāo)準(zhǔn)候選: 設(shè)計(jì)現(xiàn)代,可能成為 C++ 標(biāo)準(zhǔn)庫(kù)的一部分
  • 類型安全: 強(qiáng)類型系統(tǒng),編譯時(shí)錯(cuò)誤檢查
  • 協(xié)程支持: 支持 C++20 協(xié)程,簡(jiǎn)化異步編程
  • 可擴(kuò)展性: 支持自定義 I/O 對(duì)象和協(xié)議
  • SSL/TLS: 內(nèi)置 SSL/TLS 支持
  • 定時(shí)器: 高精度定時(shí)器和截止時(shí)間
  • 信號(hào)處理: 異步信號(hào)處理機(jī)制

底層架構(gòu):

圖片圖片

核心組件:

  • io_context: I/O 執(zhí)行上下文,管理異步操作
  • tcp::acceptor: TCP 接受器,監(jiān)聽新連接
  • session: 會(huì)話管理類,封裝連接生命周期
  • 異步操作: async_accept, async_read_some, async_write
  • 協(xié)程支持: C++20 協(xié)程集成

5. ACE - 自適應(yīng)通信環(huán)境

特點(diǎn):

  • 企業(yè)級(jí)框架: 經(jīng)過大型企業(yè)系統(tǒng)驗(yàn)證的成熟框架
  • 設(shè)計(jì)模式豐富: 實(shí)現(xiàn)了多種網(wǎng)絡(luò)編程設(shè)計(jì)模式
  • 高度可配置: 支持編譯時(shí)和運(yùn)行時(shí)配置
  • 跨平臺(tái): 支持 40+ 種操作系統(tǒng)和編譯器
  • 面向?qū)ο? 完全面向?qū)ο蟮脑O(shè)計(jì)
  • 組件化: 模塊化設(shè)計(jì),可按需使用
  • 性能優(yōu)化: 針對(duì)高并發(fā)場(chǎng)景的優(yōu)化

底層架構(gòu):

圖片圖片

核心組件:

  • ACE_Reactor: 反應(yīng)器模式核心,支持多種實(shí)現(xiàn)
  • ACE_Event_Handler: 事件處理器基類
  • ACE_SOCK_Acceptor: 套接字接受器
  • ACE_SOCK_Stream: 套接字流,封裝網(wǎng)絡(luò)通信
  • 設(shè)計(jì)模式: Reactor、Proactor、Acceptor-Connector

6. Seastar - 無共享架構(gòu)

特點(diǎn):

  • 無共享設(shè)計(jì): 每個(gè) CPU 核心獨(dú)立運(yùn)行,避免鎖競(jìng)爭(zhēng)
  • 用戶態(tài)網(wǎng)絡(luò)棧: 繞過內(nèi)核,直接操作網(wǎng)絡(luò)硬件 (DPDK)
  • 協(xié)程支持: 基于 future/promise 的協(xié)程模型
  • 內(nèi)存管理: 自定義內(nèi)存分配器,減少內(nèi)存碎片
  • CPU 親和性: 嚴(yán)格的 CPU 核心綁定
  • 零拷貝: 最小化數(shù)據(jù)拷貝操作
  • 現(xiàn)代 C++: 大量使用 C++14/17 特性

底層架構(gòu):

圖片圖片

核心組件:

  • app_template: 應(yīng)用程序模板,管理應(yīng)用生命周期
  • server_socket: 服務(wù)器套接字,支持多核心
  • connected_socket: 連接套接字,封裝網(wǎng)絡(luò)連接
  • future<>: 異步操作結(jié)果,支持鏈?zhǔn)秸{(diào)用
  • 無共享架構(gòu): 每核心獨(dú)立的內(nèi)存、網(wǎng)絡(luò)隊(duì)列、調(diào)度器

7. Wangle - Pipeline 架構(gòu)

特點(diǎn):

  • Pipeline 設(shè)計(jì): 模塊化的請(qǐng)求處理管道
  • Facebook 生產(chǎn): Facebook 內(nèi)部大規(guī)模使用
  • 類型安全: 強(qiáng)類型的 Pipeline 組件
  • 可組合性: 靈活的處理器組合
  • 協(xié)議無關(guān): 支持多種網(wǎng)絡(luò)協(xié)議
  • 負(fù)載均衡: 內(nèi)置負(fù)載均衡和連接池
  • SSL/TLS: 完整的 SSL/TLS 支持

底層架構(gòu):

圖片圖片

核心組件:

  • ServerBootstrap: 服務(wù)器引導(dǎo)程序,配置服務(wù)器
  • Pipeline: 處理管道,鏈?zhǔn)教幚碚?qǐng)求
  • ByteToMessageDecoder: 字節(jié)到消息解碼器
  • HandlerAdapter: 處理器適配器,連接不同類型的處理器
  • IOBuf: 高效的緩沖區(qū)管理

8. Proxygen - HTTP 專用庫(kù)

特點(diǎn):

  • HTTP 專用: 專為 HTTP/1.1 和 HTTP/2 優(yōu)化
  • Facebook 開源: Facebook 內(nèi)部 HTTP 服務(wù)的基礎(chǔ)
  • HTTP/2 支持: 完整的 HTTP/2 實(shí)現(xiàn),包括服務(wù)器推送
  • 流式處理: 支持大文件的流式上傳下載
  • 壓縮支持: 內(nèi)置 gzip、deflate 壓縮
  • WebSocket: 完整的 WebSocket 支持
  • 性能監(jiān)控: 內(nèi)置性能指標(biāo)和監(jiān)控

底層架構(gòu):

圖片圖片

核心組件:

  • HTTPServer: HTTP 服務(wù)器,支持 HTTP/1.1 和 HTTP/2
  • RequestHandler: 請(qǐng)求處理器,處理 HTTP 請(qǐng)求生命周期
  • RequestHandlerFactory: 處理器工廠,創(chuàng)建請(qǐng)求處理器
  • ResponseBuilder: 響應(yīng)構(gòu)建器,構(gòu)建 HTTP 響應(yīng)
  • HTTP/2 特性: 流復(fù)用、服務(wù)器推送、頭部壓縮

9. Mongoose - 嵌入式 Web 服務(wù)器

特點(diǎn):

  • 輕量級(jí): 單文件實(shí)現(xiàn),易于集成
  • 嵌入式友好: 適合資源受限的環(huán)境
  • 多協(xié)議支持: HTTP、WebSocket、MQTT、CoAP
  • 跨平臺(tái): 支持嵌入式系統(tǒng)、桌面、服務(wù)器
  • 零依賴: 不依賴外部庫(kù)
  • 事件驅(qū)動(dòng): 基于事件的異步處理
  • 內(nèi)置功能: 文件服務(wù)、CGI、SSI 支持

底層架構(gòu):

圖片圖片

核心組件:

  • mg_mgr: 連接管理器,管理所有網(wǎng)絡(luò)連接
  • mg_connection: 連接對(duì)象,封裝單個(gè)網(wǎng)絡(luò)連接
  • mg_http_listen: HTTP 監(jiān)聽,啟動(dòng) HTTP 服務(wù)
  • mg_http_reply: HTTP 響應(yīng),發(fā)送 HTTP 回復(fù)
  • 多協(xié)議: HTTP、WebSocket、MQTT、CoAP 統(tǒng)一接口

參考

責(zé)任編輯:武曉燕 來源: 周末程序猿
相關(guān)推薦

2024-03-18 13:43:20

Linux架構(gòu)

2023-11-01 11:59:13

2023-11-01 10:38:46

Linux高性能網(wǎng)絡(luò)編程

2023-11-01 11:27:10

Linux協(xié)程

2023-11-01 11:40:46

Linux高性能網(wǎng)絡(luò)編程工具

2023-11-01 10:58:31

系統(tǒng)調(diào)用高性能網(wǎng)絡(luò)編程Linux

2023-11-01 11:51:08

Linux性能優(yōu)化

2023-11-01 11:07:05

Linux高性能網(wǎng)絡(luò)編程線程

2023-11-01 10:43:31

Linux高性能網(wǎng)絡(luò)編程

2023-11-01 11:13:58

Linux信號(hào)處理定時(shí)器

2023-11-01 11:20:57

2021-10-27 11:29:32

框架Web開發(fā)

2020-11-06 18:51:17

LinuxTCP服務(wù)器

2024-04-28 10:17:30

gnetGo語(yǔ)言

2020-06-17 16:43:40

網(wǎng)絡(luò)IO框架

2023-10-31 18:52:29

網(wǎng)絡(luò)框架XDP技術(shù)

2023-04-14 14:35:35

網(wǎng)絡(luò)

2011-09-16 10:00:56

C++

2025-01-26 15:44:29

2024-02-04 17:21:37

C++編程開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)