java學習-如何用Java進行高性能網站開發(fā)
戶,主要用于低并發(fā)請求,大數(shù)據(jù)量傳輸?shù)膽谩?/span>
第二類:本機API,部分是Java的驅動程序。
第二類JDBC驅動程序是本機API的部分Java代碼的驅動程序,用于把JDBC調用轉換成主流數(shù)據(jù)庫API的本機調用。這類驅動程序也存在與第一類驅動程序一樣的性能問題,即客戶端載入二進制代碼的問題,而且它們被綁定了特定的平臺。
第二類驅動程序要求編寫面向特定平臺的代碼,主流的數(shù)據(jù)庫廠商,例如Oracle和IBM,都為它們的企業(yè)數(shù)據(jù)庫平臺提供了第二類驅動程序,使用這些驅動程序的開發(fā)者必須及時跟進不同數(shù)據(jù)庫廠商針對不同操作系統(tǒng)發(fā)行的各個驅動程序版本。
另外,由于第二類驅動程序沒有使用純Java的API,把Java應用連接到數(shù)據(jù)源時,往往必須執(zhí)行一些額外的配置工作。很多時候,第二類驅動程序不能在體系結構上與大型主機的數(shù)據(jù)源兼容;即使做到了兼容,效果也是比較差。
第一類和第二類驅動的比較
第一類和第二類驅動的比較
第三類:面向數(shù)據(jù)庫中間件的純Java驅動程序
第三類JDBC驅動程序是面向數(shù)據(jù)庫中間件的純Java驅動程序,JDBC調用被轉換成一種中間件廠商的協(xié)議,中間件再把這些調用轉換到數(shù)據(jù)庫API。第三類JDBC驅動程序的優(yōu)點是它以服務器為基礎,也就是不再需要客戶端的本機代碼,這使第三類驅動程序要比第一、二兩類快。另外,開發(fā)者還可以利用單一的驅動程序連接到多種數(shù)據(jù)庫。
第四類:直接面向數(shù)據(jù)庫的純Java驅動程序。
第四類JDBC驅動程序是直接面向數(shù)據(jù)庫的純Java驅動程序,即所謂的“瘦”(thin)驅動程序,它把JDBC調用轉換成某種直接可被DBMS使用的網絡協(xié)議,這樣,客戶機和應用服務器可以直接調用DBMS服務器。對于第四類驅動程序,不同DBMS的驅動程序不同。因此,在一個異構計算環(huán)境中,驅動程序的數(shù)量可能會比較多。但是,由于第四類驅動程序具有較高的性能,能夠直接訪問DBMS,所以這一問題就不那么突出了, 這種驅動方式,主要用于高并發(fā),低數(shù)據(jù)量請求的應用中。
第三類和第四類驅動的比較
第三類和第四類驅動的比較
為了提高訪問數(shù)據(jù)庫的性能,我們還可以使用JDBC 2.0的一些規(guī)范和特性,JDBC是占用資源的,在使用數(shù)據(jù)庫連接時可以使用連接池Connection Pooling,避免頻繁打開、關閉Connection。而我們知道,獲取Connection是比較消耗系統(tǒng)資源的。
Connection緩沖池:當一個應用程序關閉一個數(shù)據(jù)庫連接時,這個連接并不真正釋放而是被循環(huán)利用,建立連接是消耗較大的操作,循環(huán)利用連接可以顯著的提高性能,因為可以減少新連接的建立。
一個通過DataSource獲取緩沖池獲得連接,并連接到一個CustomerDB數(shù)據(jù)源的代碼演示如下:
Context ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("jdbc/CustomerDB");
Connection conn = dataSource.getConnection("password","username");
16、緩存DataSorce
一個DataSource對象代表一個實際的數(shù)據(jù)源。這個數(shù)據(jù)源可以是從關系數(shù)據(jù)庫到表格形式的文件,完全依賴于它是怎樣實現(xiàn)的,一個數(shù)據(jù)源對象注冊到JNDI名字服務后,應用程序就可以從JNDI服務器上取得該對象,并使用之和數(shù)據(jù)源建立連接。
通過上面的例子,我們知道DataSource是從連接池獲得連接的一種方式,通過JNDI方式獲得,是占用資源的。
為了避免再次的JNDI調用,可以系統(tǒng)中緩存要使用的DataSource。
及時關閉使用過的資源
互聯(lián)網應用系統(tǒng)一般是并發(fā)的系統(tǒng),在每次申請和使用完資源后,應該釋放供別人使用,使用完成后應該保證徹底的釋放。
17、架構選型
在網站Web應用開發(fā)中,系統(tǒng)的整體架構是決定網站性能、穩(wěn)定性、并發(fā)、可擴展性的關鍵因素。下面以世界著名網站應用軟件提供商CoreMediaCMS系統(tǒng)為例,進行架構分析
CoreMediaCMS將整個應用分成四成架構,每一層都可以獨立于其他層而正常運行,每一層都可以分布式布署,極大的提高了應用系統(tǒng)的穩(wěn)定性、可擴展性、支持高并發(fā)的要求,每一次之前通過中間件Corba進行穩(wěn)定的傳輸數(shù)據(jù)。
18、開發(fā)框架的選型
充分利用開源框架,可以大大提高開發(fā)效率。很多初級開發(fā)者,都采用DB+JavaBean+JSP這種初級的開發(fā)模式,而現(xiàn)在主要使用Struts、Spring等MVC開發(fā)框架。
常用開發(fā)框架構選型有:
Struts、Spring、Webwork等。
我們選擇的開發(fā)框架是:Spring+Hibernate+Spring MVC,在這個開發(fā)框架里,充分利用了Hibernate、Spring各自己的優(yōu)點,可以選擇Struts,也可以選擇Spring MVC。
如果想學習Java可以來這個群,首先是一二六,中間是五三四,最后是五一九,里面有大量的學習資料可以下載。
19、分級存儲
1)數(shù)據(jù)庫數(shù)據(jù)分級存儲:
將經常訪問的數(shù)據(jù)和訪問頻度低的數(shù)據(jù),分別存放到不同的分區(qū),甚至存放到不同的數(shù)據(jù)庫服務器,以便合進分配硬盤I/O及系統(tǒng)I/O。
2)網站內容發(fā)布之后,分級存儲:
任何一個大型的網站,一般都有海量的內容,為了提高訪問效率,應搭建分級存儲體系,根據(jù)應用的重要性和訪問并發(fā)要求,將這些內容分級存儲,同時將靜態(tài)內容中的靜態(tài)頁面文件、圖片文件、下載文件分不同的Web服務器訪問,降低I/O爭用,提高訪問效率,同時讓數(shù)據(jù)存儲、管理、備份更加清晰。
20、頁面靜態(tài)化
一個大型網站,既有靜態(tài)內容,也有動態(tài)內容。靜態(tài)內容,直接通過Apache或者Squid訪問,效率高,穩(wěn)定可靠,更多的是受服務器等硬件設備的I/O吞吐量、網絡環(huán)境及頁面代碼本身質量限制,不受應用系統(tǒng)及數(shù)據(jù)庫性能限制,這些內容往往訪問速度和效率不會有較大的問題。
而動態(tài)內容,除了受硬件設備I/O、操作系統(tǒng)I/O及內容、網絡環(huán)境及頁面代碼的影響,還要受應用服務器和數(shù)據(jù)庫性能影響,因此,這部份內容,要盡可能作靜態(tài)化或者偽靜態(tài),并采用緩存技術,將其緩存,以減少對應用服務器和數(shù)據(jù)庫服務器的操作次數(shù),提高用戶訪問效率和穩(wěn)定性。
21、緩存策略
對于構建的業(yè)務系統(tǒng),如果有些數(shù)據(jù)要經常要從數(shù)據(jù)庫中讀取,同時,這些數(shù)據(jù)又不經常變化,這些數(shù)據(jù)就可以在系統(tǒng)中緩存起來,使用時直接讀取緩存,而不用頻繁的訪問數(shù)據(jù)庫讀取數(shù)據(jù)。
緩存工作可以在系統(tǒng)初始化時一次性讀取數(shù)據(jù),特別是一些只讀的數(shù)據(jù),當數(shù)據(jù)更新時更新數(shù)據(jù)庫內容,同時更新緩存的數(shù)據(jù)值。
例如:在天極CMS2005系統(tǒng)中,我們將很少發(fā)生變化的網站節(jié)點樹數(shù)據(jù),緩存在客戶端,當用戶登錄時,一次性讀入到客戶端緩存起來,以后編輯在使用時,不用再從數(shù)據(jù)庫中讀取,大大提高了應用系統(tǒng)的訪問速度。
當然,也可以將數(shù)據(jù)庫中重復訪問的數(shù)據(jù)緩存在應用服務器內存中,減少對數(shù)據(jù)庫的訪問次數(shù),Java常用的緩存技術產品有:MemoryCache、OSCache等。

責任編輯:售電衡衡
-
權威發(fā)布 | 新能源汽車產業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網
-
新基建助推 數(shù)據(jù)中心建設將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網,電力新基建 -
泛在電力物聯(lián)網建設下看電網企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網 -
泛在電力物聯(lián)網建設典型實踐案例
2019-10-15泛在電力物聯(lián)網案例
-
新基建之充電樁“火”了 想進這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎設施,電力新基建 -
燃料電池汽車駛入尋常百姓家還要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調”充電樁配套節(jié)奏
-
權威發(fā)布 | 新能源汽車產業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網 -
5G新基建助力智能電網發(fā)展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市