電信級寬帶應(yīng)用網(wǎng)站并發(fā)性承載均衡研究

張凱 趙剛 金洋 遼寧省通信公司數(shù)據(jù)通信局

  摘要 當(dāng)前互聯(lián)網(wǎng)寬帶增值服務(wù)成為發(fā)展熱點,本文從寬帶網(wǎng)站W(wǎng)eb應(yīng)用系統(tǒng)的共性出發(fā),通過系統(tǒng)架構(gòu)設(shè)計,軟件開發(fā),數(shù)據(jù)庫連接池技術(shù)和網(wǎng)絡(luò)布置等方面的研究,探討了如何解決Web應(yīng)用的承載能力問題,并結(jié)合遼寧當(dāng)?shù)鼐W(wǎng)上招考查詢平臺技術(shù)情況,介紹了解決并發(fā)訪問的經(jīng)驗。

  關(guān)鍵詞 B/S Jsp JavaBean組件 數(shù)據(jù)庫連接池 SLB技術(shù)

  隨著全球信息產(chǎn)業(yè)蓬勃發(fā)展,計算機寬帶網(wǎng)絡(luò)構(gòu)成了信息通信的高速公路。有了寬帶的支持,企業(yè)的生產(chǎn)水平、服務(wù)質(zhì)量及工作效率都得到了提高,使網(wǎng)上應(yīng)用成為企業(yè)7x24小時開放的“網(wǎng)上營業(yè)廳”。但同時由于客戶訪問量不斷增長,使后臺系統(tǒng)的并發(fā)承載能力面臨極大的挑戰(zhàn)?蛻舳藶g覽器

  結(jié)合遼寧通信幾年來網(wǎng)上招考查詢等寬帶應(yīng)用開展的經(jīng)驗和電信級的服務(wù)要求,我們從應(yīng)用系統(tǒng)架構(gòu)設(shè)計,軟件開發(fā),數(shù)據(jù)庫連接池技術(shù)和網(wǎng)絡(luò)設(shè)備的并發(fā)承載等幾個方面進行了研究,總結(jié)出一套適用于寬帶網(wǎng)站應(yīng)用建設(shè)的解決方案。

1 寬帶應(yīng)用架構(gòu)設(shè)計

  應(yīng)用系統(tǒng)的發(fā)展經(jīng)歷了從兩層架構(gòu)到三層(或多層)架構(gòu)的過程,在應(yīng)用系統(tǒng)中通常包含三個邏輯組成部分:表達(dá)邏輯、事物邏輯、數(shù)據(jù)存儲。目前的三層(或三層以上的)B/S架構(gòu)通常是以Brower/Web server/DataBase形式為主,這可以將表達(dá)邏輯分布在客戶瀏覽器上,數(shù)據(jù)存儲分布在數(shù)據(jù)庫服務(wù)器端,而事務(wù)邏輯單獨作為一層,結(jié)合在Web服務(wù)器(或其它服務(wù)器)中。這樣可簡化應(yīng)用發(fā)布和維護,更利于軟件集群化的分擔(dān)模式,增加并發(fā)處理能力,靈活的完成多主機的分擔(dān)切換和相互備份作用,實現(xiàn)了并發(fā)性保障。

  按照客戶表達(dá)層、事物邏輯處理層和服務(wù)器數(shù)據(jù)存儲層三個方面設(shè)計的系統(tǒng),可根據(jù)業(yè)務(wù)量的多少分配多臺主機,可實現(xiàn)客戶端的簡潔性、系統(tǒng)的邏輯安全性、服務(wù)器的負(fù)載均衡等特點。遼寧通信在設(shè)計網(wǎng)上招考查詢平臺系統(tǒng)時就是按照以上思路進行的。

2 數(shù)據(jù)存取的并發(fā)效率

  數(shù)據(jù)庫存取訪問是WEB應(yīng)用系統(tǒng)中的重要操作,又相當(dāng)消耗資源,是制約整個應(yīng)用系統(tǒng)效率的關(guān)鍵因素之一,這里所說的效率包含兩方面:訪問效率和連接效率。

  訪問效率是指在與數(shù)據(jù)庫進行數(shù)據(jù)交換時的效率,我們可以從減少數(shù)據(jù)訪問次數(shù),增加數(shù)據(jù)的共享性等方面使訪問效率得以提高;連接效率是指建立數(shù)據(jù)庫連接的效率,在應(yīng)用程序中頻繁地進行數(shù)據(jù)庫連接,是造成數(shù)據(jù)庫訪問效率低下的重要原因,解決數(shù)據(jù)庫連接效率問題的思路是:一旦建立數(shù)據(jù)庫連接,就盡可能地保持這個數(shù)據(jù)庫連接,在執(zhí)行完其它操作后再使用這個連接進行數(shù)據(jù)庫訪問;也可以維護一個可重用的連接池,應(yīng)用系統(tǒng)一啟動就建立一些數(shù)據(jù)庫連接,存儲到數(shù)據(jù)庫連接池,應(yīng)用程序可以使用這些連接,任務(wù)完成后可以把這些連接放回到連接池,供其它應(yīng)用使用。

2.1 Java Bean并發(fā)與訪問效率

  遼寧通信網(wǎng)上招考查詢平臺使用Java Bean方法實現(xiàn)重載,提高了訪問效率。JavaBean(或Bean)是一種具有特定架構(gòu)的可重用Java組件,Java開發(fā)語言中引入用實體Bean組件來處理并發(fā)控制問題,基本原理是:其定義了一個抽象級,用來統(tǒng)一所有軟件實體,并且允許每個這樣的實體變成一個組件。通過允許不同來源的獨立代碼在處理方式上“看上去相同”,從而使得Bean能夠?qū)崿F(xiàn)在Java領(lǐng)域內(nèi)部的軟件重用。

在多個客戶端程序需要同時訪問某一個數(shù)據(jù)時,數(shù)據(jù)端不直接訪問實際的數(shù)據(jù)存儲,而是通過訪問對應(yīng)的實體Bean的實例來進行,這樣同一數(shù)據(jù)可以實現(xiàn)多個客戶端同時引用,而在內(nèi)存中只保留一份實例,避免多客戶端檢索同一記錄時對數(shù)據(jù)庫的重復(fù)操作,提高了應(yīng)用效率。

2.2 數(shù)據(jù)庫連接池

  Java的數(shù)據(jù)庫連接通常利用JDBC(Java Database Connectivity)來做的,JDBC是一個Java擴展API,它為編程者提供了基于SQL查詢的數(shù)據(jù)訪問能力。但是,通過JDBC連接訪問數(shù)據(jù)庫服務(wù)器的能力,對于電信級應(yīng)用程序還是不夠的。引入連接池的目的就是改善依賴于數(shù)據(jù)庫的java服務(wù)器代碼的性能和并發(fā)性,解決三層架構(gòu)中的中間層與第三層之間的開銷。

  池(pooling)本質(zhì)上是一種資源共享形式。連接池不需要每個用戶的請求都經(jīng)歷一個連接操作的開銷,因為連接池是預(yù)先準(zhǔn)備好或按照需要動態(tài)創(chuàng)建的,并且該連接池由容器(Web容器或EJB容器)管理,同時被容器中所有元素共享,這樣java就不等待數(shù)據(jù)庫連接。如果一個連接可用,那么該連接立刻就處于準(zhǔn)備狀態(tài)。如果沒有連接可用,那么將創(chuàng)建一個新連接。這時將會增加由于建立連接所帶來的一些開銷,但在后來的請求中,就又有一個連接添加到連接池中。在最壞的情況下,就是當(dāng)?shù)竭_(dá)連接池允許的最大連接數(shù)時,正在請求的應(yīng)用就需要等待正在使用的連接釋放并返回到連接池中去。由于大多數(shù)數(shù)據(jù)庫交互都是很短的,這個等待時間不會很長。同樣,連接池也避免了斷開連接所需要的開銷,因為連接是一直打開的。

  基于Web的中間件產(chǎn)品較多,它們都可以實現(xiàn)池的作用,在遼寧通信招考查詢平臺應(yīng)用中選用WebSphere作為數(shù)據(jù)庫中間件進行數(shù)據(jù)庫連接池管理,提高程序效率,利用其自身的管理機制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。通常,一個數(shù)據(jù)庫連接池(ConnectionPool)有以下幾個基本的屬性:

  m_ConnectionPoolSize:連接池中連接數(shù)量下限

  m_ConnectionPoolMax:連接池中連接數(shù)量上限

  m_ConnectionUseCount:一個連接的最大使用次數(shù)

  m_ConnectionTimeout:一個連接的最長空閑時間

  m_MaxConnections:同一時間的最大連接數(shù)

  m_timer:定時器

  這些屬性定義了連接池與其中連接的有效狀態(tài)值。連接池的自我管理,實際上就是通過定時的對每個連接的狀態(tài)、連接的數(shù)量進行判斷而進行相應(yīng)操作。

3 SLB網(wǎng)絡(luò)處理技術(shù)

  前面介紹的是在軟件開發(fā)和數(shù)據(jù)庫連接方面的并發(fā)承載技術(shù)。在網(wǎng)絡(luò)硬件方面,以往解決并發(fā)性問題主要是采用更強計算能力的服務(wù)器來替換,舊的服務(wù)器被淘汰掉。而單臺服務(wù)器的負(fù)載能力終歸是有限的,不能無限擴展,同時成本投入也很大。近幾年提出了SLB(Server Load Balance)服務(wù)器承載均衡網(wǎng)絡(luò)設(shè)備解決方案,并日漸成為主流。

  負(fù)載分擔(dān)的主要手段是將用戶的接入請求分散給多個服務(wù)器,一般支持的網(wǎng)絡(luò)設(shè)備具有四/七層交換功能;我們將負(fù)載均衡方法歸納為兩大類型:靜態(tài)和動態(tài)兩種負(fù)載均衡算法,包括:輪詢,比率,優(yōu)先權(quán),最少連接數(shù),最快響應(yīng)速度,觀察方法,預(yù)測法,動態(tài)性能分配,動態(tài)服務(wù)器補充,服務(wù)質(zhì)量,服務(wù)類型,規(guī)則模式等等。在工作時根據(jù)服務(wù)器的狀態(tài)采取適當(dāng)?shù)木廪k法,例如兩臺Web服務(wù)器的CPU利用率分別是25%和50%,則可以按2:1的比例來分配通信量,實現(xiàn)比率(Ratio)負(fù)載分擔(dān)算法的負(fù)載均衡,當(dāng)某個服務(wù)器發(fā)生故障,SLB就把其從服務(wù)器隊列中拿出,不參加下一次的用戶請求分配,直到其恢復(fù)正常。

  遼寧通信網(wǎng)上招考查詢平臺的SLB網(wǎng)絡(luò)布置實例是采用哈希算法規(guī)則進行處理的,利用Alteon Websystem四層交換機設(shè)備做負(fù)載分擔(dān)控制。

配置過程:

(1)指定IP interface,并分配到相應(yīng)的Vlan中。

#/cfg/ip/if 1

IP Interface 1# addr 10.10.10.8

IP Interface 1# mask 255.255.255.0

IP Interface 1# ena

IP Interface 1# vlan 1

(2)設(shè)置缺省網(wǎng)關(guān)

#/cfg/ip/gw 1

Default gateway 1# addr 10.10.10.1

Default gateway 1# ena

Default gateway 2# addr 10.10.10.2

Default gateway 2# ena

(3)定義real server

#/cfg/slb/real 1

Real server 1#rip 10.10.10.3

Real server 1#ena

  按照以上方法再分別定義RealServer2、3、4。

(4)定義相應(yīng)的real server group組,指定SLB算法為Hash規(guī)則模式,并增加realserver1、2、3、4到group組中

#/cfg/slb/group 1

Real serve group 1#metric hash

Real serve group 1#add 1 2 3 4

(5)定義相應(yīng)的virtual server

#/cfg/slb/virt 1

Virtual server 1# vip 10.10.10.7

Virtual server 1# service http

Virtual Server 1 domain Service#group 1

Virtual Server 1 domain Service#../ena

(6)定義相應(yīng)的健康檢查策略

#/cfg/slb/group 1

Real server group 1#health tcp

(7)定義相應(yīng)的端口信息

#/cfg/slb/port 1

SLB port 1# client ena

SLB port 2# client ena

SLB port 3# server ena

SLB port 4# server ena

SLB port 5# server ena

SLB port 6# server ena

4 結(jié)束語

  目前各網(wǎng)絡(luò)運營商們已開始從單純組網(wǎng)接入服務(wù)向網(wǎng)上寬帶增值應(yīng)用的方向發(fā)展,這使得并發(fā)性問題在寬帶應(yīng)用中越來越重要。這里推出的這套解決方案,體現(xiàn)了后臺服務(wù)器集群化承載業(yè)務(wù)的思路,適合電信級服務(wù)質(zhì)量要求。在遼寧地區(qū)經(jīng)受過130多萬人次的高峰期并發(fā)訪問,總體性能表現(xiàn)穩(wěn)定。

參 考 文 獻(xiàn)

[1] 施伯樂等編著,數(shù)據(jù)庫系統(tǒng)教程,高等教育出版社,1999(2001重。

[2] 張金濤編著,基于Linux的Apache +Jsp+Oracle,清華大學(xué)出版社,2002.3

[3] 王軍等譯, JSP編程指南,Simon Brown等著,電子工業(yè)出版社,2002.10

[4] RonBen-Natan && Ori Sasson著,熊志輝譯,IBM Websphere Application Server實用大全,清華大學(xué)出版社,

2003年3月

[5] Sun公司,iPlanet Messaging Server Administrator's Guide,www.sun.com網(wǎng)站發(fā)布docs.sun.

com/source/816-6013-10

[6] 北電公司,ASW80 Application Guide,電子資料手冊

[7] F5 Networks公司,Technical&&Application Solutions,f5.coa.cn/adm/upload/UIE.pdf

[8] 王磊等譯, Oracle 8/8i 開發(fā)使用手冊, 機械工業(yè)出版社,2000年

張 凱,男,在遼寧省通信公司數(shù)據(jù)通信局從事數(shù)據(jù)業(yè)務(wù)的集成開發(fā)工作。

趙 剛,男,在遼寧省通信公司數(shù)據(jù)通信局工作,主要從事計算機軟件開發(fā)工作。

金 洋,男,在遼寧省通信公司數(shù)據(jù)通信局工作,主要從事網(wǎng)絡(luò)運行維護工作。

----《中國數(shù)據(jù)通信》


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點本月熱點

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息