互聯(lián)網(wǎng)程序員必備的性能優(yōu)化技術(shù)
小Ke同學(xué) | 2023-03-27 15:40:45  3267 瀏覽

互聯(lián)網(wǎng)的發(fā)展推動了越來越多的企業(yè)加入互聯(lián)網(wǎng),越來越多的產(chǎn)品出現(xiàn)在互聯(lián)網(wǎng),越來越多的網(wǎng)民涌現(xiàn)在互聯(lián)網(wǎng),除了提供基本的服務(wù)之外,還需要提供更好玩、更便捷穩(wěn)定的服務(wù),就像手機(jī)一樣,我們對它最基本的性能要求就是待機(jī)時間長,在互聯(lián)網(wǎng)的性能要求就是不慢不卡,因此性能優(yōu)化技術(shù)是互聯(lián)網(wǎng)程序員必須掌握的技術(shù)。

一套應(yīng)用程序能運行起來,除了最上層的前端服務(wù)、業(yè)務(wù)層算法之外,還有數(shù)據(jù)庫、操作系統(tǒng),因此性能優(yōu)化技術(shù)包含了負(fù)載均衡技術(shù)、緩存技術(shù)、數(shù)據(jù)庫技術(shù)、RPC技術(shù)(RemoteP)進(jìn)程通信技術(shù)、IO多路復(fù)用技術(shù)IO零拷貝技術(shù),互聯(lián)網(wǎng)程序員掌握了這些技術(shù),就像學(xué)好了數(shù)理化一樣,走到哪里都是香餑餑。

所謂負(fù)載均衡技術(shù),就是用來將計算資源、存儲資源、網(wǎng)絡(luò)資源根據(jù)實際情況進(jìn)行分配的一種技術(shù),通過多個節(jié)點承載服務(wù),用來達(dá)到最優(yōu)的資源利用、最快的響應(yīng)時間,實現(xiàn)了性能優(yōu)化。負(fù)載均衡的分類也有很多,有客戶端負(fù)載均衡、服務(wù)器端負(fù)載均衡、軟件負(fù)載均衡、硬件負(fù)載均衡。以服務(wù)端負(fù)載均衡為例,用戶在前端發(fā)起請求后,經(jīng)過網(wǎng)絡(luò)傳輸給服務(wù)端,再通過服務(wù)端的負(fù)載均衡算法去選擇對應(yīng)的服務(wù)器提供服務(wù),最常見的就是nginx算法了。

image.png

在負(fù)載均衡之后,便是緩存技術(shù),它是通過將訪問的熱數(shù)據(jù)提前存起來供業(yè)務(wù)訪問,降低了數(shù)據(jù)庫壓力、降低了用戶響應(yīng)時間,實現(xiàn)了性能優(yōu)化。負(fù)載均衡把請求分擔(dān)為多個節(jié)點執(zhí)行,每個節(jié)點都承載著服務(wù)的提供,當(dāng)用戶請求從前端經(jīng)負(fù)載均衡算法分配過來后,如果直接去訪問獲取磁盤的數(shù)據(jù)庫數(shù)據(jù),就會非常慢。如果有了緩存,在用戶請求到達(dá)之后,業(yè)務(wù)線程就會先訪問緩存,如果緩存命中就直接返回用戶,如果沒有命中,則繼續(xù)請求磁盤數(shù)據(jù)庫數(shù)據(jù),獲取后返回用戶,同時將磁盤獲取的數(shù)據(jù)結(jié)果回寫到緩存系統(tǒng),為下次請求做好準(zhǔn)備。

image.png


在緩存之后便是數(shù)據(jù)庫技術(shù),緩存訪問熱點數(shù)據(jù)后,執(zhí)行的交易操作需要對數(shù)據(jù)庫中的表進(jìn)行增刪改查,通過將數(shù)據(jù)庫分為主庫、讀庫、大表分為小表,讓每個用戶請求都能快速訪問到數(shù)據(jù)、快速執(zhí)行操作,降低了用戶延遲,實現(xiàn)了性能優(yōu)化。數(shù)據(jù)庫的讀寫分離,使用一臺數(shù)據(jù)庫服務(wù)器作為主數(shù)據(jù)庫(master),把業(yè)務(wù)數(shù)據(jù)都寫入該數(shù)據(jù)庫,再另外使用另一臺數(shù)據(jù)庫服務(wù)器來作為從數(shù)據(jù)庫(slave),將業(yè)務(wù)數(shù)據(jù)同步到該數(shù)據(jù)庫上,當(dāng)業(yè)務(wù)進(jìn)行讀操作時就讀取備數(shù)據(jù)庫的數(shù)據(jù)即可,這樣即緩解了數(shù)據(jù)庫壓力,又實現(xiàn)了備份。

image.png

在數(shù)據(jù)庫技術(shù)之后,便是操作系統(tǒng)級別的IO多路復(fù)用技術(shù)。我們知道一個程序運行時是一個進(jìn)程,而程序里有很多的方法要去執(zhí)行,每個方法就是一個線程,通過并發(fā)處理客戶端的多個線程請求,并同時等待多個連接發(fā)送的請求,減少系統(tǒng)的開銷、降低用戶延遲,實現(xiàn)了性能優(yōu)化。此外,IO多路復(fù)用也不需要額外創(chuàng)建和維護(hù)線程監(jiān)聽客戶端的大量連接,減少了服務(wù)器的開發(fā)和維護(hù)成本。典型的線程級別優(yōu)化技術(shù)有java線程池、數(shù)據(jù)庫連接池、PHP內(nèi)存池。

image.png


在IO多路復(fù)用技術(shù)之后,便是IO零拷貝技術(shù)。在操作系統(tǒng)一般把內(nèi)核劃分成內(nèi)核空間、用戶空間,Linux操作系統(tǒng)中讀取數(shù)據(jù)操作都是基于數(shù)據(jù)拷貝完成的,也就是說數(shù)據(jù)會在內(nèi)核地址空間的緩沖區(qū)和用戶地址空間的緩沖區(qū)進(jìn)行拷貝,數(shù)據(jù)讀取流程一般包含四部分,

1.操作系統(tǒng)需要先從磁盤里讀取文件到內(nèi)核頁面的緩存;

2.用戶態(tài)的應(yīng)用程序從內(nèi)核態(tài)讀取數(shù)據(jù)到用戶空間緩存區(qū),由于內(nèi)核態(tài)的資源比較寶貴會經(jīng)常釋放;

3.用戶態(tài)的應(yīng)用程序還需要將數(shù)據(jù)寫回內(nèi)核空間并放入socket緩沖區(qū);

4.最后操作系統(tǒng)將數(shù)據(jù)從socket緩沖區(qū)復(fù)制到網(wǎng)卡接口,再經(jīng)由網(wǎng)絡(luò)發(fā)送給到消費者進(jìn)程。

零拷貝技術(shù),將磁盤文件的數(shù)據(jù)復(fù)制到頁面緩存中,然后將數(shù)據(jù)從頁面緩存直接發(fā)送到網(wǎng)絡(luò)給到不同的訂閱者,避免了重復(fù)拷貝操作,極大的提高了速度,實現(xiàn)了性能優(yōu)化。image.png

從負(fù)載均衡、緩存、數(shù)據(jù)庫到IO多路復(fù)用、IO零拷貝技術(shù),完成了單服務(wù)從業(yè)務(wù)級到操作系統(tǒng)級的性能優(yōu)化,但微服務(wù)技術(shù)的出現(xiàn)將單服務(wù)拆分成了多個微服務(wù),對于云原生、微服務(wù)時代的性能優(yōu)化,那便是RPC遠(yuǎn)程調(diào)用技術(shù)。

遠(yuǎn)程是相對本地而言的概念,本地調(diào)用存在的場景是在一個服務(wù)中有不同的函數(shù)實現(xiàn)不同的功能,一個函數(shù)要使用另一個函數(shù)的功能,那必然要調(diào)用它。在本地函數(shù)調(diào)用時,一般會經(jīng)過這幾個步驟,即函數(shù)返回地址入棧、函數(shù)參數(shù)入棧、堆??臻g提升、函數(shù)參數(shù)復(fù)制、開始函數(shù)調(diào)用、堆棧情況。

當(dāng)服務(wù)拆分成了微服務(wù)之后,函數(shù)是在不同的微服務(wù)、不同的機(jī)器上運行,一臺機(jī)器想要調(diào)用另一臺機(jī)器的函數(shù)執(zhí)行某個功能,只能通過網(wǎng)絡(luò)請求來實現(xiàn)(借助兩個服務(wù)共同維護(hù)的關(guān)聯(lián)式容器stub),不能再像本地調(diào)用一樣使用函數(shù)指針實現(xiàn)了。有了RPC,不僅是微服務(wù)與微服務(wù)之間的調(diào)用變得簡單,不同語言之間的調(diào)用也變得簡單了。

以前JAVA語言想要調(diào)用C++語言,那是不可能的事,因為用不同語言寫的代碼,根本無法通信啊。而現(xiàn)在有了RPC,只要框架上支持該語言的解析,那么就可以了。Java語言傳遞過來函數(shù)1的參數(shù)1、參數(shù)2,通過RPC框架解析為C++語言可以識別的參數(shù)1、參數(shù)2。RPC技術(shù)通過降低了網(wǎng)絡(luò)延遲從而降低了用戶延遲,實現(xiàn)了性能優(yōu)化。

image.png

互聯(lián)網(wǎng)從網(wǎng)頁時代走向互聯(lián)網(wǎng)時代、移動互聯(lián)網(wǎng)時代、物聯(lián)網(wǎng)時代,基礎(chǔ)設(shè)施從物理機(jī)走向虛擬機(jī)、容器,技術(shù)架構(gòu)也從單體式服務(wù)走向SOA、微服務(wù)、分布式,一切技術(shù)都在不斷的進(jìn)化演變,唯一不變的便是性能優(yōu)化技術(shù)。從單服務(wù)的負(fù)載均衡、緩存、數(shù)據(jù)庫,到操作系統(tǒng)級別的IO多路復(fù)用、IO零拷貝技術(shù),再到微服務(wù)的RPC技術(shù),掌握了之后,任爾技術(shù)如何變遷,我自巋然不動~


標(biāo)簽:
欧美性大战XXXXX久久久√,国产无遮挡裸体免费视频网站 ,久99久女女精品免费观看69堂,五月综合激情婷婷六月,国自产精品手机在线观看视频,欧美色爱综合网,国产精品三级国产AV,免费黄色高清无码,**a免费视频毛片,亚洲AV永久无码精品无码四虎
成年女人免费毛片视频永久| 天天狠天天透天干天天怕∴| 亚洲欧美日韩V在线播放| 永久免费AⅤ无码网站国产| 中文乱码人妻系列一区二区| 亚洲伊人久久大香线蕉av| 青青草原伊人网| 2021国产精品最新在线| h漫无码动漫av在线播放| 亚洲中文无码成人片在线观看| 亚洲国产精品一区二区美利坚| 国产无遮挡又黄又爽网站| 看免费人成va视频全| 亚洲av无码一区二区一二区潮浪| 免费看国产曰批| 久久精品国产99久久6老女人| 国产成人精品免费视频版大全软件 | 亚洲国产精品久久人人爱| 久操精品在线观看| 国产精品无码专区在线看片| 亚洲av色香蕉一区二区蜜桃 | 无码一区二区三区网址| 亚洲毛片免费在线观看| 免费午夜爽爽爽WWW视频十八禁| 日本一区免费在线| 免费av无码无在线观看| 久久AⅤ无码AV高潮AV喷吹| 久久人妻无码中文字幕第一| 亚洲国产精品九月天| 普通话熟女高潮对白出浆视频 | 精品国精品自拍自在线| 少妇无码AV无码专区在线| 亚洲成AV大片大片在线播放 | 热久久只有精品| 亚洲欧美日韩、中文字幕不卡| 国产97色在线 | 国产| 欧美丰满熟妇乱xxxxx视频| 国产福利一区二区精品秒拍| 中文字幕在线中文乱码不卡24| 在线观看黄色av| 久久精品国产精品亚洲色婷婷|