亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 采訪分布式數據訪問層(Data Access Layer)

采訪分布式數據訪問層(Data Access Layer)
2010-01-14 23:28:50  作者:  來源:
分布式(Distributed)數據訪問層(Data Access Layer)(以下簡稱DAL)是綜合MySQL Proxy、Memcached、集群等等技術優點而構建的一個軟件系統。目的是為了解決在構建大中型網站時遇到的和數據訪問有關的諸多問題,如怎么使得切庫分表透明化,如何使得緩存存取清除自動化,怎樣才能更好地防止服務單點故障等等。DAL是手機之家團隊近幾年在開發和運營上的經驗的總結以及智慧的結晶。

許超前 是手機之家一位資深的開發者和架構師, JavaEye非常榮幸的采訪了他。

許超前博客:http://www.longker.org/

歡迎大家推薦更多開源項目和業界專家給我們,支持中國的IT發展,發站內短信給JavaEye管理員或者發信到webmaster@javaeye.com,謝謝。

采訪分布式數據訪問層(Data Access Layer)作者許超前(十四) Top

JavaEye:1.Hi,許超前,你好,非常榮幸能夠采訪你,首先你能夠向大家介紹一下分布式(Distributed)數據訪問層(Data Access Layer)嗎?

許超前:簡單說來,分布式數據訪問層(以下簡稱DAL)是綜合MySQL Proxy、Memcached、集群等等技術優點而構建的一個軟件系統。目的是為了解決在構建大中型網站時遇到的和數據訪問有關的諸多問題,如怎么使得切庫分表透明化,如何使得緩存存取清除自動化,怎樣才能更好地防止服務單點故障等等。后面,我會在我的博客上以及今年的SD2China大會上做進一步的說明,有興趣的可以留意。

JavaEye:2.分布式(Distributed)數據訪問層(Data Access Layer)是什么時候誕生的,能否介紹一下發展歷程?

許超前:DAL的產生是經歷一番波折的。

2007 年,手機之家的用戶已經接近1000萬、PV也到了500萬以上,正處于中小型網站向大型網站的過渡時期。那時候,我們明顯感覺到我們在技術上已經遇上了瓶頸:一個是系統負載過高,經常要擔心我們的數據庫是不是又掛了,進而造成整個系統的癱瘓;第二個是5年積累下來的代碼也已經非常難以維護,因為分層模糊,結果到處充滿著數據庫訪問邏輯、到處充滿著緩存讀寫邏輯,再加上表的設計不合理,造成無法簡單地進行水平伸縮?傊,我們的系統已經到了不得不進行改造的地步了。

后來,老高(手機之家創始人高春輝)組了一個研發團隊,旨在從根本上解決上述提到的問題。在此后一年的時間里,我們走了很多彎路,經歷了很多痛苦,不過,也正是在這段時間里,產生了DAL的雛形,經過若干次改進,變成了后來的DAL1.0。DAL的產生完全是形勢使然。。。到了那個時間、在那個地點、做了那件事。

DAL1.0上線后數據庫的QPS明顯下降,從幾千降到幾百。事實證明,我們找到了一條行得通的路子。所以才有DAL的后續版本的開發,才有今天的DAL2.x版本的產生。

JavaEye:3.能介紹一下手機之家網站和技術團隊嗎?

許超前:手機之家是一個旨在提供全方位的手機相關服務的資訊類網站。在7年的時間里,手機之家從無到有,已經發展成為極具人氣、最受關注的手機產品資訊網站。有點廣告的味道,不過說的都是事實,呵呵。

以下是今年3月份在Beta技術沙龍上提到的統計數據:
a. 1000w+用戶
b. 3000w+帖子
c. 1.1TB+附件
d. 780w+ Page View/每天
e. 5~10w在線用戶/15分

現在,用戶應該是1200萬了吧,其它的也有所變動。最近比較忙,沒再去關注。

手機之家現在有個技術部,負責網站的日常維護事宜;我們還有個項目組,負責整個系統的架構設計及新技術的研究和探索等等。

JavaEye:4.分布式(Distributed)數據訪問層(Data Access Layer)的主要特點是什么?能否簡要分析一下它實現的主要技術核心?

許超前:要說特點,摘抄一下我在博客里寫的關于新版DAL的項目目標,這些目標在DAL2.x里已經得到了相對較好的實現,我想這應該就是它最大的特點了吧:

一)可伸縮。
這里是指Scale Out.,即水平可伸縮。事實上,這點更應該是整個系統要考慮的目標了,而非DAL,DAL要考慮的是怎么更好地支持。舉例說,我們可以一個庫一個服務,甚至可以是一個表一個服務;庫、表拆分后,DAL應能路由查詢、合并結果,而不是讓應用程序去操心這些事。

二)高可用性。
1) 我們認為出錯失敗是很正常的,一臺機器倒下了,其它機器應繼續保持系統正常運作。容錯是很重要的一個要求。
2) 系統規模大了以后,很容易出現“異構“的情況,如原有模塊MySQL表引擎是MyISAM的,是不支持事務的,而新上的模塊又采用了InnoDB表引擎,在這種情況下,DAL應能對原有模塊進行優雅降級。
3)失敗恢復也是要考慮的,失敗后,需要把失敗前駐留在內存中的消息找回來。
4) 另外,DAL本身也在快速的迭代當中,升級是很經常的事,應能進行在線熱升級(不重啟原有服務)。

三)良好的性能。
對于根據Id來取記錄的查詢,在緩存命中的情況下,應該達到和Memcached不相上下的讀取速度。在緩存不命中的情況下,則應該充分利用分庫分表和并行計算的優勢,最大化地提高查詢的效率。對于修改型查詢,掛在上面的監聽器,不應該影響性能。

四)系統可監控。
資源占用情況,命中率如何,系統當前壓力怎樣等等,都應該是可知的。應該有報警機制,當壓力到達一個閥值以后,通知相關人員進行處理。還應該有詳細的錯誤日志,便于排查問題。

五)安全。
沒有SQL注入問題;避免或盡量減少分表和索引表之間的數據不一致問題等等。

六)易于編程。
需要設計一套簡單好用的API,便于應用程序的開發。API必須是自完備的,應用開發者不需要太費力就能記住的。
應用開發人員不再關心分庫分表問題,不再關心緩存問題, 特別是緩存清除問題。甚至不再關心后端的數據庫是MySQL,還是Oracle,或者是其它。

七)可定制、可擴展、可維護的架構設計。
像連接池組件、緩存組件、查詢分析組件、消息隊列組件、通訊協議等等不應該寫死,應設計成可方便定制的。還應該提供足夠的鉤子用于擴展。只有這樣,DAL 的架構才是靈活的、擁抱變化的。簡單說,我們定的是機制,提供的是策略;機制是軟件目標和宗旨的體現,一般是不能輕易改變的,而策略則應當是能比較簡單地進行切換的。

這里面,每一點都可以說說,還是在以后的博客里,再來詳細和大家討論吧。


JavaEye:5.分布式(Distributed)數據訪問層(Data Access Layer)應用的主要場景是什么?能否詳細比較一下分布式(Distributed)數據訪問層(Data Access Layer)和類似產品比如hibernate的區別嗎?

許超前:DAL比較適用于大中型網站,對于想提高系統負載能力及響應速度的小型網站也是適用的,但可能獲得的好處不如大中型網站那么明顯。

DAL和Hibernate兩者不具有可比性,從出發點來看就不同,DAL一開始是為了提高網站的負載能力,而Hibernate則是為了能更快地開發Java應用。手機之家采用混合編程,上層應用不一定是用Java寫的,要讓(非Java)程序員對每個模塊涉及到的表結構都用Java實體類寫一遍,不太現實。相反,我們采取了不同的思考方式,我們的程序員面向的是表和記錄,而不是實體類和實體對象。雖然,DAL也有Mapping的概念,但是它的Mapping是指邏輯表到物理表的Mapping,而不是Java對象到數據庫模式的Mapping。DAL的邏輯表可能對應著多個物理表,程序員看到的是邏輯表,不用關心后面有多少個物理表。

MySQL Proxy也提供了一些類似的特性,DAL與它的第一個不同在于,我們的緩存處理是內置的,我們從設計之初就特別認真地考慮緩存這塊,而MySQL Proxy得自己寫Lua腳本。第二個不同在于,我們針對的不僅僅是MySQL這一種數據庫。而且,我們還有很多其它的事情要做。

另外,國內還有一個開源項目叫Amoeba。Amoeba關注的領域是切分,在這個領域,Amoeba對概念的抽象還是不錯的。DAL更像是一個完整的系統,當然,也可以只用DAL來做切分,其它的邏輯自己編寫,想擁有哪些特性都是可配置的。這樣設計一個是為了易用,一拿來就能用,另一個是為了能更好的和現有的解決方案(如Hibernate)集成,雖然DAL在很多方面都可以取代它們(如Hibernate)。

最后,我相信,肯定還存在很多類似的解決方案,只是我們不曾得知。或許是過于定制化了,或許是還不夠成熟。。。

JavaEye:6.目前大概有多少用戶在使用分布式(Distributed)數據訪問層(Data Access Layer)?

許超前:目前DAL主要用在手機之家網站上面,當然,還有其它的項目也在用。

JavaEye:7.目前分布式(Distributed)數據訪問層(Data Access Layer) 開發的技術難點是哪里?

許超前:要說技術難點,我覺得有以下幾點:

一)如何降低CPU負載及減少內存占用。

二)如何提高查詢條件的分析速度。

三)如何更有效地路由到相應的庫和表上。

四)如何提高緩存的命中率。

五)如何更有效的進行數據復制。


JavaEye:8.你每周大概花多少時間在分布式(Distributed)數據訪問層(Data Access Layer)項目上面?

許超前:每周大概80個小時左右。

JavaEye:9.開發分布式(Distributed)數據訪問層(Data Access Layer)帶給你最大的收獲是什么?

許超前:一)貴在堅持。一個長開發周期的軟件,到了后面,不僅是對開發人員體力、智力的綜合考驗,更是對開發人員心理承受能力的考驗,因為這時會有來自各方的及自發的壓力。如果能堅持下去,扛過這一關,事情往往就成了一半。

二)找一些和你有共同目標的人一塊共事。否則會耗費大量的溝通成本。

三)用數據說話。事務都在變化當中,幾年前的經驗,也許到今天就不靈了。而且很多事情并不是像我們想象得那樣去發展。

四)中國不打折。

JavaEye:10.開發分布式(Distributed)數據訪問層(Data Access Layer)的roadmap是什么?近期遠期的開發計劃計劃是什么?

許超前:接下來的版本要做的事有這幾個方面:

一)更多的協議開發,這樣才能作為透明代理使用,比如我們的PMA也可以使用了。

二)數據庫廠商中立的數據復制。

三)嵌入式API,考慮和Spring、Guice等集成,方便Java應用開發人員的使用。


JavaEye:11.你的開發環境是什么? 使用什么操作系統,和IDE?

許超前:一直用Linux操作系統,現在是Ubuntu,IDE用Eclipse。

JavaEye:12.開發分布式(Distributed)數據訪問層(Data Access Layer)項目是如何推廣的?未來有什么推廣方面的計劃嗎?

許超前:DAL目前只在內部項目中使用。等足夠成熟了,我們會采取一系列辦法進行推廣的。


JavaEye:13.通過開發開發分布式(Distributed)數據訪問層(Data Access Layer)項目 ,你對中國的開源軟件現狀有什么看法?對國內軟件開發人員做開源項目有什么感受和想法嗎?

許超前:我們的IT行業起步晚,開源文化還不夠深入人心,再加上我們中的大部份人還在為生計發愁,所以對開源事業上心的人還是少數。因此,和歐美發達國家比起來,我們的開源事業相對滯后。
我由衷地敬佩那些做開源項目的開發人員,如果可能,我也希望多做些開源軟件和大家一塊分享。


JavaEye:14.作為一個JavaEye的會員,你對JavaEye網站有什么建議和意見嗎?

許超前:想辦法讓老人多發言,同時也給新人提供一個學習成長的地方。比如可以弄個師徒頻道(有點SNS的味道),老人可以招學徒,新人可以拜師傅。

 

 


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
国产老熟妇精品观看| 美女精品视频一区| 久久精品视频亚洲| 自拍另类欧美| 日韩免费av一区二区三区| 日韩精品 欧美| 国产精品亚洲自拍| 91精品国产91| 国产精品传媒毛片三区| 国产成人avxxxxx在线看| 国产精品高潮呻吟久久av无限 | 亚洲一区二区三区视频| 国内一区在线| 色噜噜久久综合伊人一本| 亚洲欧洲精品一区二区| 国产一区二区高清视频| 国产精品视频免费在线观看| 日韩欧美亚洲精品| 国产精成人品localhost| 久久久久久高潮国产精品视| 精品一区久久久久久| 九色综合日本| 日韩中文在线字幕| 97人人模人人爽人人喊38tv| 欧美激情在线有限公司| 国产一区二区在线网站| 国产精品污www一区二区三区| 日韩免费在线视频| 国产成人av一区二区三区| 午夜精品理论片| 91久久精品一区二区别| 亚洲国产精品一区二区第四页av | 91精品综合久久| 一区二区三区国产福利| 国产九区一区在线| 欧美精品性视频| 国产日韩视频在线观看| 国产精品第二页| 国产一区二区在线播放| 国产精品国产对白熟妇| 国产在线精品日韩| 精品国产二区在线| 国产日韩av高清| 欧美激情亚洲国产| 波多野结衣综合网| 午夜老司机精品| 国产高清精品一区二区三区| 日韩国产精品一区二区| 久久久久久中文字幕| 日本不卡一区二区三区四区| 久久久久九九九| 天堂av一区二区| 久久琪琪电影院| 日韩视频在线播放| 九色自拍视频在线观看| 欧美亚洲激情视频| 国产精品美腿一区在线看 | 精品欧美日韩在线| 国产精品久久久久久久久久ktv| 国产一区二区在线免费| 一区二区三区四区久久| 91精品国产自产91精品| 亚洲国产精品久久久久爰色欲 | 91久久精品在线| 日本亚洲欧美三级| 久久久久久久久久久久久久久久av | 日韩欧美在线一区二区| 色偷偷av一区二区三区| 今天免费高清在线观看国语| 欧美激情中文网| 国产成年人在线观看| 韩国欧美亚洲国产| 九九久久国产精品| 91精品国产亚洲| 欧美久久久久久一卡四| 久久99亚洲热视| 久久人人爽爽人人爽人人片av| 青青青在线视频播放| 麻豆一区二区在线观看| 久久久免费观看| 日韩精品福利片午夜免费观看| 国产精品久久成人免费观看| 国产精品亚洲美女av网站| 天堂а√在线中文在线| 国产精品久久久久久久久久久久冷 | 亚洲日本无吗高清不卡| 九一国产精品视频| 欧美日韩国产高清视频| 国产99视频精品免视看7| 日韩一中文字幕| 国产精品自拍偷拍| 日本精品一区二区三区高清 久久| 国产精品美女www爽爽爽视频| av资源站久久亚洲| 秋霞久久久久久一区二区| 国产999精品视频| 深夜福利日韩在线看| 成人黄色av网站| 欧美精品一区二区三区四区五区 | 国产精品久久国产| 国产精品99久久久久久白浆小说| 日韩欧美一区二区三区四区| 久久av在线播放| 国产成人精品久久二区二区| 国产免费一区二区三区视频 | 国产麻豆日韩| 青青在线视频免费| 亚洲欧洲精品在线观看| 国产精品久久久久久久久免费看| 91久久久亚洲精品| 美媛馆国产精品一区二区| 日本精品久久久久中文字幕| 一区二区三区四区在线视频| 国产精品美女无圣光视频| 久久综合久久综合这里只有精品| 国产午夜精品在线| 欧美在线观看网址综合| 日韩一区二区高清视频| 九九九久久国产免费| 国产精品久久久久久久免费大片| 久久久久久久网站| 久久视频这里有精品| 99热在线国产| 国产剧情久久久久久| 日韩电影天堂视频一区二区| 美女久久久久久久| 国产精品裸体瑜伽视频| 色偷偷噜噜噜亚洲男人| 久久久免费观看视频| 99中文视频在线| 福利视频久久| 国产精品一区二区免费看| 免费看日b视频| 加勒比成人在线| 精品欧美国产| 欧美 国产 日本| 欧美成人一区二区在线| 日韩女优在线播放| 日本在线观看一区| 亚洲欧美综合一区| 一本—道久久a久久精品蜜桃| 精品久久久久久无码中文野结衣| 国产精品成人品| 麻豆国产精品va在线观看不卡| 国产精品久久久久久久av大片| 国产精品视频免费在线观看| www高清在线视频日韩欧美| 久久久伊人欧美| 国产伦精品一区二区三区精品视频 | 日本在线观看一区| 欧美一级片免费在线| 色综合久久久久无码专区| 色阁综合av| 日本久久中文字幕| 日本一道本久久| 热99精品只有里视频精品| 日本一区二区三区免费看| 日韩欧美精品在线不卡| 青青青在线播放| 男人的天堂99| 精品婷婷色一区二区三区蜜桃| 国产一区二区三区av在线| 成人免费观看视频在线观看| 91精品久久久久久蜜桃| 97热精品视频官网| 国产成人高清激情视频在线观看| 久久久久久久免费视频| 北条麻妃一区二区三区中文字幕| 久久精品国产亚洲一区二区| 国产精品视频26uuu| 国产精品久久久久久久久粉嫩av| 精品不卡一区二区三区| 欧美精品xxx| 亚洲 日韩 国产第一| 亚洲国产精品久久久久爰色欲| 亚洲精品中文字幕在线| 欧美日韩精品中文字幕一区二区| 国产一区在线观| 久久综合精品一区| 国产精品爽爽ⅴa在线观看| 亚洲影院在线看| 激情视频在线观看一区二区三区| 91传媒免费视频| 欧美精品一区二区三区国产精品| 日本a级片在线播放| 国产精品一区二区三区在线| 精品国产拍在线观看| 亚洲欧洲在线一区| 国模吧一区二区| 日韩有码在线视频| 亚洲国产精品一区在线观看不卡| 黄色一级片av| 日韩一区二区福利| 亚洲国产精品久久久久婷婷老年 | 伊人色综合久久天天五月婷| 国内精品久久久久久影视8 | 国产精品久久久久久久久久尿| 日韩国产欧美亚洲| 91免费版看片| 影音先锋欧美在线|