亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Nginx的高可用Web系統(tǒng)的架構(gòu)研究與設(shè)計(jì)

        2019-10-21 09:21:18劉金秀陳怡華谷長(zhǎng)樂(lè)
        現(xiàn)代信息科技 2019年11期

        劉金秀 陳怡華 谷長(zhǎng)樂(lè)

        摘? 要:隨著互聯(lián)網(wǎng)的迅猛發(fā)展,傳統(tǒng)的商務(wù)模式正在發(fā)生巨大變化:商家的銷售模式和消費(fèi)者的購(gòu)物模式都在快速向互聯(lián)網(wǎng)轉(zhuǎn)變。本論文要解決的問(wèn)題是Web應(yīng)用系統(tǒng)的高并發(fā)和高可用問(wèn)題,為此作者設(shè)計(jì)了一個(gè)在Linux操作系統(tǒng)下的Nginx+Keepalived的高可用架構(gòu)。

        關(guān)鍵詞:Nginx;Keepalived;Mycat;高可用

        Abstract:With the rapid development of the internet,the traditional business model is undergoing tremendous changes:the sales model of merchants and the shopping model of consumers are rapidly changing to the internet. The problem to be solved in this thesis is the high concurrency and high availability of the Web application system. For this reason,the author designs a high availability architecture of Nginx + Keepalived under Linux operating system.

        Keywords:Nginx;Keepalived;Mycat;high availability

        0? 引? 言

        21世紀(jì)是信息大爆炸的時(shí)代。隨著互聯(lián)網(wǎng)的迅猛發(fā)展,傳統(tǒng)的商務(wù)模式受到了巨大的沖擊。近兩年,整個(gè)社會(huì)都在大力推薦“互聯(lián)網(wǎng)+”。在這樣的大環(huán)境下,傳統(tǒng)的商務(wù)模式正在發(fā)生翻天覆地的變化:商家的銷售模式和消費(fèi)者的購(gòu)物模式都在快速向互聯(lián)網(wǎng)轉(zhuǎn)變。目前國(guó)內(nèi)有阿里巴巴、淘寶、京東、當(dāng)當(dāng)網(wǎng)、唯品會(huì)、蘇寧易購(gòu)、一號(hào)店等電商平臺(tái),他們的線上銷售做得比較成功,特別是京東,其擁有自己的京東物流和良好的售前售后服務(wù),這無(wú)疑讓他們的線上銷售如虎添翼。

        當(dāng)前,中小企業(yè)對(duì)線上銷售有很大的需求,但是因?yàn)榉N種原因,他們有的只能依托阿里巴巴和京東等這樣的平臺(tái)進(jìn)行銷售,有的是自己開發(fā)一個(gè)電商系統(tǒng),進(jìn)行線上銷售。這樣的線上銷售方式存在著一些問(wèn)題:依托大平臺(tái)的企業(yè),其商品的特色和性價(jià)比很容易淹沒在大品牌效應(yīng)中;另外,它們還需要向平臺(tái)交付較高的管理費(fèi)用,對(duì)很多小型企業(yè)來(lái)說(shuō),隨著時(shí)間增長(zhǎng)累計(jì)經(jīng)費(fèi)投入將成為一個(gè)很大的負(fù)擔(dān)。很多企業(yè)可能會(huì)選擇自己開發(fā)系統(tǒng),然而,企業(yè)自己開發(fā)的系統(tǒng),往往會(huì)因?yàn)榧軜?gòu)原因,出現(xiàn)高可用和高并發(fā)問(wèn)題。

        基于這樣的社會(huì)需求和技術(shù)需要,本文通過(guò)對(duì)市場(chǎng)上的架構(gòu)進(jìn)行研究分析,設(shè)計(jì)了一個(gè)可以處理高并發(fā)和高可用問(wèn)題的架構(gòu)——Nginx+Keepalived+Mycat集群架構(gòu),該集群架構(gòu)可以滿足一般電商企業(yè)的業(yè)務(wù)要求,也可以滿足企業(yè)非電商業(yè)務(wù)的需求。

        本文首先介紹了服務(wù)器集群以及集群中用到的一些技術(shù),包括服務(wù)器集群分類,構(gòu)建集群需要的軟件,然后對(duì)不同服務(wù)器架構(gòu)進(jìn)行了比較,最后選擇了一個(gè)適合中小型企業(yè)搭建自己的高可用Web系統(tǒng)的架構(gòu)。

        1? 服務(wù)器集群介紹

        1.1? 服務(wù)器集群

        服務(wù)器集群就是指將很多服務(wù)器集中起來(lái)一起進(jìn)行同一種服務(wù),在客戶端看來(lái)就像是只有一個(gè)服務(wù)器。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得很高的計(jì)算速度,也可以用多個(gè)計(jì)算機(jī)做備份,從而使得任何一個(gè)機(jī)器壞了整個(gè)系統(tǒng)還是能正常運(yùn)行。一旦在服務(wù)器上安裝并運(yùn)行了集群服務(wù),該服務(wù)器即可加入群集。集群化操作可以減少單點(diǎn)故障數(shù)量,并且實(shí)現(xiàn)了群集化資源的高可用性。[1]

        1.2? 集群技術(shù)的分類

        高可用集群:高可用的英文全稱是High Availability,此類集群可以給用戶提供持久不間斷的服務(wù)。

        負(fù)載均衡集群:該類集群一般是由提供負(fù)載調(diào)度的前端服務(wù)和后端業(yè)務(wù)處理服務(wù)的多臺(tái)服務(wù)器組成,該結(jié)構(gòu)的后端服務(wù)器都對(duì)外提供服務(wù),通過(guò)前端服務(wù)器的調(diào)度分?jǐn)傁到y(tǒng)的工作負(fù)載。

        科學(xué)計(jì)算集群:這類集群致力于提供單個(gè)計(jì)算機(jī)不能完成的處理工作,傾向于追求綜合性能。

        本文討論的對(duì)象是高可用和負(fù)載均衡集群。

        1.3? LNMJ集群技術(shù)

        LNMJ是一組開源軟件包,主要包括Linux、Nginx、MySQL和Java EE。搭建這種集群,需要使用Nginx、Keepalived、Mycat等開源軟件,其中,Nginx作為反向代理服務(wù)器,以解決負(fù)載均衡問(wèn)題,它還可以作為靜態(tài)Web服務(wù)器;Keepalived可解決高可用問(wèn)題,又可以解決Nginx的單點(diǎn)故障問(wèn)題;Mycat可以用來(lái)搭建雙主雙備的MySQL數(shù)據(jù)庫(kù)服務(wù)器集群。

        2? 高可用負(fù)載均衡的集群架構(gòu)設(shè)計(jì)

        高可用和負(fù)載均衡架構(gòu)原理圖如圖1所示。該架構(gòu)中使用的技術(shù)介紹如下。

        2.1? Nginx

        Nginx是一款輕量級(jí)的高性能的Web代理服務(wù)器,目前在全球范圍內(nèi)新的大型網(wǎng)站很多使用Nginx服務(wù)器。同Apache的Httpd相比,它具有消耗資源少,可代理的后端服務(wù)器多的特點(diǎn),因此市場(chǎng)占有率增長(zhǎng)很快,目前占全球Web服務(wù)器的三成。

        Nginx使用的場(chǎng)景是:有高并發(fā)的系統(tǒng)、需要解決負(fù)載均衡的系統(tǒng)和高可用場(chǎng)景。Nginx有兩個(gè)功能:一是作為前端服務(wù)器響應(yīng)靜態(tài)頁(yè)面的功能,二是作為集群中的反向代理服務(wù)器功能。

        在圖1中,主備Nginx服務(wù)器通過(guò)Keepalived保持通信,這里的Nginx是作為反向代理服務(wù)器來(lái)使用。[2]

        2.2? Keepalived

        Keepalived是用C語(yǔ)言寫的一個(gè)開源路由軟件。它使用VRRP協(xié)議實(shí)現(xiàn)高可用性,目的是為L(zhǎng)inux系統(tǒng)和基于Linux的基礎(chǔ)架構(gòu)提供一個(gè)簡(jiǎn)單而強(qiáng)大的負(fù)載均衡和高可用設(shè)施。

        圖1的主備服務(wù)器中的Keepalived配置了虛擬IP(以下簡(jiǎn)稱VIP),只有當(dāng)主Nginx服務(wù)器中的Nginx服務(wù)停止,Keepalived在規(guī)定時(shí)間內(nèi)在系統(tǒng)進(jìn)程中發(fā)現(xiàn)主服務(wù)器的Nginx進(jìn)程不存在,主服務(wù)器的Keepalived就停止服務(wù)。只有當(dāng)主服務(wù)器中的Keepalived停止,備Nginx服務(wù)器的才會(huì)接管主Nginx的工作,以保證整個(gè)系統(tǒng)的高可用性,當(dāng)主Nginx恢復(fù)工作,備Nginx會(huì)將管理權(quán)限交給主Nginx。[3]

        2.3? MySQL雙主熱備

        雙機(jī)熱備特指基于高可用系統(tǒng)中的兩臺(tái)服務(wù)器的熱備(或高可用),因兩機(jī)高可用在國(guó)內(nèi)使用較多,故得名雙機(jī)熱備,雙機(jī)高可用按工作中的切換方式分為:主-備方式(Active-Standby方式)和雙主機(jī)方式(Active-Active方式),主-備方式即指的是一臺(tái)服務(wù)器處于某種業(yè)務(wù)的激活狀態(tài)(即Active狀態(tài)),另一臺(tái)服務(wù)器處于該業(yè)務(wù)的備用狀態(tài)(即Standby狀態(tài))。而雙主機(jī)方式即指兩種不同業(yè)務(wù)分別在兩臺(tái)服務(wù)器上互為主備狀態(tài)(即Active-Standby和Standby-Active狀態(tài))[4]。

        MySQL的雙主熱備原理如圖2所示。圖中的左右Master是同一個(gè)Master。

        2.4? Mycat

        目前,Mycat是國(guó)內(nèi)最活躍的、性能最好的開源數(shù)據(jù)庫(kù)中間件。Mycat可以創(chuàng)建面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫(kù)集群。

        基于以上介紹的技術(shù),我們搭建如圖3所示的Nginx下的高并發(fā)Web架構(gòu)圖。在圖3的架構(gòu)中,Mycat處于應(yīng)用程序和數(shù)據(jù)庫(kù)服務(wù)器之間,作為應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的橋梁,對(duì)用戶的數(shù)據(jù)庫(kù)操作請(qǐng)求進(jìn)行處理,并且配置了讀寫分離,以提高電商系統(tǒng)中查詢?yōu)橹鞯臄?shù)據(jù)庫(kù)的讀性能。

        根據(jù)圖2原理,在圖3的架構(gòu)中,搭建以主MySQL數(shù)據(jù)庫(kù)集群node5和node6、備MySQL數(shù)據(jù)庫(kù)集群node7和node8為數(shù)據(jù)庫(kù)的雙主從熱備架構(gòu),且根據(jù)電商系統(tǒng)的某些大表,設(shè)計(jì)了以讀為主的MyISAM和以寫為主的InnoDB兩種引擎,以提高讀寫效率,如果是小表,只使用InnoDB引擎,并且在Mycat中配置全局表,以實(shí)現(xiàn)跨節(jié)點(diǎn)join。[5]

        3? 不同服務(wù)器架構(gòu)及比較

        3.1? 單Web服務(wù)器架構(gòu)

        平時(shí)我們使用單Web服務(wù)器(如圖4所示)也就是使用一個(gè)Tomcat服務(wù)器來(lái)開發(fā)Web項(xiàng)目。單個(gè)的Tomcat服務(wù)器,如果沒有配置,默認(rèn)的最大并發(fā)數(shù)是200。通過(guò)測(cè)試,Tomcat7.0最大并發(fā)數(shù)250為性能完美的拐點(diǎn),超過(guò)該并發(fā)數(shù)后,系統(tǒng)明顯變慢,操作延遲,性能變差,丟包數(shù)增多,當(dāng)并發(fā)數(shù)達(dá)到600時(shí)候,系統(tǒng)幾乎不能使用,出現(xiàn)假死狀態(tài),很顯然這種架構(gòu)不適合具有大并發(fā)特性的電商網(wǎng)站。

        本文作者做了兩個(gè)測(cè)試,第一個(gè)測(cè)試是做并發(fā)登錄測(cè)試,測(cè)試的條件是:數(shù)據(jù)表記錄數(shù)為1000000,線程數(shù)為300的情況,使用虛擬機(jī)進(jìn)行測(cè)試,在此種條件下,得到并發(fā)數(shù)為50、100、150、300的聚合報(bào)告,并對(duì)測(cè)試數(shù)據(jù)匯總,將一些關(guān)鍵數(shù)據(jù)提取到表1中,由表1可以看出,隨著并發(fā)數(shù)的增加,服務(wù)器內(nèi)存消耗越來(lái)越大,當(dāng)并發(fā)數(shù)為150、300的時(shí)候,內(nèi)存占用很高。

        由表2可見,當(dāng)數(shù)據(jù)表記錄數(shù)是1000000,并發(fā)數(shù)是100情況下,查詢沒有出錯(cuò);而當(dāng)并發(fā)數(shù)為120時(shí),已經(jīng)出現(xiàn)15.83%的出錯(cuò),平均查詢時(shí)間為2676毫秒(近3秒);當(dāng)并發(fā)數(shù)達(dá)到150時(shí),出錯(cuò)率為32.67%,平均耗時(shí)2755毫秒,出錯(cuò)率太高,就數(shù)據(jù)庫(kù)來(lái)說(shuō),這樣的性能已經(jīng)不滿足電商網(wǎng)站的要求。

        3.2? Nginx+Keepalived+Tomcat+Mycat架構(gòu)

        為了模擬一個(gè)中型的電商系統(tǒng),本文使用8臺(tái)虛擬機(jī)搭建LAMP高可用集群架構(gòu)。虛擬機(jī)服務(wù)器的IP地址分配和安裝軟件如表3所示,圖3的服務(wù)器集群就是基于表3而來(lái)的。

        圖3中的node1和node2作為主備Nginx服務(wù)器,可以解決單點(diǎn)故障[6]問(wèn)題。當(dāng)主Nginx出現(xiàn)故障,備Nginx服務(wù)器即刻可以接管主Nginx的工作。Nginx將客戶端發(fā)來(lái)的請(qǐng)求根據(jù)某種算法發(fā)送到后端動(dòng)態(tài)Web服務(wù)器TomcatX,Tomcat處理完用戶的動(dòng)態(tài)請(qǐng)求,將響應(yīng)通過(guò)Nginx服務(wù)器返回給客戶端,當(dāng)業(yè)務(wù)邏輯需要訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器時(shí),通過(guò)Nginx訪問(wèn)中間件Mycat,對(duì)數(shù)據(jù)表進(jìn)行處理。Mycat中配置了讀寫分離,以提高數(shù)據(jù)表的讀寫性能。

        在圖3架構(gòu)下通過(guò)分別對(duì)系統(tǒng)并發(fā)操作和單獨(dú)對(duì)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試發(fā)現(xiàn),數(shù)據(jù)庫(kù)中的數(shù)據(jù)量越大,系統(tǒng)的讀功能越強(qiáng),查詢時(shí)間越快,而寫時(shí)間稍微慢,原因是配置的雙主備數(shù)據(jù)庫(kù)架構(gòu)的影響。

        4? 結(jié)? 論

        圖3的Nginx+Keepalived+Mycat后端服務(wù)器集群架構(gòu),既解決了Web系統(tǒng)的單點(diǎn)故障問(wèn)題,也解決了高并發(fā)問(wèn)題,適于中小型高并發(fā)系統(tǒng),但對(duì)于淘寶天貓這樣的系統(tǒng)來(lái)說(shuō),這樣的架構(gòu)還是不適合大型電商系統(tǒng),由于上下行數(shù)據(jù)都是通過(guò)Nginx服務(wù)器傳輸,當(dāng)數(shù)據(jù)量很大的情況下,Nginx服務(wù)器是整個(gè)架構(gòu)的數(shù)據(jù)傳輸瓶頸,如何解決該問(wèn)題,作者將在后續(xù)研究中再討論。

        參考文獻(xiàn):

        [1] 百度百科.服務(wù)器集群 [EB/OL].https://baike.baidu.com/item/服務(wù)器集群/5309783,2019-05-21.

        [2] Nginx. nginx documentation [EB/OL].http://nginx.org/en/docs/,2019-03-31.

        [3] Keepalived.What is Keepalived? [EB/OL].http://www.keepalived.org/index.html,2019-05-21.

        [4] 百度百科.雙機(jī)熱備 [EB/OL].https://baike.baidu.com/item/雙機(jī)熱備/2394182,2019-05-21.

        [5] MyCAT官網(wǎng).什么是MYCAT [EB/OL].http://www.mycat.io,2019-03-31.

        [6] 百度百科.單點(diǎn)故障 [EB/OL].https://baike.baidu.com/item/單點(diǎn)故障/3570893,2019-05-21.

        作者簡(jiǎn)介:劉金秀(1967.01-),女,漢族,湖南湘潭人,本科,碩士,高級(jí)工程師,研究方向:軟件工程;陳怡華(1994.10-),女,漢族,廣東汕頭人,管理人員,研究方向:教學(xué)管理;谷長(zhǎng)樂(lè)(1992.02-),男,漢族,湖南衡陽(yáng)人,管理人員,研究方向:思想政治教育。

        亚洲日产一线二线三线精华液 | 日本伦理精品一区二区三区| 成人午夜特黄aaaaa片男男| 国产亚洲av手机在线观看| 亚洲男人天堂av在线| 精品国产一区二区av麻豆不卡| 女色av少妇一区二区三区| 久久精品黄aa片一区二区三区| 日本欧美小视频| 久久精品国产亚洲av热九九热| 国产不卡视频在线观看| 国产成人喷潮在线观看| 亚洲国际无码中文字幕| 日本一区二区三区专区| 久久精品国产亚洲av高清三区| 欧美牲交a欧美牲交aⅴ免费真| 久久精品国产精品亚洲毛片| 久久久精品人妻一区二区三区日本 | 少妇被粗大猛进进出出| 手机在线播放av网址| 麻豆精品国产精华液好用吗| 视频一区二区在线播放| 久久精品国产亚洲一级二级| 亚洲麻豆视频免费观看| 人妻少妇精品视频无码专区| 91精品国产91久久久无码95| 精品国产麻豆免费人成网站| 久久精品国产99国产精品澳门| 亚洲av无码av日韩av网站| 在线国产视频精品视频| 各类熟女熟妇激情自拍| 国产色xx群视频射精| 国产91精选在线观看麻豆| 激情视频在线观看免费播放| 久久午夜av一区二区三区| 天躁夜夜躁狼狠躁| 亚洲人成网站18男男| 日韩一区二区三区人妻免费观看| 免费国产黄网站在线观看可以下载| 国产精品乱一区二区三区| 国内揄拍国内精品久久|