【編者按】互聯(lián)網從誕生到現(xiàn)在,網站的規(guī)模不斷擴大,存儲和處理的數(shù)據量也遠遠超出了人們的想象,又隨著對信息實時性、多媒體需求大幅增長的現(xiàn)象,互聯(lián)網架構面臨越來越大的挑戰(zhàn)。CSDN致力于解決這一問題,在剛剛結束的 SDCC 2015中國軟件開發(fā)者大會上,特舉辦了架構專場(上午報報道、下午報道),以及《程序員》電子刊10月B開設了架構專題。在接下來也將繼續(xù)深耕架構師、服務于開發(fā)者,推出更多的大牛訪談、知名互聯(lián)網公司架構實踐、技術公開課等,敬請期待。
日前,筆者采訪了當當網架構師、當當技術委員會成員張亮,在本次采訪中他主要分享了對架構師的理解,以及重點解讀了分布式作業(yè)調度框架Elastic-job是什么、架構設計思路、具體模塊的底層及如何實現(xiàn)等。
張亮對架構設計、消息中間件、分布式等領域興趣濃厚。目前主導當當應用框架ddframe研發(fā)和推廣以及技術白皮書撰寫。其中ddframe的分布式作業(yè)部分elastic-job已經正式開源。
CSDN:請簡單介紹下您和目前的工作,以及說說您自己曾經的計算機經歷?
張亮:我目前在當當架構部任職,主要的工作是ddframe的設計、開發(fā)和推廣;技術白皮書撰寫;重點項目的跟進支持,如:TMS,WMS重構;還有一些零散的技術調研工作,如,消息中間件,日志中心,圖數(shù)據庫等。
職業(yè)生涯初期我在外企工作。外企對技術人員要求更多的是設計,規(guī)范和對業(yè)務的理解能力。一般外企都有成型的技術組織架構,相對較重。流程規(guī)范但缺乏靈活性,對新技術使用非常謹慎。我本人更喜歡技術本身,所以于三年前加入互聯(lián)網行業(yè)。在我看來,靈活性、高性能、輕量級、分布式、高可用是互聯(lián)網企業(yè)更關注的東西。
CSDN:當當有自己架構部,并設有架構師一職,作為其中的一員,能夠談談什么是架構?什么是架構師?
張亮:架構種類很多,從公司宏觀看,可分為業(yè)務架構,數(shù)據架構,技術架構,運維架構;微觀看,每個系統(tǒng)都會有自己的應用架構。既然架構的種類很多,那么架構師的種類就更多,共同點是架構師一般都會以更高的視點關注一些通用的東西,或者在從無到有的演進中規(guī)劃合理的藍圖。
CSDN:架構師的工作是什么?又該有著怎樣的素養(yǎng)?
張亮:架構師的主要工作是提供面向抽象的較高層級解決方案,而非面向具體業(yè)務,對細節(jié)點進行處理。拿我們公司舉例,主要是劃分系統(tǒng)邊界,設計系統(tǒng)交互路徑,規(guī)劃底層框架,規(guī)范開發(fā)流程等。
架構師對素質的要求比較均衡,不能有短板。前瞻性和領悟力,將決定系統(tǒng)是否符合潮流,便于演進。如何時實行SOA,何時推進微服務等;對業(yè)務的理解將決定系統(tǒng)能否貼近公司實情;對技術的理解力和闡述力將直接影響系統(tǒng)的設計;協(xié)調力和溝通力將影響系統(tǒng)的開發(fā)和實施,畢竟任何系統(tǒng)都不能由個人完成。
CSDN:當當在今年9月份開源了分布式作業(yè)調度框架elastic-job,能夠簡單介紹下它是什么、來歷、架構設計思路等?和ddframe是怎樣的關系?以及該項目的團隊情況?
張亮:elastic-job原本是當當java應用框架ddframe的一部分,本名dd-job。ddframe包括編碼規(guī)范,開發(fā)框架,技術規(guī)范,監(jiān)控以及分布式組件。ddframe規(guī)劃分為4個演進階段,目前處于第2階段。3、4階段涉及的技術組件不代表當當沒有使用,只是ddframe還未統(tǒng)一規(guī)劃。
ddframe由各種模塊組成,均已dd-開頭,如dd-container、dd-soa、dd-rdb、dd-job等。當當希望將ddframe的各個模塊與公司環(huán)境解耦并開源以反饋社區(qū)。之前開源的Dubbo擴展版本DubboX即是dd-soa的核心模塊。而本次介紹的elastic-job則是dd-job的開源部分,其中監(jiān)控(但開源了監(jiān)控方法)和ddframe核心接入等部分并未開源。
elastic-job主要的設計理念是無中心化的分布式定時調度框架,思路來源于Quartz的基于數(shù)據庫的高可用方案。但數(shù)據庫畢竟沒有分布式協(xié)調功能,所以在高可用方案的基礎上增加了彈性擴容和數(shù)據分片的思路,以便于更大限度的利用分布式服務器的資源。
團隊目前由3個部分組成,第一部分是開發(fā)團隊,由架構部的架構師曹昊、高洪濤和我組成,主要負責設計和編碼;第二部分是來自于各個研發(fā)團隊的應用架構師、開發(fā)工程師和架構部總監(jiān)史海峰,他們負責推廣落地,整理需求并貢獻當當已經存在的最佳實踐代碼;第三部分由架構部性能測試團隊組成,負責框架的性能和穩(wěn)定性測試。
另,如果你精通Java,并具備大型項目、復雜系統(tǒng)架構經驗,歡迎加入當當架構部,簡歷發(fā)送郵箱:shihaifeng@dangdang.com
CSDN:能不能和我們詳細的介紹下elastic-job具體模塊的底層及如何實現(xiàn)以及它們的作用?
張亮:elastic-job的主要分為注冊中心、數(shù)據分片、分布式協(xié)調,定時任務處理和多作業(yè)模式等模塊。
注冊中心模塊目前直接使用Zookeeper,用于記錄作業(yè)的配置,服務器信息以及作業(yè)運行狀態(tài)。Zookeeper雖然很成熟,但原理復雜,使用較難,在海量數(shù)據支持的情況下也會有性能和網絡問題。目前elastic-job已經抽象出注冊中心的接口,下一步將會考慮支持多注冊中心,如etcd,或由用戶自行實現(xiàn)注冊中心。無臨時節(jié)點和監(jiān)聽機制的注冊中心需要自行實現(xiàn)定時心跳監(jiān)測等功能。
數(shù)據分片是elastic-job中實現(xiàn)分布式的重要概念,將真實數(shù)據和邏輯分片對應,用于解耦作業(yè)框架和數(shù)據的關系。作業(yè)框架只負責將分片合理的分配給相關的作業(yè)服務器,而作業(yè)服務器需要根據所分配的分片匹配數(shù)據進行處理。服務器分片目前都存儲在注冊中心中,各個服務器根據自己的IP地址拉取分片。
分布式協(xié)調模塊用于處理作業(yè)服務器的動態(tài)擴容縮容。一旦集群中有服務器發(fā)生變化,分布式協(xié)調將自動監(jiān)測并將變化結果通知給各個仍存活的作業(yè)服務器。協(xié)調時將會涉及主節(jié)點選舉,重分片等操作。目前使用的Zookeeper的臨時節(jié)點和監(jiān)聽器實現(xiàn)主動檢查和通知功能。
定時任務處理根據cron表達式定時觸發(fā)任務,目前有防止任務同時觸發(fā),錯過任務重出發(fā)等功能。主要還是使用Quartz本身的定時調度功能,為了便于控制,每個任務都使用獨立的線程池。
多作業(yè)模式將定時任務分為多種流程,有不經任何修飾的簡單任務;有用于處理數(shù)據的fetchData/processData的數(shù)據流任務;以后還將增加消息流任務,文件任務,工作流任務等。用戶能以插件的形式擴展并貢獻代碼。
CSDN:elastic-job是分布式作業(yè)調度框架,何為分布式作業(yè)?以及為什么需要作業(yè)?
張亮:作業(yè)即定時任務。一般來說,系統(tǒng)可使用消息傳遞代替部分使用作業(yè)的場景。兩者確有相似之處??苫ハ嗵鎿Q的場景,如隊列表。將待處理的數(shù)據放入隊列表,然后使用頻率極短的定時任務拉取隊列表的數(shù)據并處理。這種情況使用消息中間件的推送模式可更好的處理實時性數(shù)據。而且基于數(shù)據庫的消息存儲吞吐量遠遠小于基于文件的順序追加消息存儲。
但在某些場景下則不能互換:
系統(tǒng)內部 OR 系統(tǒng)解耦。作業(yè)一般封裝在系統(tǒng)內部,而消息中間件可用于系統(tǒng)間解耦。
CSDN:elastic-job的主要功能有哪些以及目前的部署和使用情況如何?可否用具體數(shù)據來說明。
張亮:
Elastic-job在當當內部也是剛剛進行推廣,目前支付系統(tǒng)、訂單系統(tǒng)、發(fā)票系統(tǒng)、促銷系統(tǒng)都有使用,快遞系統(tǒng)和倉儲系統(tǒng)也即將使用。開源后也得知不少公司有使用計劃。
CSDN:對該開源項目的未來有什么期待?
張亮:elastic-job的開源主要是為了反饋社區(qū)。開源短短兩個月,我們收到了很多朋友的反饋和支持,非常感謝。目前的elastic-job定位是一個基于Java的定時任務調度框架,未來想發(fā)展成為支持異構語言,高度靈活,可自定制的定時任務調度產品。
未來的展望主要包括幾個方面:
CSDN:最后,能否就開源產品談下你的開發(fā)理念?
張亮:技術類開源項目和一般的業(yè)務型項目不同,更需要對代碼和質量的控制,我們總結出以下幾點:
(責編/錢曙光,關注架構和算法領域,尋求報道或者投稿請發(fā)郵件qianshg@csdn.net,交流探討可加微信qshuguang2008,備注姓名+公司+職位)
友情提醒:當當分布式作業(yè)框架elastic-job還入選了2015TOP100Summit全球軟件案例,而且2015TOP100Summit全球軟件案研究峰會將于2015年12月5日-7日在北京國家會議中心舉行,屆時會有更多的精彩演講,敬請關注。
聯(lián)系客服