安徽新华电脑专修学院_安徽电脑培训_安徽电脑培训学校_合肥电脑培训

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 采訪分布式數據訪問層(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的味道),老人可以招學徒,新人可以拜師傅。

 

 


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 液晶拼接屏_三星46寸/55寸/LG液晶拼接屏_深圳拼接墙厂家_电视大屏幕液晶拼接_高清工业级液晶监视器 | 声测管厂家_注浆管现货_桩基声测管_河北沧州新迈实业有限公司 | 监控工程,安防监控公司,北京监控安装,北京安装监控,安装摄像头,北京监控维保,监控施工,北京监控维修,监控弱电工程,监控器安装,监控维护保养,监控工程设计,北京监控设备维修,监控报警安装,北京北方合力科技有限公司 | 太原石膏基自流平,太原轻质抹灰石膏,太原腻子粉,太原抗裂砂浆-太原乔贝建筑材料有限公司 | 长沙物流公司|湖南货物运输公司|长沙第三方物流公司-国联物流 湖南第三方物流专家 | 液体灌装机-酱料灌装机-全自动灌装机-旋盖机-铝箔封口机-贴标机厂家-迈特威自动化设备(天津)有限公司" | 菏泽博捷电梯有限公司-菏泽博捷电梯有限公司 | 青岛相控阵检测_无损探伤检测机构_相控阵超声检测公司-青岛发现检验技术咨询 | 企业微信注册_CRM客户管理系统_SCRM解决方案_私域流量运营_腾讯企点服务_企业QQ-腾辉网络 | 纸箱抗压测定仪|电脑测控耐破度仪|电脑抗张试验仪|杭州华翰仪器百科 | 轮转印刷机_商标印唛机_超声波切唛机_瑞安市明辉机械有限公司 | 企业资质认证-上海翼弘企业咨询管理有限公司| 小耳朵电源_安防监控电源|小耳朵官网|电源适配器|摄像机电源|开关电源|小耳朵监控电源 | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 微机保护装置_发电机保护_变压器保护_逆功率保护_防孤岛保护装置_光伏发电_杭州继保电气集团有限公司 | 青岛相控阵检测_无损探伤检测机构_相控阵超声检测公司-青岛发现检验技术咨询 | 混凝土修补-清水混凝土保护剂-仿清水混凝土-混凝土装修-混凝土色差处理-混凝土色差修复剂-德州唐荣建筑装饰工程有限公司 | 河南反渗透设备,河南纯净水设备,河南软化水设备,郑州EDI超纯水设备,郑州水处理设备厂家_河南江宇环保科技有限公司 | 金华美凡文化传媒有限公司| 消防排烟风机|防火阀|斜流风机|江苏恒恒暖通设备有限公司 | 青岛相控阵检测_无损探伤检测机构_相控阵超声检测公司-青岛发现检验技术咨询 | 上海新航道学校官网_20年专注雅思_托福_SAT_ACT等出国语言培训机构. | 欧氏运动木地板,体育木地板厂家,篮球木地板价格_欧氏体育木地板 欧派板材官网 | 全屋定制板材 专业供应商 | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 无锡紫苹果装饰首页-高端别墅装修设计,专业别墅装饰公司 | 全国家博会_2025家博会时间表_家博会门票_免费索票入口 | 液体粉末包装机_颗粒粉剂自动包装机-上海巧慈自动化设备有限公司 | 西安木包装箱出口托盘定做价格-抽真空实木包装箱免熏蒸木箱多层板木箱哪家好-模压托盘及白松原木-西安宇森木业 | 烧碱-工业片碱-火碱价格-氢氧化钠厂家-巩义市宝莱新材料厂 | 网带输送机_皮带_滚筒_链板输送机_不锈钢输送链条生产厂家-宁津县鸿昶机械设备有限公司 | 气体泄漏检测仪,COD水质分析仪,RD8200管线探测仪-成都恒通兴业科技有限责任公司 | 吉林省创智汇成包装有限公司,长春高档礼盒,长春包装盒厂家,长春精品包装盒 | 天津网站制作|网站建设|营销型网站建设|筑美网络---天津做网站公司 | 山东宝沣新材料有限公司| 螺带混合机|卧式螺带混合机|双动力混合机-无锡鑫海干燥粉体设备有限公司 | 无源电子锁_五防锁_机柜锁_物联网锁_智能锁控管理-Vanma | 康拓威技术(深圳)有限公司|Theia镜头代理商|安讯士AXIS摄像机|安讯士监控系统|博世BOSCH监控|博世会议系统|索尼SONY监控|松下PANASONIC监控|三星韩华SAMSUNG监控|霍尼韦尔Honeywell|海康|大华|华为监控|Theia无畸变镜头|AXIS监控|安讯视摄像机 | 乌鲁木齐万疆通管道设备有限公司 销售热线;13565955557-新疆 乌鲁木齐 万疆通 管道设备 波纹补偿器 膨胀节 金属软管 伸缩器 管件 阀门 维修 | 金属网帘|金属帘|装饰网帘|金属环网|金属幕墙网|金属垂帘|金属扣帘-安平县名图金属丝网制品有限公司 | 液压尾管悬挂器,机械式尾管悬挂器价格,石油套管扶正器厂家,连续油管悬挂器,高压双塞水泥头,免钻塞注水泥分级箍,单塞套管水泥头价格,弹性套管扶正器,铸铝钢性扶正器,钢性套管扶正器厂家 | 重庆监控-监控系统-大型弱电工程-重庆万建电子工程有限责任公司是智能化一级工程公司 |