国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向微服務(wù)架構(gòu)的負(fù)載均衡算法綜述

2021-06-28 19:10:38陳宇明陳琳陸正武
電腦知識(shí)與技術(shù) 2021年10期
關(guān)鍵詞:負(fù)載均衡

陳宇明 陳琳 陸正武

摘要:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,傳統(tǒng)的單體架構(gòu)應(yīng)用不能適應(yīng)現(xiàn)有的互聯(lián)網(wǎng)環(huán)境,越來越多的企業(yè)采用微服務(wù)架構(gòu)來作為解決方案,而在微服務(wù)架構(gòu)中如何保持各服務(wù)器的負(fù)載相對(duì)均衡是亟待解決的問題,現(xiàn)在解決問題的辦法是通過負(fù)載均衡算法來平衡微服務(wù)架構(gòu)中各服務(wù)器的負(fù)載,保持系統(tǒng)的高可用性。本文首先介紹了微服務(wù)框架及其相關(guān)框架,詳細(xì)介紹了Spring Cloud框架的工作原理,然后分析了加權(quán)最小連接數(shù)算法、加權(quán)輪詢算法等負(fù)載均衡算法。

關(guān)鍵詞:微服務(wù)架構(gòu);Spring Cloud;負(fù)載均衡;加權(quán)最小連接數(shù)算法;加權(quán)輪詢算法

中圖分類號(hào):TP31? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2021)10-0187-02

Abstract:With the development of Internet technology, traditional monolithic architecture applications cannot adapt to the existing Internet environment. More and more companies adopt microservice architecture as solutions, but how to keep the load of each server relatively balanced in the microservice architecture It is an urgent problem to be solved. At present, the load balancing algorithm is used to balance the load of each server in the microservice architecture to maintain the high availability of the system. This article first introduced the microservice framework and its related frameworks, detailed the working principle of the Spring Cloud framework, and then analyzed load balancing algorithms such as the weighted least connection algorithm and the weighted round-robin algorithm.

Key words: Microservice architecture; Spring Cloud; load balancing; weighted least connection algorithm; weighted round-robin algorithm

1 引言

傳統(tǒng)的IT行業(yè)軟件多數(shù)是由各種獨(dú)立系統(tǒng)組成,這些系統(tǒng)將所有功能都包含在一個(gè)獨(dú)立單元的應(yīng)用程序內(nèi),即單體架構(gòu)應(yīng)用。單體架構(gòu)應(yīng)用在面對(duì)用戶需求快速變化的互聯(lián)網(wǎng)環(huán)境時(shí),出現(xiàn)了擴(kuò)展性差、可靠性低、維護(hù)成本高等問題,許多軟件或者應(yīng)用開始采用微服務(wù)架構(gòu)。與傳統(tǒng)單體架構(gòu)相比,微服務(wù)架構(gòu)具有高維護(hù)性、高擴(kuò)展性、高適應(yīng)性、去中心化管理等特點(diǎn)[1-4]。微服務(wù)架構(gòu)是將功能復(fù)雜的軟件或應(yīng)用劃分為一組相對(duì)較小且獨(dú)立的功能單元,并使用多個(gè)獨(dú)立的服務(wù)來開發(fā)這些功能單元,每個(gè)服務(wù)單獨(dú)運(yùn)行在各自的進(jìn)程。隨著數(shù)據(jù)和訪問量的增加,單臺(tái)服務(wù)器無法滿足海量的數(shù)據(jù)處理請(qǐng)求,無法適應(yīng)實(shí)際的市場(chǎng)需求,為了處理并發(fā)的數(shù)據(jù)存取請(qǐng)求和用戶訪問請(qǐng)求,需要多臺(tái)服務(wù)器同時(shí)在運(yùn)行的狀態(tài),并且通過負(fù)載均衡算法將來自客戶端或其他位置的請(qǐng)求分配給合適的服務(wù)器。

負(fù)載均衡算法按照算法原理能夠分為動(dòng)態(tài)負(fù)載均衡算法、靜態(tài)負(fù)載均衡算法兩種[7]。動(dòng)態(tài)負(fù)載均衡算法根據(jù)當(dāng)前的服務(wù)器狀態(tài)分配任務(wù),如最小連接數(shù)算法、加權(quán)最小連接數(shù)算法等[8]。靜態(tài)負(fù)載均衡算法按照固定比例分配任務(wù),如輪詢算法、加權(quán)輪詢算法等。靜態(tài)負(fù)載均衡算法的優(yōu)點(diǎn)是簡(jiǎn)單,缺點(diǎn)是沒有考慮到服務(wù)器的性能和當(dāng)前負(fù)載狀態(tài),在算法執(zhí)行一段時(shí)間后會(huì)破壞服務(wù)器之間的負(fù)載均衡狀態(tài)。動(dòng)態(tài)負(fù)載均衡算法可根據(jù)服務(wù)器的實(shí)時(shí)負(fù)載狀況,自動(dòng)將請(qǐng)求分配給合適的服務(wù)器,從而提高系統(tǒng)的整體性能,因此動(dòng)態(tài)負(fù)載均衡算法在實(shí)際系統(tǒng)開發(fā)中得到了廣泛應(yīng)用。

2 微服務(wù)架構(gòu)

2.1 微服務(wù)架構(gòu)

微服務(wù)架構(gòu)(MicroservicesArchitecure,MSA)是指根據(jù)整個(gè)應(yīng)用系統(tǒng)的業(yè)務(wù)需求,通過預(yù)先劃定的服務(wù)邊界、定義好的微服務(wù)進(jìn)行服務(wù)組合而形成的企業(yè)級(jí)分布式應(yīng)用體系架構(gòu)[5-6]。隨著微服務(wù)架構(gòu)的持續(xù)發(fā)展,一些中大型企業(yè)開始將傳統(tǒng)的單體架構(gòu)應(yīng)用逐漸轉(zhuǎn)化為微服務(wù)架構(gòu),并且出現(xiàn)了一些基于微服務(wù)架構(gòu)的實(shí)踐框架,如Motan、Dubbo、Spring Cloud等,Motan、Dubbo屬于服務(wù)治理型框架,更側(cè)重于服務(wù)治理,主要提供全面的服務(wù)治理功能。與Dubbo框架相比,Motan框架去除了Dubbo框架部分不常用的功能,雖然Motan框架功能減少了,但Motan框架變得比較簡(jiǎn)單、易用。

Spring Cloud的功能非常強(qiáng)大,Spring Cloud提供了開發(fā)微服務(wù)架構(gòu)應(yīng)用所需的服務(wù)發(fā)現(xiàn)(Eureka)、負(fù)載均衡(Ribbon)、配置管理(config)、服務(wù)網(wǎng)關(guān)(Zuul)、斷路器(Hystrix)等組件。Spring Cloud的組件架構(gòu)如圖1所示。

來自外部的請(qǐng)求統(tǒng)一從Zuul網(wǎng)關(guān)進(jìn)入,由Zuul網(wǎng)關(guān)轉(zhuǎn)發(fā)請(qǐng)求給內(nèi)部的服務(wù)。當(dāng)微服務(wù)在服務(wù)器上啟動(dòng)時(shí),Eureka Client都會(huì)將服務(wù)注冊(cè)到Eureka Server,并且Eureka Client還可以反過來從Eureka Server拉取注冊(cè)表,確定可用的服務(wù),然后由Ribbon做負(fù)載均衡,經(jīng)過負(fù)載均衡算法計(jì)算后,將請(qǐng)求發(fā)送到對(duì)應(yīng)的服務(wù)器。

3 負(fù)載均衡算法

3.1 動(dòng)態(tài)算法

(1)最小連接數(shù)算法

最小連接數(shù)算法是根據(jù)服務(wù)器當(dāng)前的連接數(shù),將請(qǐng)求分配給連接數(shù)最少的一臺(tái)服務(wù)器。

假設(shè)有n臺(tái)服務(wù)器Sk(k=1,2,...,n),Ck為服務(wù)器Sk的當(dāng)前連接數(shù),當(dāng)服務(wù)器Si(i=1,2,...,n,i≠k)的連接數(shù)[Ci=minCk]時(shí),將最新的連接請(qǐng)求發(fā)送給服務(wù)器Si。

最小連接數(shù)是一種簡(jiǎn)單的動(dòng)態(tài)分配服務(wù)器的算法,但在實(shí)際的生產(chǎn)環(huán)境中,當(dāng)每臺(tái)服務(wù)器的性能有差異時(shí),僅用服務(wù)器的連接數(shù)作為分配請(qǐng)求時(shí)的判斷依據(jù)是不科學(xué)的。這時(shí)需要根據(jù)每臺(tái)服務(wù)器處理請(qǐng)求的效率、CPU利用率、服務(wù)器類別等因素,設(shè)置每臺(tái)服務(wù)器的權(quán)值。

(2)加權(quán)最小連接數(shù)算法

假設(shè)有n臺(tái)服務(wù)器Sk(k=1,2,...,n),Ck為服務(wù)器Sk的當(dāng)前連接數(shù),Hk為服務(wù)器Sk的權(quán)值,則所有服務(wù)器的總連接數(shù)Csum=[k=1nCk]。當(dāng)服務(wù)器Si(i=1,2,...,n,i≠k)的連接數(shù)Ci滿足[CiCsumHi] = [minCkCsumHk] 時(shí),將最新的連接請(qǐng)求發(fā)送給服務(wù)器Si。其中Hi為服務(wù)器Si的權(quán)值。

加權(quán)最小連接數(shù)算法中,各服務(wù)器的權(quán)值表示其處理請(qǐng)求的性能,在處理新的連接請(qǐng)求時(shí),盡可能使服務(wù)器的權(quán)值與其性能成正比,保持各服務(wù)器的負(fù)載相對(duì)均衡。

3.2 靜態(tài)算法

(1)輪詢算法

輪詢算法是將請(qǐng)求輪流分配給服務(wù)器。

假設(shè)有n臺(tái)服務(wù)器Sk(k=1,2,...,n),Si表示上一次選擇的服務(wù)器,i的初始值為[n-1]。當(dāng)j滿足式[j=(i+1)%n]時(shí),將最新的連接請(qǐng)求發(fā)送給服務(wù)器Sj。

輪詢算法假設(shè)所有服務(wù)器的軟硬件配置都相同,即處理請(qǐng)求的效率相同,不考慮每臺(tái)服務(wù)器目前的使用情況,即當(dāng)前已連接數(shù)量和網(wǎng)絡(luò)帶寬等因素。當(dāng)每次請(qǐng)求服務(wù)的間隔時(shí)間浮動(dòng)較多時(shí),輪詢算法將會(huì)導(dǎo)致每臺(tái)服務(wù)器的負(fù)載不是很均衡。所以這種負(fù)載均衡算法只適用于各服務(wù)器的CPU、內(nèi)存、軟件等配置都相同的情況。

(2)加權(quán)輪詢算法

加權(quán)輪詢算法是根據(jù)每臺(tái)服務(wù)器處理請(qǐng)求的能力不同,給每個(gè)服務(wù)器分配不同的權(quán)值,使請(qǐng)求被分配到合適的服務(wù)器。

假設(shè)有n臺(tái)服務(wù)器Sk(k=1,2,...,n),Hk為服務(wù)器Sk的權(quán)值,[Hmax]為所有服務(wù)器權(quán)值的最大值,[G]為所有服務(wù)器權(quán)值的最大公約數(shù)。當(dāng)接收到一個(gè)請(qǐng)求時(shí),由服務(wù)器Si來處理,并且服務(wù)器Si在接收請(qǐng)求時(shí)的權(quán)值為[Wi]。[Wi]的初始值為[Hmax],并且滿足[Wi=Wi-G],如果[Wi]的值為0時(shí),則將其重置為[Hmax]。

[Wi]的值從[Hmax]到0的過程,成為一個(gè)輪回,[Wi]的值的變化序列是一個(gè)等差數(shù)列:[Hmax,Hmax-G,Hmax-2G,Hmax-3G,...,0]。加權(quán)輪詢算法的結(jié)果是根據(jù)服務(wù)器的配置得到一個(gè)服務(wù)器序列,對(duì)于[Wi]的每個(gè)值,加權(quán)輪詢算法將遍歷所有服務(wù)器,將權(quán)值大于[Wi]的服務(wù)器放到序列中,然后[Wi]變成下一個(gè)值,再遍歷所有服務(wù)器,直到[Wi]的值為0。在[Wi]變化的過程中,不論[Wi]為何值,權(quán)值為[Hmax]的服務(wù)器每一次遍歷中都會(huì)被選中,因此權(quán)值為[Hmax]的服務(wù)器在算法結(jié)果的服務(wù)器序列中會(huì)出現(xiàn)[Hmax/G]次,并且當(dāng)[Wi]的值為[Hwi]時(shí),權(quán)重為[Hwi]的服務(wù)器在[Wi]后面的遍歷過程中,每一次都會(huì)被選中,并且會(huì)在結(jié)果序列中出現(xiàn)[Hwi/G]次,所以每個(gè)服務(wù)器在算法結(jié)果的服務(wù)器序列中出現(xiàn)的次數(shù)與其權(quán)值成正相關(guān)性。

4 結(jié)束語(yǔ)

本文從微服務(wù)架構(gòu)和負(fù)載均衡算法出發(fā),介紹了微服務(wù)框架Spring Cloud的工作原理及其相關(guān)組件的功能,解釋了加權(quán)最小連接數(shù)算法、加權(quán)輪詢算法等負(fù)載均衡算法的實(shí)現(xiàn)過程,并總結(jié)了各負(fù)載均衡算法的優(yōu)缺點(diǎn)。本文中提到的加權(quán)最小連接數(shù)算法、加權(quán)輪詢算法中,每臺(tái)服務(wù)器都有對(duì)應(yīng)的權(quán)值,實(shí)際上服務(wù)器權(quán)值的確定應(yīng)該考慮服務(wù)器軟硬件配置及使用情況,并且應(yīng)該根據(jù)服務(wù)器當(dāng)前狀態(tài)浮動(dòng)的,本文沒有考慮到權(quán)值動(dòng)態(tài)變化的情況,比較理想化,需要進(jìn)一步的研究和細(xì)化負(fù)載均衡算法來解決這一問題。

參考文獻(xiàn):

[1] Knoche H, Hasselbring W. Using microservices for legacy software modernization [J]. IEEE Software, 2018, 35(3): 44-49.

[2] Rademacher F, Sorgalla J, Sachweh S. Challenges of domain-driven microservice design: a model-driven perspective [J]. IEEE Software, 2018, 35(3): 36-43.

[3] Pahl C, Brogi A, Soldani J, et al. Cloud container technologies: a state-of-the-art review [J]. IEEE Transactions on Cloud Computing, 2019, 7(3): 677-692.

[4] 鐘陳星,李杉杉,張賀,等.限界上下文視角下的微服務(wù)粒度評(píng)估[J].軟件學(xué)報(bào),2019,30(10):3227-3241.

[5] Zhong C X, Li S S, Zhang H, et al. Microservice granularity evaluation from the perspective of bounded context [J]. Journal of Software, 2019, 30(10): 3227-3324.

[6] NewmanS. Buildingmicroservices: designing?ne-grainedsystems[M]. OReillyMedia,Inc.,2015.

[7] 張慧芳.基于動(dòng)態(tài)反饋的加權(quán)最小連接數(shù)服務(wù)器負(fù)載均衡算法研究[D].上海:華東理工大學(xué),2013.

[8] 孟曉景,張春勇.一種改進(jìn)加權(quán)最小連接算法及在CDN的負(fù)載均衡技術(shù)中的應(yīng)用分析[J].山東科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,39(1):85-90.

【通聯(lián)編輯:梁書】

猜你喜歡
負(fù)載均衡
Linux負(fù)載均衡集群技術(shù)在網(wǎng)絡(luò)服務(wù)器中的應(yīng)用
Oracle MAA在汽車行業(yè)電子政務(wù)平臺(tái)中的應(yīng)用
異構(gòu)環(huán)境下改進(jìn)的LATE調(diào)度算法
基于負(fù)載均衡的云資源調(diào)度策略研究
多站點(diǎn)同步更新系統(tǒng)的設(shè)計(jì)
科技視界(2016年3期)2016-02-26 20:16:57
模糊理論在Ad hoc網(wǎng)絡(luò)通信領(lǐng)域的應(yīng)用
科技視界(2015年25期)2015-09-01 16:07:00
皮山县| 昌江| 磐石市| 呈贡县| 贵港市| 涟源市| 报价| 泸定县| 邢台市| 禹州市| 三河市| 连城县| 万荣县| 辰溪县| 同仁县| 余江县| 双峰县| 孟津县| 博兴县| 曲靖市| 肥城市| 嘉鱼县| 巴林右旗| 九江市| 清流县| 松阳县| 哈巴河县| 郸城县| 视频| 三门县| 浪卡子县| 沁水县| 桐城市| 佛山市| 昭苏县| 潼南县| 达尔| 普洱| 祁阳县| 武安市| 青龙|