java學(xué)習(xí)-如何用Java進(jìn)行高性能網(wǎng)站開發(fā)
戶,主要用于低并發(fā)請(qǐng)求,大數(shù)據(jù)量傳輸?shù)膽?yīng)用。
第二類:本機(jī)API,部分是Java的驅(qū)動(dòng)程序。
第二類JDBC驅(qū)動(dòng)程序是本機(jī)API的部分Java代碼的驅(qū)動(dòng)程序,用于把JDBC調(diào)用轉(zhuǎn)換成主流數(shù)據(jù)庫API的本機(jī)調(diào)用。這類驅(qū)動(dòng)程序也存在與第一類驅(qū)動(dòng)程序一樣的性能問題,即客戶端載入二進(jìn)制代碼的問題,而且它們被綁定了特定的平臺(tái)。
第二類驅(qū)動(dòng)程序要求編寫面向特定平臺(tái)的代碼,主流的數(shù)據(jù)庫廠商,例如Oracle和IBM,都為它們的企業(yè)數(shù)據(jù)庫平臺(tái)提供了第二類驅(qū)動(dòng)程序,使用這些驅(qū)動(dòng)程序的開發(fā)者必須及時(shí)跟進(jìn)不同數(shù)據(jù)庫廠商針對(duì)不同操作系統(tǒng)發(fā)行的各個(gè)驅(qū)動(dòng)程序版本。
另外,由于第二類驅(qū)動(dòng)程序沒有使用純Java的API,把Java應(yīng)用連接到數(shù)據(jù)源時(shí),往往必須執(zhí)行一些額外的配置工作。很多時(shí)候,第二類驅(qū)動(dòng)程序不能在體系結(jié)構(gòu)上與大型主機(jī)的數(shù)據(jù)源兼容;即使做到了兼容,效果也是比較差。
第一類和第二類驅(qū)動(dòng)的比較
第一類和第二類驅(qū)動(dòng)的比較
第三類:面向數(shù)據(jù)庫中間件的純Java驅(qū)動(dòng)程序
第三類JDBC驅(qū)動(dòng)程序是面向數(shù)據(jù)庫中間件的純Java驅(qū)動(dòng)程序,JDBC調(diào)用被轉(zhuǎn)換成一種中間件廠商的協(xié)議,中間件再把這些調(diào)用轉(zhuǎn)換到數(shù)據(jù)庫API。第三類JDBC驅(qū)動(dòng)程序的優(yōu)點(diǎn)是它以服務(wù)器為基礎(chǔ),也就是不再需要客戶端的本機(jī)代碼,這使第三類驅(qū)動(dòng)程序要比第一、二兩類快。另外,開發(fā)者還可以利用單一的驅(qū)動(dòng)程序連接到多種數(shù)據(jù)庫。
第四類:直接面向數(shù)據(jù)庫的純Java驅(qū)動(dòng)程序。
第四類JDBC驅(qū)動(dòng)程序是直接面向數(shù)據(jù)庫的純Java驅(qū)動(dòng)程序,即所謂的“瘦”(thin)驅(qū)動(dòng)程序,它把JDBC調(diào)用轉(zhuǎn)換成某種直接可被DBMS使用的網(wǎng)絡(luò)協(xié)議,這樣,客戶機(jī)和應(yīng)用服務(wù)器可以直接調(diào)用DBMS服務(wù)器。對(duì)于第四類驅(qū)動(dòng)程序,不同DBMS的驅(qū)動(dòng)程序不同。因此,在一個(gè)異構(gòu)計(jì)算環(huán)境中,驅(qū)動(dòng)程序的數(shù)量可能會(huì)比較多。但是,由于第四類驅(qū)動(dòng)程序具有較高的性能,能夠直接訪問DBMS,所以這一問題就不那么突出了, 這種驅(qū)動(dòng)方式,主要用于高并發(fā),低數(shù)據(jù)量請(qǐng)求的應(yīng)用中。
第三類和第四類驅(qū)動(dòng)的比較
第三類和第四類驅(qū)動(dòng)的比較
為了提高訪問數(shù)據(jù)庫的性能,我們還可以使用JDBC 2.0的一些規(guī)范和特性,JDBC是占用資源的,在使用數(shù)據(jù)庫連接時(shí)可以使用連接池Connection Pooling,避免頻繁打開、關(guān)閉Connection。而我們知道,獲取Connection是比較消耗系統(tǒng)資源的。
Connection緩沖池:當(dāng)一個(gè)應(yīng)用程序關(guān)閉一個(gè)數(shù)據(jù)庫連接時(shí),這個(gè)連接并不真正釋放而是被循環(huán)利用,建立連接是消耗較大的操作,循環(huán)利用連接可以顯著的提高性能,因?yàn)榭梢詼p少新連接的建立。
一個(gè)通過DataSource獲取緩沖池獲得連接,并連接到一個(gè)CustomerDB數(shù)據(jù)源的代碼演示如下:
Context ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("jdbc/CustomerDB");
Connection conn = dataSource.getConnection("password","username");
16、緩存DataSorce
一個(gè)DataSource對(duì)象代表一個(gè)實(shí)際的數(shù)據(jù)源。這個(gè)數(shù)據(jù)源可以是從關(guān)系數(shù)據(jù)庫到表格形式的文件,完全依賴于它是怎樣實(shí)現(xiàn)的,一個(gè)數(shù)據(jù)源對(duì)象注冊(cè)到JNDI名字服務(wù)后,應(yīng)用程序就可以從JNDI服務(wù)器上取得該對(duì)象,并使用之和數(shù)據(jù)源建立連接。
通過上面的例子,我們知道DataSource是從連接池獲得連接的一種方式,通過JNDI方式獲得,是占用資源的。
為了避免再次的JNDI調(diào)用,可以系統(tǒng)中緩存要使用的DataSource。
及時(shí)關(guān)閉使用過的資源
互聯(lián)網(wǎng)應(yīng)用系統(tǒng)一般是并發(fā)的系統(tǒng),在每次申請(qǐng)和使用完資源后,應(yīng)該釋放供別人使用,使用完成后應(yīng)該保證徹底的釋放。
17、架構(gòu)選型
在網(wǎng)站W(wǎng)eb應(yīng)用開發(fā)中,系統(tǒng)的整體架構(gòu)是決定網(wǎng)站性能、穩(wěn)定性、并發(fā)、可擴(kuò)展性的關(guān)鍵因素。下面以世界著名網(wǎng)站應(yīng)用軟件提供商CoreMediaCMS系統(tǒng)為例,進(jìn)行架構(gòu)分析
CoreMediaCMS將整個(gè)應(yīng)用分成四成架構(gòu),每一層都可以獨(dú)立于其他層而正常運(yùn)行,每一層都可以分布式布署,極大的提高了應(yīng)用系統(tǒng)的穩(wěn)定性、可擴(kuò)展性、支持高并發(fā)的要求,每一次之前通過中間件Corba進(jìn)行穩(wěn)定的傳輸數(shù)據(jù)。
18、開發(fā)框架的選型
充分利用開源框架,可以大大提高開發(fā)效率。很多初級(jí)開發(fā)者,都采用DB+JavaBean+JSP這種初級(jí)的開發(fā)模式,而現(xiàn)在主要使用Struts、Spring等MVC開發(fā)框架。
常用開發(fā)框架構(gòu)選型有:
Struts、Spring、Webwork等。
我們選擇的開發(fā)框架是:Spring+Hibernate+Spring MVC,在這個(gè)開發(fā)框架里,充分利用了Hibernate、Spring各自己的優(yōu)點(diǎn),可以選擇Struts,也可以選擇Spring MVC。
如果想學(xué)習(xí)Java可以來這個(gè)群,首先是一二六,中間是五三四,最后是五一九,里面有大量的學(xué)習(xí)資料可以下載。
19、分級(jí)存儲(chǔ)
1)數(shù)據(jù)庫數(shù)據(jù)分級(jí)存儲(chǔ):
將經(jīng)常訪問的數(shù)據(jù)和訪問頻度低的數(shù)據(jù),分別存放到不同的分區(qū),甚至存放到不同的數(shù)據(jù)庫服務(wù)器,以便合進(jìn)分配硬盤I/O及系統(tǒng)I/O。
2)網(wǎng)站內(nèi)容發(fā)布之后,分級(jí)存儲(chǔ):
任何一個(gè)大型的網(wǎng)站,一般都有海量的內(nèi)容,為了提高訪問效率,應(yīng)搭建分級(jí)存儲(chǔ)體系,根據(jù)應(yīng)用的重要性和訪問并發(fā)要求,將這些內(nèi)容分級(jí)存儲(chǔ),同時(shí)將靜態(tài)內(nèi)容中的靜態(tài)頁面文件、圖片文件、下載文件分不同的Web服務(wù)器訪問,降低I/O爭用,提高訪問效率,同時(shí)讓數(shù)據(jù)存儲(chǔ)、管理、備份更加清晰。
20、頁面靜態(tài)化
一個(gè)大型網(wǎng)站,既有靜態(tài)內(nèi)容,也有動(dòng)態(tài)內(nèi)容。靜態(tài)內(nèi)容,直接通過Apache或者Squid訪問,效率高,穩(wěn)定可靠,更多的是受服務(wù)器等硬件設(shè)備的I/O吞吐量、網(wǎng)絡(luò)環(huán)境及頁面代碼本身質(zhì)量限制,不受應(yīng)用系統(tǒng)及數(shù)據(jù)庫性能限制,這些內(nèi)容往往訪問速度和效率不會(huì)有較大的問題。
而動(dòng)態(tài)內(nèi)容,除了受硬件設(shè)備I/O、操作系統(tǒng)I/O及內(nèi)容、網(wǎng)絡(luò)環(huán)境及頁面代碼的影響,還要受應(yīng)用服務(wù)器和數(shù)據(jù)庫性能影響,因此,這部份內(nèi)容,要盡可能作靜態(tài)化或者偽靜態(tài),并采用緩存技術(shù),將其緩存,以減少對(duì)應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的操作次數(shù),提高用戶訪問效率和穩(wěn)定性。
21、緩存策略
對(duì)于構(gòu)建的業(yè)務(wù)系統(tǒng),如果有些數(shù)據(jù)要經(jīng)常要從數(shù)據(jù)庫中讀取,同時(shí),這些數(shù)據(jù)又不經(jīng)常變化,這些數(shù)據(jù)就可以在系統(tǒng)中緩存起來,使用時(shí)直接讀取緩存,而不用頻繁的訪問數(shù)據(jù)庫讀取數(shù)據(jù)。
緩存工作可以在系統(tǒng)初始化時(shí)一次性讀取數(shù)據(jù),特別是一些只讀的數(shù)據(jù),當(dāng)數(shù)據(jù)更新時(shí)更新數(shù)據(jù)庫內(nèi)容,同時(shí)更新緩存的數(shù)據(jù)值。
例如:在天極CMS2005系統(tǒng)中,我們將很少發(fā)生變化的網(wǎng)站節(jié)點(diǎn)樹數(shù)據(jù),緩存在客戶端,當(dāng)用戶登錄時(shí),一次性讀入到客戶端緩存起來,以后編輯在使用時(shí),不用再從數(shù)據(jù)庫中讀取,大大提高了應(yīng)用系統(tǒng)的訪問速度。
當(dāng)然,也可以將數(shù)據(jù)庫中重復(fù)訪問的數(shù)據(jù)緩存在應(yīng)用服務(wù)器內(nèi)存中,減少對(duì)數(shù)據(jù)庫的訪問次數(shù),Java常用的緩存技術(shù)產(chǎn)品有:MemoryCache、OSCache等。
責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實(shí)踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個(gè)行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動(dòng)化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲(chǔ)能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市
-
山西省首座電力與通信共享電力鐵塔試點(diǎn)成功
-
中國電建公司公共資源交易服務(wù)平臺(tái)摘得電力創(chuàng)新大獎(jiǎng)
-
電力系統(tǒng)對(duì)UPS的技術(shù)要求