国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

架構(gòu)篇19:?jiǎn)畏?wù)器高性能模式-Reactor與Proactor

這篇具有很好參考價(jià)值的文章主要介紹了架構(gòu)篇19:?jiǎn)畏?wù)器高性能模式-Reactor與Proactor。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


架構(gòu)篇19:?jiǎn)畏?wù)器高性能模式-Reactor與Proactor,軟件架構(gòu),服務(wù)器,架構(gòu),java

上篇介紹了單服務(wù)器高性能的 PPC 和 TPC 模式,它們的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是都無(wú)法支撐高并發(fā)的場(chǎng)景,尤其是互聯(lián)網(wǎng)發(fā)展到現(xiàn)在,各種海量用戶業(yè)務(wù)的出現(xiàn),PPC 和 TPC 完全無(wú)能為力。今天我將介紹可以應(yīng)對(duì)高并發(fā)場(chǎng)景的單服務(wù)器高性能架構(gòu)模式:Reactor 和 Proactor。

Reactor

PPC 模式最主要的問(wèn)題就是每個(gè)連接都要?jiǎng)?chuàng)建進(jìn)程(為了描述簡(jiǎn)潔,這里只以 PPC 和進(jìn)程為例,實(shí)際上換成 TPC 和線程,原理是一樣的),連接結(jié)束后進(jìn)程就銷毀了,這樣做其實(shí)是很大的浪費(fèi)。為了解決這個(gè)問(wèn)題,一個(gè)自然而然的想法就是資源復(fù)用,即不再單獨(dú)為每個(gè)連接創(chuàng)建進(jìn)程,而是創(chuàng)建一個(gè)進(jìn)程池,將連接分配給進(jìn)程,一個(gè)進(jìn)程可以處理多個(gè)連接的業(yè)務(wù)。

引入資源池的處理方式后,會(huì)引出一個(gè)新的問(wèn)題:進(jìn)程如何才能高效地處理多個(gè)連接的業(yè)務(wù)?當(dāng)一個(gè)連接一個(gè)進(jìn)程時(shí),進(jìn)程可以采用“read -> 業(yè)務(wù)處理 -> write”的處理流程,如果當(dāng)前連接沒有數(shù)據(jù)可以讀,則進(jìn)程就阻塞在 read 操作上。這種阻塞的方式在一個(gè)連接一個(gè)進(jìn)程的場(chǎng)景下沒有問(wèn)題,但如果一個(gè)進(jìn)程處理多個(gè)連接,進(jìn)程阻塞在某個(gè)連接的 read 操作上,此時(shí)即使其他連接有數(shù)據(jù)可讀,進(jìn)程也無(wú)法去處理,很顯然這樣是無(wú)法做到高性能的。

解決這個(gè)問(wèn)題的最簡(jiǎn)單的方式是將 read 操作改為非阻塞,然后進(jìn)程不斷地輪詢多個(gè)連接。這種方式能夠解決阻塞的問(wèn)題,但解決的方式并不優(yōu)雅。首先,輪詢是要消耗 CPU 的;其次,如果一個(gè)進(jìn)程處理幾千上萬(wàn)的連接,則輪詢的效率是很低的。

為了能夠更好地解決上述問(wèn)題,很容易可以想到,只有當(dāng)連接上有數(shù)據(jù)的時(shí)候進(jìn)程才去處理,這就是 I/O 多路復(fù)用技術(shù)的來(lái)源。

I/O 多路復(fù)用技術(shù)歸納起來(lái)有兩個(gè)關(guān)鍵實(shí)現(xiàn)點(diǎn):

  • 當(dāng)多條連接共用一個(gè)阻塞對(duì)象后,進(jìn)程只需要在一個(gè)阻塞對(duì)象上等待,而無(wú)須再輪詢所有連接,常見的實(shí)現(xiàn)方式有 select、epoll、kqueue 等。
  • 當(dāng)某條連接有新的數(shù)據(jù)可以處理時(shí),操作系統(tǒng)會(huì)通知進(jìn)程,進(jìn)程從阻塞狀態(tài)返回,開始進(jìn)行業(yè)務(wù)處理。

I/O 多路復(fù)用結(jié)合線程池,完美地解決了 PPC 和 TPC 的問(wèn)題,而且“大神們”給它取了一個(gè)很牛的名字:Reactor,中文是“反應(yīng)堆”。聯(lián)想到“核反應(yīng)堆”,聽起來(lái)就很嚇人,實(shí)際上這里的“反應(yīng)”不是聚變、文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-823012.html

到了這里,關(guān)于架構(gòu)篇19:?jiǎn)畏?wù)器高性能模式-Reactor與Proactor的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《Linux高性能服務(wù)器編程》筆記04

    《Linux高性能服務(wù)器編程》筆記04

    本文是讀書筆記,如有侵權(quán),請(qǐng)聯(lián)系刪除。 參考 Linux高性能服務(wù)器編程源碼: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服務(wù)器編程 I/O復(fù)用使得程序能同時(shí)監(jiān)聽多個(gè)文件描述符,這對(duì)提高程序的性能至關(guān)重要。通常,網(wǎng)絡(luò)程序在下列情況下需要使用I/0復(fù)用技術(shù): 客戶

    2024年01月21日
    瀏覽(36)
  • 【閱讀筆記】Linux 高性能服務(wù)器編程

    原文地址以及最新代碼參考:https://github.com/EricPengShuai/Interview/tree/main/Linux Ch.5 Linux 網(wǎng)絡(luò)編程基礎(chǔ) API 5.1 socket 地址 API 5.1.1 主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序 大端字節(jié)序(網(wǎng)絡(luò)字節(jié)序):高位低地址 小端字節(jié)序(主機(jī)字節(jié)序):高位高地址 參考代碼:5-1byteorder.cpp 一般網(wǎng)絡(luò)編程中,發(fā)

    2024年02月06日
    瀏覽(43)
  • tomcat---企業(yè)高性能web服務(wù)器

    目錄 1.tomcat的簡(jiǎn)介 2.tomcat安裝 3.tomcat中重要的目錄及路徑 ?編寫一個(gè)tomcat的啟動(dòng)腳本 4.tomcat的web站點(diǎn)的部署 如果需要修改首頁(yè)文件: 5.tomcat的虛擬主機(jī)部署 tomcat是一款開源免費(fèi)的web應(yīng)用服務(wù)器,在中小型企業(yè)及并發(fā)訪問(wèn)不是很高的情況下使用,是開發(fā)和調(diào)試jsp首選。但是t

    2024年02月13日
    瀏覽(36)
  • 《Linux高性能服務(wù)器編程》筆記01

    《Linux高性能服務(wù)器編程》筆記01

    本文是讀書筆記,如有侵權(quán),請(qǐng)聯(lián)系刪除。 參考 Linux高性能服務(wù)器編程源碼: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服務(wù)器編程 □socket地址API。socket最開始的含義是一個(gè)IP地址和端口對(duì)(ip,port)。它唯一地 表示了使用TCP通信的一端。本書稱其為socket地址。 □s

    2024年01月22日
    瀏覽(43)
  • Linux高性能服務(wù)器編程——學(xué)習(xí)筆記①

    Linux高性能服務(wù)器編程——學(xué)習(xí)筆記①

    第一章有一些概念講的很好,值得好好關(guān)注一下!?。?1.1 主要的協(xié)議 1.1.1 數(shù)據(jù)鏈路層 ? 數(shù)據(jù)鏈路層實(shí)現(xiàn)了網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,以處理數(shù)據(jù)在物理媒介(以太網(wǎng)、令牌環(huán))上的傳輸。 ? 常用的協(xié)議有兩種: ARP協(xié)議(Address Resolve Protocol,地址解析協(xié)議) RARP(Reverse

    2024年01月20日
    瀏覽(35)
  • 【網(wǎng)絡(luò)編程】高性能并發(fā)服務(wù)器源碼剖析

    【網(wǎng)絡(luò)編程】高性能并發(fā)服務(wù)器源碼剖析

    ? hello !大家好呀! 歡迎大家來(lái)到我的網(wǎng)絡(luò)編程系列之洪水網(wǎng)絡(luò)攻擊,在這篇文章中, 你將會(huì)學(xué)習(xí)到在網(wǎng)絡(luò)編程中如何搭建一個(gè)高性能的并發(fā)服務(wù)器,并且我會(huì)給出源碼進(jìn)行剖析,以及手繪UML圖來(lái)幫助大家來(lái)理解,希望能讓大家更能了解網(wǎng)絡(luò)編程技術(shù)!??! 希望這篇文章能

    2024年04月15日
    瀏覽(43)
  • Linux高性能服務(wù)器編程——ch10筆記

    信號(hào)是由用戶、系統(tǒng)或者進(jìn)程發(fā)送給目標(biāo)進(jìn)程的信息,以通知目標(biāo)進(jìn)程某個(gè)狀態(tài)的改變或系統(tǒng)異常。 :::tips int kill(pid_t pid, int sig); ::: kill函數(shù):一個(gè)進(jìn)程給其他進(jìn)程發(fā)送信號(hào)的API。 sig一般大于0,如果設(shè)為0則表示不發(fā)送信號(hào),可以用來(lái)檢測(cè)進(jìn)程或進(jìn)程組是否存在。由于進(jìn)程P

    2024年02月06日
    瀏覽(25)
  • C++高性能服務(wù)器網(wǎng)絡(luò)框架設(shè)計(jì)與實(shí)現(xiàn)

    C++高性能服務(wù)器網(wǎng)絡(luò)框架設(shè)計(jì)與實(shí)現(xiàn)

    這篇文章將從兩個(gè)方面來(lái)介紹,一個(gè)是服務(wù)器中的基礎(chǔ)的網(wǎng)絡(luò)通信部件;另外一個(gè)是,如何利用這些基礎(chǔ)通信部件整合成一個(gè)完整的高效的服務(wù)器框架。注意:本文以下內(nèi)容中的客戶端是相對(duì)概念,指的是連接到當(dāng)前討論的服務(wù)程序的終端,所以這里的客戶端既可能是我們傳

    2024年02月04日
    瀏覽(22)
  • 使用CentOS搭建高性能靜態(tài)HTTP服務(wù)器

    使用CentOS搭建高性能靜態(tài)HTTP服務(wù)器

    在互聯(lián)網(wǎng)應(yīng)用中,靜態(tài)內(nèi)容是廣泛存在的,例如HTML頁(yè)面、圖片、視頻等。為了提供高效、穩(wěn)定和安全的靜態(tài)內(nèi)容服務(wù),我們可以使用CentOS來(lái)搭建高性能的靜態(tài)HTTP服務(wù)器。 1. 選擇合適的軟件 Nginx和Apache是兩個(gè)流行的HTTP服務(wù)器軟件。Nginx以其高效、輕量級(jí)和快速的性能而著稱,

    2024年01月23日
    瀏覽(19)
  • Nginx:高性能的Web服務(wù)器與反向代理

    在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用程序的開發(fā)和部署中,選擇一個(gè)可靠、高性能的Web服務(wù)器是至關(guān)重要的。Nginx是一個(gè)備受推崇的選擇,它以其卓越的性能和可靠性在開發(fā)者社區(qū)中享有盛譽(yù)。本文將介紹Nginx的概念、優(yōu)勢(shì),以及如何使用Nginx作為Web服務(wù)器和反向代理。 Nginx(發(fā)音為“engine X”

    2024年02月19日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包