亚洲AV无码欧洲AV无码网站_国产精品视频色_大地资源网更新免费播放视频_私人影院性盈盈影院_久久99精品久久久久久236_最新亚洲人成无码网站

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

來源:IT168企業級 | 2018-08-22 12:17

  9年互聯網/大數據領域研發、架構經驗,2015年加入京東物流,主要負責大數據相關架構與開發工作。

  摘要: 數據蜂巢平臺是京東物流自主研發的分布式、高性能、高可用、支持異構,離線和實時的大數據同步與管理平臺。關鍵技術:HA;離線與實時同步整合;binlog采集,存儲與訂閱;客戶端并發消費;一致性校驗與修復;任務隔離。

  目前已經在京東物流系統中大規模應用,比如單源和多源復制,從全國各地倉儲園區集群(上百個)實時復制到IDC,從mysql到ES,從mysql到cassandra等等。倉儲園區硬件、網絡環境復雜,數據蜂巢平臺需要考慮硬件設施和網絡故障的容錯性。議題主要分享平臺誕生的背景,使用的關鍵技術,架構的演進過程,演進過程中所踩過的坑。

  正文:

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  京東物流一線數據大部分都存在MySQL數據庫上,分布比較廣,包括國內外園區庫房和IDC,這樣數據使用起來極不方便,各業務系統為了使用數據,開發出多種版本的同步工具,結果導致管理非常困難以及資源的浪費。這時就需要一個統一的平臺把這些數據管理起來。

  架構設計

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  關于數據同步,主要分為:批量同步、實時訂閱和實時同步。

  批量同步: 采用sqoop的模式,把數據分片,然后進行多機并發復制,用以提升效率。

  實時訂閱:使用消息隊列,即將binlog事件解析生成對應的消息存儲在隊列中;

  實時同步:通過客戶端去消費隊列將數據寫入目標存儲,從而實現數據的實時同步。

  如何中將以上三個功能整合到一個平臺?

  首先,適配批量同步,參照sqoop, sqoop是借助于hadoop集群提交一個mr作業, 類似的,蜂巢系統也提供一個集群,將一個批量同步作業分為多task去執行。實時訂閱也可使用這種思路,不同的是每一個task即對應一臺mysql實例的binlog采集;同理實時同步也可分成多個task,每一個task即為一個消息隊列的消費客戶端。

  架構圖如下所示:

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  采用了經典的master、slave結構,每一個slave上可以跑三種對應的任務。BatchWorker負責把MySQL數據批量同步到storage里面,這里的storage是一個抽象,不一定就是存儲之類的系統,也有可能是一些業務的處理。StreamWorker負責binlog的采集和消息隊列的維護,如果有訂閱需求,使用系統提供的客戶端Consumer就可以直接消費。

  Pieworker則是Consumer的分裝,只不過這個客戶端由集群去管理維護。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  BatchWorker結構比較簡單,主要由Fetcher、Sinker和Storage(與整體架構圖中的storage不同,此處為一個buffer)組成。Fetcher接口負責抽取數據,Storage負責緩存數據,Sinker接口負責數據的寫入。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  StreamWorker模仿MySQL的主從復制機制, RelayLogTask負責binlog的抽取;HHLTask負責解析binlog,生成消息體,最后存在hhl中,hhl即為上文提到消息隊列。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  客戶端: StreamJob除了采集binlog,維護消息隊列外,還提供了一個ClientServer模塊,用于接收客戶端的消費請求。當Consumer需要消費的時候,請求會發送到ClientServer,ClientServer通過索引快速的定位到hhl文件的某一個位置,然后把數據讀取出來,然后經過客戶端的指定過濾規則進行過濾,最終將消息體傳送給客戶端。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  消息的位點由三部分組成的:Serverld對應的就是MySQL的Serverld;binlogPosition是一個長整型數字,高32位為binlog文件下標,低32位為文件內部的位置;time為對應的binlog事件產生的時間。

  為解決性能問題,客戶端支持多種并行模式。

  第一種是以事務為單位串行處理;

  第二種是在第一種基礎上進行了一個簡單的優化,比如:一個事務內只對單表操作,那么這個事務是完全可以并發的,不同表間的事務順序并不會影響最終結果的一致性;但事務內對多表操作就需要繼續串行。所以第二種并發模式就是不斷串行并行轉變的過程。

  以上兩種消費模式是以事務為單位,以下兩種以行為單位

  第三種是表級并發,將事務拆分為多個行級操作,同表操作由同一線程完成,保障同一表操作的有序性;

  第四種是行級并發,主要是把MySQL的數據同步到NOSQL上時使用,關系型數據庫同步時局限性較大,因為行級并發只保障同一主鍵的操作有序,而關系型數據庫會存在多個唯一約束,這樣即使保障了主鍵的操作有序也可能引起數據不一致。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  集群的特性:作為一個集群都需要要保證高可用、數據本地性和負載均衡。高可用這一塊主要分為三部分:

  MySQL: 由DBA保證數據庫的高可用,但當Mysql主從切換時,binlog的位點是不一致的,此時系統通過Serverld的檢測發現該變更,然后通過時間在新的mysql實列上定位正確的binlog位點。

  master(Queen):基于Zookeeper完成Active角色的選舉

  Bee(Slave):Bee宕機后由Master將其運行的任務遷移到其他的Slave上。

  數據本地性:每一個Bee在啟動時都配置了機房,分組等信息,作業提交時可以指定自己期望的運行位置,與hadoop,spark類似。

  負載均衡: 每一個Bee會將自己的負載信息通過心跳發給Queen,queen進行作業調度時,會在滿足數據本地性的前提下選擇壓力最小的機器去運行新任務。

  演進

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  HHL文件丟失:上文提到過,如果Streamworker的運行主機宕機,Master會把它遷移到另外一臺機器上,但是Streamworker采集解析的binlog存在本地,遷移后會引起數據丟失,解決這個問題通用的方案是多副本,但大數據量下的多復本會造成磁盤空間的浪費,尤其是在庫房環境下。

  并且這些數據有一個特點,就是發生遷移時,雖然解析過的數據丟失,但是原始binlog都會在機器上保存(dba會保留n天的binlog數據),最終可以通過數據補全來保證數據不丟失。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  上圖為第一版streamworker的擴展,最右面的可以認為是這一組的主線程,虛線位置發生任務遷移,切換到了新的主機上,此時虛線左邊的數據全部丟失。如果有客戶端需要消費丟失的數據,服務端則啟動一組新線程,然后進行catchup,catchup會把丟失的部分補齊并提供給客戶端消費。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  元數據: binlog是不記錄字段名等元數據的,而客戶端消費時需要。最簡單的方式是收集到binlog之后,去源庫上查詢,但在binlog采集延遲期間如果有ddl操作,會導致元數據不準確。為解決該問題系統實現了一個快照模塊。

  在StreamJob初次啟動的時候,把對應的MySQL里面所有表都做一份快照,在此后的運行期間監控DDL操作,當解析到DDL操作時會將原快照取出生成一個復本,并在這個復本上應用這個ddl,生成新的快照 。這樣系統可以保證任何時刻binlog對應的元數據都是正確的,方便用戶使用。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  客戶端:服務端并不記錄客戶端的消費位點,消費的位置由客戶端自行存儲。由于客戶端采用的是并發消費模式,消息又是嚴格有序的,此時位點記錄就必須保障每一個記錄下的位點之前的所有消息都被正確處理了,此處引入了一個環形提交隊列(具體實現與disruptor類似)。

  當連續的多個消息被正確處理,并達到記錄位點的間隔,此時提交隊列會將一個位點寫入對應的存儲介質。比如1,2,3,4,5,8,10,14被處理完成,位點提交間隔為5,則5位置對應的位點被記錄,當6,7,9被處理完成后10再被記錄。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  以下主要為易用性的改進:

  SQL: 用戶通過SQL描述需要同步哪些字段,同步條件等信息,服務端通過解析sql執行對應的同步邏輯。

  Union: 用于處理多表合一的場景,通過加入來源標識字段來解決唯一約束。

  Join: 在同步的過程中完成寬表的加工,內部通過緩存,布隆過濾器等優化方案來提升性能。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  一致性較驗:

  系統提供了兩種模型:

  第一種是使用pt_table_checksum的思路,比如要較驗一張表的數據,先把這張表的數據分成多個片段,然后對這些片段進行crc計算,并將結果和計算的范圍存儲到同一個數據庫的表里去,此時會觸發一個binlog事件,當消費者消費到這個事件后重現該操作,通過比對計算結果值來確定數據是否一致。

  這種方式一是侵入性比較強,需要在原庫上建對應的比對結果表,二是需要加鎖,三是對延遲的要求很高,當延遲較大時,消費端拿不到對應的比對事件,將無法確定數據一致性。

  第二種數據校驗的模型是基于BatchJob實現。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  Fetcher抽取源和目標雙方的數據,排序后通過storage把數據傳遞給sinker,Sinker根據用戶自定義的比較接口對數據進行比較,最后將差異通過Collector進行收集。這種比對方式的缺點是不能保證時間序列,在比對的時候數據是變更的,比對出來的結果可能并不是真正的差異。

  此時我們需要修復比對結果,首先在比對開始時把消費端的位點記錄下來,比對完成后,如果有差異則從比對開始前記錄的位點進行binlog重放,通過分析binlog中操作,對差異進行修復,輸出最終結果。

  該比對模型最大的問題是需要抽取比對雙方的數據,對帶寬占用較大,為減少網絡傳輸,內部會對數據進行初步的篩選,將要比對的數據分成多個片段,在存儲端對每個片段進行md5計算,fetcher只收集md5值 ,只有雙方md5值不同時才將真正的數據抽取到計算端進行比較。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  修復:

  系統提供兩種修復方式:

  一是基于binlog事件傳遞,當比對出差異數據后,只需要在源庫上對差異數據進行一個偽操作(比如更改update_time字段),觸發binlog事件的產生,消費端收到該事件即可修復錯誤數據(事件對應的消息體內包含了所有對應字段的值,并不只限于update_time字段),該方式缺點是受延遲的影響,同時還需要源庫的寫權限。

  二是直接修復,即直接在目標上將差異數據修正。在修復數據時需要加鎖或暫停同步,避免并發問題。

一文帶你了解京東自主研發物流數據平臺—數據蜂巢!

  資源的隔離: 系統默認只提供了常用的同步功能,當默認實現無法滿足客戶需求時,用戶需要自行編寫代碼來實現對應的接口來完成他們的邏輯。Bee開始使用的線程模型,即每一個Bee可以看做一個線程池,多個任務都在同一線程池內運行,而用戶自定義代碼又無法控制,導致不同任務相互影響,更有甚者任務結束后資源不釋放。

  為保證資源隔離,將線程改為進程,將不同作業的任務交由不同的子進程去執行,子進程啟動時會指定額定運行資源;所有子進程由Bee統一管理,Bee不再運行具體任務,作業結束后,Bee將未退出的子進程全部強制殺死。


【聲明】物流產品網轉載本文目的在于傳遞信息,并不代表贊同其觀點或對真實性負責,物流產品網倡導尊重與保護知識產權。如發現文章存在版權問題,煩請聯系小編電話:010-82387008,我們將及時進行處理。

熱門排行

10秒快速發布需求

讓物流專家來找您

主站蜘蛛池模板: 亚洲小说少妇区图片_亚洲国产欧美在线人成_日本欧美v大码在线_国产精品精品自在线拍_国产亚洲一本大道中文不卡_在线观看黄动漫_亚洲国产精品一二三_国产精品免费看视频 | 精品av中文字幕在线毛片_中国一级片_日批一级片_高清成人爽a毛片免费_美景之屋5在线观看_欧美乱妇无码毛片_中文亚洲成A人片在线观看_国产成人无码A区在线观看视频不卡 | 国产午夜精品理论片a大结局_69激情视频_欧美人与动性xxxxBBBB_久久人爽人人爽人人片AV_少妇人妻88久久中文字幕_日本国产精品视频_在线观看av播放_亚洲欧美另类在线图片区 | 狠狠操综合_99热这里只有精品5_国产aⅴ精品_日本在线视频www色_97夜夜澡人人波多野结衣_欧美一级一区二区三区_国产精品自拍系列_日韩精品免费综合视频在线播放 | 亚洲免费一级视频_女人一级片_一本一本久久a久久精品国产_久久精品一本久久99精品_国产精品久久久久久福利一牛影视_天堂影院麻豆_午夜理论无码片在线观看免费_久久爱成人网 | 日本熟妇厨房bbw_欧美天天影院_国产精品一二三四区_大菠萝福利视频_18禁勿入免费网站入口不卡_av不卡免费在线_免费看p_亚洲最大中文字幕无码网站 | www国产精品内射_欧美日韩国产精品激情在线播放_FREE性少妇饥渴XXⅩXXHD_手机福利在线_亚洲另类伦春色综合妖色成人网_久久密臀_欧美又粗又硬又大免费视频Q_亚洲无在线观看 | 新91在线观看_久久中文字幕亚洲精品最新_AⅤ无码国产在线看_久青草国产在视频在线观看_免费h片在线观看_国产精品美女视频免费午夜版_猫咪成人官网_成人免费午夜视频69影院 | 精品美女一二三区_北条麻纪av无码_日本少妇毛茸茸高潮_国产ts网站_国产激情午夜_超碰人人超碰人人_日韩精品分区_天美一区 一本色道久久综合狠狠躁篇的优点_青青青国产在线视频_欧美大肚子孕妇疯狂作爱视频_一级免费毛片_国产乱人****在线观看_天天射寡妇射视频_麻豆调教_91特黄 | 好大好爽受不了了h_人妻体验按摩到忍不住哀求继续_欧美精品欧美精品系列_色www视频永久免费男的天堂_久久精品人人槡人妻人人玩_久久精品5_日韩精品一级_久久精品一日日躁夜夜躁 | 黄色一二三区_福利视频一区二区_免费成人高清视频_91久久精品国产亚洲a∨麻豆_亚洲第一极品精品无码久久_久久.com_在线国产毛片_一起操17c | 久久久久国产精品免费a片记大片_国产五月色婷婷六月丁香视频_亚洲人体一区二区_成人国产网址_51社区精品视频在线视频观看软件_日本一道高清_手机午夜看片_小箩莉h文徐韵婷合集小说 | 国产无套乱子伦精彩是白视频_成人精品动漫_精品人妻系列无码专区久久_秋霞无码一区二区_九九re热_japanese教师中文字幕_大地资源在线观看免费官网_成人九九视频 | 国产国语性生话播放_亚洲综合日韩欧美_2018高清国产一区二区三区_人与善性猛交xxxx视频_小污女小欲女导航_精品对白一区国产伦_麻豆国产VIDEOFREE高清_bt久久 | 久久一区二区精品_欧美精品福利在线_久久99精品国产99久久6_麻豆一区二区三区蜜桃免费_欧美乱妇高清免费96欧美乱妇高清_久操97_欧美无玛_欧美日韩一区二区在线 | www·黄_亚洲熟熟妇xxxx_刺激对白勾搭视频在线观看_字幕网资源yellow在线观看_欧美一级射_大陆熟妇丰满多毛XXXX_色婷婷国产精品综合在线观看_色99在线 | 国产美女一级二级三级chinese_无码毛片中文字幕加勒比免费高清_久久久久高清_97超碰资源站_日韩国产亚洲精品_掐住奶头用针扎进乳孔里小说_国产自产视频一区二区三区_毛片网此 | 四虎在线免费观看_精品久久久亚洲_亚洲国产精品久久久久婷蜜芽_麻豆网在线观看_中国一级黄色毛片_久久综合久久鬼色_中文字幕在线_国产精品久久久久一区二区三区 | 德国妓女精品性HD_狼人精品一区二区三区在线_性猛交xxxx乱大交中国_国产一级片中文字幕_四虎永久在线精品免费播放_日日婷婷夜日日天干A片_91成熟丰满女人少妇777_好好热av | 亚洲欧洲免费_97精品人人妻人人_无码国产精品人妻一区二区_亚洲欧美日韩综合久久_真人性23式(动)黄色毛片_国产网红主播精品av_色肉色伦交av色肉色伦_久久精品一品道久久精品 | 中国av一级片_av不卡免费观看_久久久亚洲精品石原莉奈_日韩中文字幕在线_脱了内裤猛烈进入A片费_欧美操人_成人无码区在线观看_亚洲高清国产精品 | 久久第四色_色啪影院_国产免费啪视频观看网站_裸体按摩xxxxx高清_国产制服丝袜免费视频_日韩av永久免费网站_色偷偷偷亚洲综合网另类_精品免费一区二区三区 | 久久一区二区三区av_欧美精品激情在线_精品亚洲在线_四虎在线网址_中文字幕一区二区三区免费视频_色片在线免费观看_欧美日韩超碰_国产一线毛片 | 亚洲欧美国产成人综合不卡_YYY6080韩国三级理论久久_欧美www777_久久99精品久久久久婷婷暖_久久久久在线观看_91福利无码国产正在播放_大肉大捧一进一出好爽视频_视频一区二区在线播放 | 久久精品亚洲人成影院_久久久久国产精品人妻_caoporm-超频在线视频_粗大的内捧猛烈进出在线视频_麻豆产精国品一二三产区区_亚洲精品中_九七精品_国产原创av中文在线观看 | 51VV宅男天堂_日本69xxxxx_日本免费一区二区在线观看_五级日本片全部免费_亚洲高清免费_69av在线免费观看_成人免费大全_999精品视频这里只有精品 | 特黄A片女人亚洲一区小说_尻逼久久_美国豪放女大兵在线观看_精品国产91久久久_成人免费在线视频观看_国产精品美女久久久久av爽金牛_亚洲成人tv_久久久久久中文字幕 | 久久综合精品国产一区二区三区_av不卡国产在线观看_天天躁日日躁狠狠躁性色AV_水蜜桃aⅴ无码专区_干干干日日日_国产精品成人一区二区不卡_国产一级黄色aaaa片_一区二区免费视频va | 欧美城网站地址_99热超碰在线_一区二区三区在线免费播放_激情自拍网_亚洲国产精品午夜伦不卡_久久久精品中文_精品国产一区二区三区国产区_成年人在线免费视频观看 | 毛片免费视频在线观看_日韩伦乱_97欧美精品系列一区二区_国产精品亲子乱子伦xxxx裸_操喷视频_欧美蜜桃视频_天上人间av网_亚洲日韩中文字幕日本 | 看a级片_亚洲乱妇老熟女爽到高潮的片_天天爽夜夜爽人人爽曰_精品久久久一二三区播放播放播放视频_国产人妻人伦精品一区二区网站_午夜看片网_呦女人与动人物A级毛片_精品无码国产污污污免费 | 日本乱码一区二区三区芒果_成人在线观看免费_中文字幕亚洲欧美精品一区四区_国产又爽又猛又粗的A片_欧美情侣性视频_国产高清精品软件丝瓜软件_国产免费久久久久_亚洲美女视频网 | 日韩第一视频_香蕉影院在线_无套内射无矿码免费看黄_千金不装了短剧免费观看_九九久久国产_爆乳2把你榨干哦无码_三级小说一区_国产在线观看91一区二区三区 | 精品久久久久久久久久中出_成人免费在线网址_正在播放重口老熟女露脸_精品国产成人av_欧美在线亚洲_激情毛片无码专区_亚洲超高清大胆极品人体美女_欧美日韩高清 男人的天堂Aⅴ在线_特级毛片A片全部免费97_97免费看_免费无码一区二区三区A片百度_精品成人网_狠狠噜天天噜日日噜视频跳一跳_中国熟妇人妻videos_日日碰日日摸夜夜爽无码 | 色婷婷av一区二区三区之红樱桃_精品日韩亚洲AV无码一区破坏_美女扒开尿口给男人看_性生大片免费观看高清视频_久久久久久久久久99精品_91成人国产精品_东京热一本无码av_久久网伊人 | 永久免费毛片_无码制服丝袜人妻一在线视频_给我播放的视频在线观看_四房播色综合久久婷婷_一区二区成人网_亚洲图色在线_国产网站久久_猫咪AV成人永久网站 | 99re热这里只有精品18_六度影院鲁鲁片在线看_亚洲综合另类欧在线美_一级片影院_91精品国产综合久久精品_久久黄视频_国产欧美精品一区二区三区-老狼_玖玖爱国产精品 | 色77影院_国产成人无码AV麻豆_久久人成_不卡高清AV手机在线观看_久久精品在线视频_亚洲国产精品嫩草影院在线观看_精彩视频一区二区三区_国产精品亚洲一区二区三区妖精 | 6969精品视频在线观看_四虎影院在线视频_大青草久久久蜜臀av久久_亚洲操比_日本一区二区三区爆乳_亚洲va韩国va欧美va_91在线亚洲_国产视热频国只有精品 | 亚洲a片无码精品毛片色戒_亚洲欧美日韩综合久久久久_av免费观看网址_黄色av影院在线观看_欧美偷拍另类_一级成人在线_xxxxx18国产_bestialityvideo另类骆驼 | 国产一区二区影视_不卡一区在线_西西人体大胆啪啪实拍_一级黄色aaaa_国产中文字幕在线看_欧美一区=区_中文字幕亚洲高清_国产原创三级 |