欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:微服務(wù)設(shè)計原則——高性能:池化

柚子快報激活碼778899分享:微服務(wù)設(shè)計原則——高性能:池化

http://yzkb.51969.com/

文章目錄

1.池化由來2.內(nèi)存池3.線程池4.連接池5.對象池6.小結(jié)參考文獻

1.池化由來

池化(Pooling)是一種優(yōu)化技術(shù),旨在提高系統(tǒng)性能和資源利用率,特別是在高并發(fā)環(huán)境中。通過池化,系統(tǒng)可以重用資源,而不是每次都創(chuàng)建和銷毀這些資源。

池化的目的是完成資源復(fù)用,避免資源重復(fù)創(chuàng)建、銷毀來提高性能。

常見的池子有內(nèi)存池、連接池、線程池、對象池…

內(nèi)存、連接、線程、對象等都是資源,創(chuàng)建和銷毀這些資源都有一個特征, 那就是會涉及到很多系統(tǒng)調(diào)用或者網(wǎng)絡(luò) IO。 每次都在請求中去創(chuàng)建這些資源,會增加處理耗時,但是如果我們用一個 容器(池) 把它們保存起來,下次需要的時候,直接拿出來使用,避免重復(fù)創(chuàng)建和銷毀浪費的時間。

2.內(nèi)存池

我們都知道,在 C/C++ 中分別使用 malloc/free 和 new/delete 進行內(nèi)存的分配,其底層調(diào)用系統(tǒng)調(diào)用 sbrk/brk。頻繁的系統(tǒng)調(diào)用分配釋放內(nèi)存不但影響性能還容易造成內(nèi)存碎片,內(nèi)存池技術(shù)旨在解決這些問題。正是這些原因,C/C++ 中的內(nèi)存操作并不是直接調(diào)用系統(tǒng)調(diào)用,而是已經(jīng)實現(xiàn)了自己的一套內(nèi)存管理,malloc 主要有三大實現(xiàn):

ptmalloc:glibc 的實現(xiàn)。tcmalloc:Google 的實現(xiàn)。jemalloc:Facebook 的實現(xiàn)。

雖然標(biāo)準(zhǔn)庫的實現(xiàn)在操作系統(tǒng)內(nèi)存管理的基礎(chǔ)上再加了一層內(nèi)存管理,但應(yīng)用程序通常也會實現(xiàn)自己特定的內(nèi)存池,如為了引用計數(shù)或者專門用于小對象分配。所以看起來內(nèi)存管理一般分為三個層次。

3.線程池

線程池是一個預(yù)先創(chuàng)建并維護一定數(shù)量線程的集合。當(dāng)有任務(wù)需要執(zhí)行時,線程池會從池中取出一個空閑線程來執(zhí)行任務(wù),而不是每次都創(chuàng)建新線程。

線程創(chuàng)建是需要分配資源的,這存在一定的開銷,如果一個任務(wù)就創(chuàng)建一個線程去處理,這必然會影響系統(tǒng)的性能。線程池的可以限制線程的創(chuàng)建數(shù)量并重復(fù)使用,從而提高系統(tǒng)的性能。

線程池可以分類或者分組,不同的任務(wù)使用不同的線程組,可以進行隔離以免互相影響。對于分類,可以分為核心和非核心,核心線程池一直存在不會被回收,非核心可能對空閑一段時間后的線程進行回收,從而節(jié)省系統(tǒng)資源,等需要時在按需創(chuàng)建放入池子中。

在 Java 中,可以使用 ExecutorService,在 Python 中可以使用 concurrent.futures.ThreadPoolExecutor。其他語言也有類似的線程池實現(xiàn)。

// Java 示例

ExecutorService executor = Executors.newFixedThreadPool(10);

executor.submit(() -> {

// 處理任務(wù)

});

4.連接池

常用的連接池有數(shù)據(jù)庫連接池、redis連接池、TCP連接池等等,其主要目的是通過復(fù)用來減少創(chuàng)建和釋放連接的開銷。連接池實現(xiàn)通常需要考慮以下幾個問題:

初始化:啟動即初始化和惰性初始化。啟動初始化可以減少一些加鎖操作和需要時可直接使用,缺點是可能造成服務(wù)啟動緩慢或者啟動后沒有任務(wù)處理,造成資源浪費。惰性初始化是真正有需要的時候再去創(chuàng)建,這種方式可能有助于減少資源占用,但是如果面對突發(fā)的任務(wù)請求,然后瞬間去創(chuàng)建一堆連接,可能會造成系統(tǒng)響應(yīng)慢或者響應(yīng)失敗,通常我們會采用啟動即初始化的方式。 連接數(shù)目:權(quán)衡所需的連接數(shù),連接數(shù)太少則可能造成任務(wù)處理緩慢,太多不但使任務(wù)處理慢還會過度消耗系統(tǒng)資源。 連接取出:當(dāng)連接池已經(jīng)無可用連接時,是一直等待直到有可用連接還是分配一個新的臨時連接。 連接放入:當(dāng)連接使用完畢且連接池未滿時,將連接放入連接池(包括連接池已經(jīng)無可用連接時創(chuàng)建的臨時連接),否則關(guān)閉。 連接檢測:長時間空閑連接和失效連接需要關(guān)閉并從連接池移除。常用的檢測方法有:使用時檢測和定期檢測。

5.對象池

嚴(yán)格來說,各種池都是對象池的的具體應(yīng)用,包括前面介紹的三種池。

對象池跟各種池一樣,也是緩存一些對象從而避免大量創(chuàng)建同一個類型的對象,同時限制了實例的個數(shù)。如 Redis 中 0-9999 整數(shù)對象就通過對象池進行共享。在游戲開發(fā)中對象池經(jīng)常使用,如進入地圖時怪物和 NPC 的出現(xiàn)并不是每次都是重新創(chuàng)建,而是從對象池中取出。

在微服務(wù)中,使用對象池來管理緩存對象(如 Redis 緩存、內(nèi)存緩存),可以提高緩存的效率。

6.小結(jié)

池化技術(shù)在微服務(wù)架構(gòu)中通過提高資源的重用率,減少資源創(chuàng)建和銷毀的開銷,顯著提升系統(tǒng)性能。線程池、連接池、對象池等技術(shù)可以有效管理并發(fā)任務(wù)和資源,提高系統(tǒng)的響應(yīng)速度和吞吐量。通過合理的池化策略和管理,微服務(wù)能夠更高效地處理高并發(fā)負(fù)載,優(yōu)化資源利用率。

參考文獻

服務(wù)高并發(fā)、高性能、高可用實現(xiàn)方案- 楊豈

柚子快報激活碼778899分享:微服務(wù)設(shè)計原則——高性能:池化

http://yzkb.51969.com/

文章來源

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19414354.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄