一直在瞭解互連網的大資料高並發的架構,以及所採用的各種最佳化策略。
在建設初期,可以先從兩方面進行考慮:
一、資料庫設計策略。從資料庫的擴充性來說,是考慮資料可以方便的進行垂直劃分和水平劃分,即:
垂直切分(Vertical Partition/Sharding):就是把不同格式的資料,儲存到不同的資料庫,也叫分庫
水平切分(Horizontal Partition/Sharding):就是把相同的資料格式的資料,儲存到不同的資料庫,本文將側重這點進行講述,也叫分表
要理解和記憶這兩種切分方式,可以大腦回憶一下你的資料庫表,橫向是欄位說明,豎向是記錄資料,因此,垂直切分意味是要劃垂直的線將表的欄位分成幾塊,也即一張表分成N張不同欄位的表;水平切分意味著水平劃線,將資料記錄分成幾塊,各塊的資料欄位其實是一樣的,只是記錄數值不同。
1.考慮到後期資料量大的情況。在資料庫設計時就要考慮分庫,比如同樣是新聞資訊,就考慮為時政新聞、娛樂新聞
、體育新聞等等建立各自的新聞表,從而達到方便儲存的目的
2.考慮到中後期訪問量大的情況。設計時考慮分表,比如對娛樂新聞,可以根據日期,人物等欄位拆分成多種表來儲存,從而提高查詢的速率。
3、綜合上面2種情況,可以綜合使用。當資料量達千萬,並發量上萬的適合,考慮建立緩衝表。就是在實際表和使用者之間在搭建一個暫存資料表,訪問資料時,首先訪問暫存資料表,如果不存在,則進入實際表中擷取,然後放入緩衝表中,同時會通過後台線程,定時將緩衝表資料同步到實際資料庫中,同步時間可以針對系統要求來進行。
二、程式最佳化策略。搭建系統,需要認真考慮選擇合適架構,當然公司或者個人的時間能力精力都夠多的話,可以考慮自己開發系統架構。
1.架構建設
1).Structs2+Spring3+Hibernate3這3個架構搭建的系統每一年都在更新,不斷有變化和進步,這種搭配最適合構建公司資訊系統,而要應用於互連網大訪問量和高並發量的Web系統,還是比較吃力,需要進一步採取多種最佳化策略,如靜態化,快取資料,JS壓縮等等。
2).Spring MVC根據網上對當前熱門的幾個架構的測試資訊得出,Spring的controller還是比Structs的效率高一點,Spring的資料庫操作手段Jdbctemplate是對Java的JDBC的簡單封裝,操作SQL效率是肯定比Structs結合Hibernate效率高。
3).Spring+Hibernate該配合的架構訪問效率和開發效率都比較不錯,適合企業開發和互連網開發。
4).Spring+JPA(Hibernate)該配合架構效率在目前開看,效率非常不錯,最合適互連網應用,個人非常推薦。
2.靜態化。推薦使用的架構有freemaker和velocity。
3.資料緩衝。