精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里巴巴代碼平臺架構的演進之路

網絡
相信很多做后端服務的同學在看到單機、讀寫分離、分片這些字眼一定不會覺得陌生。沒錯,代碼服務在發展的開始階段面臨的問題和其他web服務大體一致,所以使用的解決方案也大體一致。

代碼平臺的發展之路

相信很多做后端服務的同學在看到單機、讀寫分離、分片這些字眼一定不會覺得陌生。沒錯,代碼服務在發展的開始階段面臨的問題和其他web服務大體一致,所以使用的解決方案也大體一致。

單機服務

眾所周知,Git是一種分布式的版本控制軟件,每個人的本地都有一份完整的代碼版本數據。但為了解決多人協同開發和流程管控(評審、測試卡點等),需要一個集中式的遠端中央倉庫來完成這些功能,這就是單機服務的來源。

讀寫分離

隨著協同人數的增多,以及提交數量的變多,單機升配也無法解決調用量過高的問題。而通過統計我們發現,對于Git服務讀寫比例大概是20:1,為了保證主鏈路提交的正常,我們做了讀寫分離,來分散壓力。通過主備同步來完成數據的同步,并使用一寫多讀的架構來擴展讀服務的能力。

分片

但無論如何做讀寫分離,所有機器的規格始終是一樣的。雖然倉庫數量的增加、平臺用戶的增加,無論是存儲還是計算都會達到單機所能承載的極限。這個時候我們采用了分片的方式,即將不同的倉庫劃分到不同的片中,而每個片都是一個完整的讀寫分離架構。當一個請求到來時,服務會根據查詢庫特征信息,決定這個倉庫所在的分片,而后又根據接口的讀寫特性,將請求轉發到具體的機器上。有點類似于數據庫中的分庫分表。這樣以來,通過分片+讀寫分離的架構,我們理論上可以支持水平上的無限擴容。

問題及思考

那么分片+讀寫分離是否是解決代碼服務大規模、高并發問題的銀彈呢?在我們看來,答案是否定的。
伴隨著代碼服務體量的發展,我們解決的核心問題一直以來主要是兩個:

集中式的Git存儲服務,既是I/O密集型也是計算密集型(Git的壓縮算法);
文件數量眾多,單個倉庫的文件數量也可能是十萬甚至百萬級,對數據一致性的保證和運維可靠性的挑戰極大。
實際上,代碼平臺架構的發展,就是在這兩個問題之間找平衡,以在一定規模情況下保證整個平臺的穩定性。但一直沒有根本性地解決掉這兩個問題。然而隨著規模逐步上漲,上述的兩個核心問題引發的劣勢又逐步變得明顯起來。

代碼服務主備架構:有狀態服務帶來的問題

對高可用系統比較熟悉的同學,從名字上應該就看出些許端倪。主備架構的讀寫分離方案其天然引入的就是有狀態服務的問題。

整個系統的請求流轉,主要分兩次轉發:

通過統一的代理層,可將用戶的不同客戶端請求轉發到對應的系統上,如Git命令行客戶端的SSH協議和HTTP協議、頁面的訪問及API接口請求等。
然后對接的模塊會將用戶不同協議的請求轉換為內部的RPC調用,并通過統一的RPC代理模塊RPC Proxy和分片服務Shard Config將請求按分片和讀寫轉發到對應的服務上。

讀和寫操作如何處理

如果是一個寫操作(如:push,從頁面上對文件、分支等進行新增、刪除、修改等操作),請求則會落到倉庫對應分片的RW/WO服務器上,在RW/WO服務寫入完成以后,再通過Git協議的同步方式,同步到同分片的其他機器上,這樣一次寫操作就完成了。而對于讀操作,則是在倉庫對應分片中隨機找一個RO的機器進行轉發。

問題分析

當某個分片的主節點發生異常(服務crash或服務器宕機等),分片內的機器狀態會發生變化。原本的RW/WO狀態會置為不可用,Backup的機器會取代原來的RW/WO服務來承接寫操作的請求。

從系統的角度上分析,主備架構存在以下四個問題:

1、可用性:

由于讀寫操作是分離的,所以在寫服務器failover期間,服務的寫功能是無法使用的;
對于單片而言,寫操作是單點的,一臺服務波動則整個分片都波動。
2、性能:

主備機器在同步上需要額外的時間開銷。對于松散文件、文件壓縮的Git倉庫,這個耗時比單文件拷貝耗時更久。
3、安全:

用戶側的短時間內的瞬時操作,對于節點同步來說可能是并發的,無法保證同步中的事務順序。
4、成本:

同分片寫,主備機器要求規格完全一致。但由于接收的請求不同,存在嚴重的資源消耗不均;
由于同步的小文件多,對延時敏感,跨機房異步同步,機器規格一比一復制。
這四個系統上缺陷帶來的問題,在一定使用規模和服務穩定性要求下是可以容忍的。但隨著商業化的深入和用戶規模的增長,這些問題的解決變得迫在眉睫。接下來我將和大家分享在過去的一年中,我們團隊對這些架構上問題的思考和解決思路。

代碼服務多副本架構:消滅有狀態的存儲服務

在上一個小節中,我們已經比較清晰地認識到架構上面臨的四個問題主要是有狀態服務帶來的。那么在新架構的設計中,我們的目標只有一個——消滅有狀態的服務。目標有了,如何去實現?我們首先對業內幾個流行的分布式系統做了深入的了解和學習,比如ETCD、Paxos協議的學習等。同時我們也學習了代碼服務的老大哥——Github開源的寥寥文章,但Github認為分布式架構是他們的核心競爭力,所以可參考的文章較少,但從這些文章中我們依然深受啟發。首先對于任何架構升級,要能做到“開著飛機換引擎”,讓架構軟著陸是架構升級的保底要求。因此在grpc的代理層之上沒有任何的改動。從內部的RPC調用以下則是我們新架構實施的地方。

和前一節的不同,在新的底層設計中:

我們希望設計一個GPRC D-PROXY的模塊,能將gRPC的請求做到寫時復制,從而達到多寫的第一步;
其次在Proxy Config的模塊中來存放倉庫、副本、機器等元數據;
再次通過一個分布式的鎖(D-Lock)來完成對倉庫級別的鎖控制;
最后我們希望有一個快速的算法能計算倉庫的checksum,快速識別倉庫的副本是否一致。

通過這些模塊的組合完成倉庫多副本的并發寫入、隨機讀取,我們就可以去除底層存儲節點的狀態,從而能將倉庫的副本離散到不同機房中。此外得益于機器與副本的解耦,每個服務器都可以有獨立的配置,這也為后續的異構存儲打下了基礎。

代碼服務多副本架構的實現

有了基礎的設計,通過MVP的實現,我們驗證了這個架構的可行性。并通過一年多的時間進行開發和壓測,最終將我們的多副本架構成功上線并逐步開始提供服務。在實現過程中,我們為這個系統起了一個頗有意義的名字——伽利略,因為在我們的多副本架構中,最小的副本數是3,而伽利略在發明了天文望遠鏡觀察到火星的衛星恰好就是3個。我們希望秉承這個不停探索的精神,所以起了這個有意義的名字。在具體的設計中,我們通過對gRPC proxy模塊的改寫,讓來自用戶的一次寫操作完成寫復制,并通過對git的改寫以支持分段提交。我們基于git的數據特性,編寫了checksum的模塊,可以對git倉庫進行快速的全量和增量一致性計算。

伽利略架構在系統架構層面解決了之前主備架構帶來的問題:

1、可用性提升:多寫和隨機讀讓底層的git存儲服務不存在寫單點和failover的切換問題;

2、寫性能提升:副本并發多寫,讓底層的副本間不存在主備復制的時間開銷,性能比肩單盤;

3、安全:寫操作的分段提交和鎖的控制,在解決分布式系統寫安全的基礎上也控制了用戶寫操作的事務性;

4、成本大幅度降低:

每個副本都會承擔讀寫操作,水位平均

副本與機器解耦,釋放機器的規格限制,可以根據倉庫的訪問熱度采用不同涉及機型和存儲介質
說了這么多,當用戶執行push后,在伽利略中會發生什么呢?我們用一個動畫來簡單演示下:

用戶3和用戶4是兩個著急下班的同學,他們本地master分支分別是提交3和提交4;
底部灰色的圓圈代表的是服務端一個倉庫三個副本的裝填,可以看到其中兩個master分支指向的是提交2,而其中有一個可能因為網絡或者其他原因導致其master的指向為1;
當用戶3和用戶4前后提交了代碼,由于用戶3更快達到服務,所以會率先啟動寫的流程;
在一個寫的流程開始,首先會對當前倉庫副本的一致性進行檢查,系統很容易就發現落后的副本1與其他兩個副本不一致,因此會將其標記為unhealthy。對于unhealthy的副本,是不會參與伽利略寫或讀的任何操作;
當用戶4的請求也被受理后,也會觸發一致性檢查,但是由于副本1已經被標記為unhealthy,所以對于用戶4的流程,這個副本就“不可見”了;
在用戶3的進程檢查后,發現多數副本是一致,則認為是可以寫入的,便會將非引用數據傳輸到副本中;同理用戶4的進程也是一樣,且因為非引用數據不會變更分支信息,所以不需要加鎖,可以同時操作;
當用戶3的進程收到非引用的數據傳輸成功后,便要開始進行引用的更新,這時第一步先去搶占這個倉庫的鎖。很幸運鎖是空閑的,用戶3的進程加鎖成功,開始改寫副本的引用指向;
當用戶4的進程也完成了非引用數據傳輸后也開始進行引用的更新。同樣,再更新操作前要去搶鎖,但發現鎖已經被占用,則用戶4的進程進入等待階段(如果等待超時,則直接告訴用戶4提交失敗);
當用戶3的進程改寫引用成功后,會釋放掉倉庫鎖。此時服務端的倉庫的master分支已經被修改為指向3。用戶3可以開心下班了;
當鎖被釋放后,用戶4的進程快速搶占,并嘗試修改引用指向,但發現更改的目標引用master已經和之前不同(之前是2,現在是被用戶3更改的3),此時用戶4的進程會失敗并釋放掉鎖。在用戶4的本地會收到類似“遠端分支已經被更新,請拉取最新提交后再推送”的類似提示。
以上就是多個用戶同時提交時,伽利略系統內部發生的事情。眼力好的同學可能會問,那在系統中被判定unhealthy的副本會怎么辦呢?這個就是剛才在架構實現中提到的運維系統會做的事務補償了,運維系統在收到unhealthy上報和定時掃描后都會觸發對unhealthy副本的修復,修復后的副本在確認一致后會置為healthy并繼續提供服務,當然這個過程在判斷修復是否一致也是加鎖操作的。

代碼托管運維管理平臺

除了上小節提到的副本修復,在系統運行中,還需要很多的運維操作。以往這些都是由運維同學操作的。Git服務涉及數據和同步,比單純的業務系統要運維復雜度要高,對應運維風險也比較高。在過去的一年中我們結合以往的運維經驗,以及新架構的需要,以工具化、自動化、可視化為目標,為伽利略系統打造了對應的運維管理平臺:

通過這個平臺我們大大提升了運維的質量、也充分釋放了運維人員的精力。

責任編輯:梁菲 來源: 阿里云云棲號
相關推薦

2015-07-24 12:21:14

wot 2015移動開發者大會

2017-12-02 21:03:05

WODT阿里巴巴古墨

2017-12-07 15:07:28

阿里巴巴數據庫技術架構演進

2019-08-15 10:25:02

代碼開發工具

2023-03-16 07:20:15

大數據平臺云數據

2019-04-23 09:13:54

蘇寧采購架構

2013-08-08 10:34:50

阿里巴巴BAT

2010-06-28 10:43:47

2011-04-28 10:12:13

海量數據分析平臺

2024-04-08 07:27:02

JDK8ZGC垃圾回收

2013-08-22 09:36:45

阿里巴巴王堅阿里云

2013-08-22 09:41:52

阿里巴巴去IOE王堅

2018-10-08 12:08:43

阿里計算平臺

2015-05-12 15:09:01

阿里巴巴公有云IaaS

2013-06-02 21:53:51

阿里巴巴Windows Azu淘寶

2009-02-27 10:46:32

DBA筆試題阿里巴巴

2023-03-29 09:42:32

2024-03-04 00:00:00

系統架構核心

2013-10-30 16:40:55

阿里巴巴阿里云云計算

2013-10-10 13:30:44

馬云阿里巴巴
點贊
收藏

51CTO技術棧公眾號

黄色在线免费| 欧美另类高清videos的特点| 国产精品宾馆| 欧美天堂一区二区三区| 无码人妻精品一区二区蜜桃百度| 欧美 日韩 国产 成人 在线 91 | 少妇无码av无码专区在线观看| 青青草视频在线观看| 国产一区二区精品久久| 91po在线观看91精品国产性色 | 天堂av手机版| 精品在线播放免费| 欧美亚洲第一页| 日韩精品一区二区亚洲av性色| 国产美女撒尿一区二区| 欧美三级乱人伦电影| 精品视频在线观看一区| 日本最黄一级片免费在线| www.欧美精品一二区| 国产在线日韩在线| 免费视频久久久| 亚洲网站在线| 久久成人免费视频| 在线观看免费小视频| 国产欧美啪啪| 精品国内片67194| 国产精品v日韩精品v在线观看| 不卡av免费观看| 亚洲三级久久久| 日韩欧美一区二区三区四区| 日本精品999| 国产传媒久久文化传媒| 92看片淫黄大片欧美看国产片| 久久国产黄色片| 在线播放亚洲| 久久久久久久色| av成人免费网站| 午夜影院欧美| 久久精品精品电影网| 网爆门在线观看| 欧美手机视频| 在线观看日韩欧美| 日本成人午夜影院| 国产探花一区| 国产午夜精品全部视频在线播放| 精品人妻一区二区三区香蕉 | 亚洲欧美国产精品| 欧美无人区码suv| 美女av一区| 亚洲国产精品女人久久久| 国产日韩视频一区| 国产成人在线中文字幕| 欧美r级在线观看| 久久无码专区国产精品s| 日本综合精品一区| 日韩一区二区三区免费看 | 日韩一二三区在线观看| 日韩精品专区在线| 亚洲免费观看在线| 国产精品对白久久久久粗| 亚洲电影第1页| 亚洲最大免费视频| 在线日本制服中文欧美| 亚洲色图25p| 久久久久人妻一区精品色| 99国产**精品****| 久久亚洲综合国产精品99麻豆精品福利 | 久久99久久99精品免观看粉嫩| 欧美性x x x| 国户精品久久久久久久久久久不卡| 久久99久久亚洲国产| 中文字幕一区二区三区手机版| 99精品国产在热久久婷婷| 51精品国产黑色丝袜高跟鞋| 无码人妻丰满熟妇区bbbbxxxx| 蜜桃一区二区三区在线| 99影视tv| 暖暖视频在线免费观看| 国产精品国产自产拍在线| 青青视频免费在线| 三级中文字幕在线观看| 欧美亚洲国产bt| 精品人妻无码中文字幕18禁| 免费看成人人体视频| 亚洲视频自拍偷拍| 91日韩中文字幕| 销魂美女一区二区三区视频在线| 国产精品高潮呻吟久久av野狼| 国产精品一区二区人人爽| 成人丝袜高跟foot| 性欧美精品一区二区三区在线播放| 九色porny丨首页在线| 天天色天天操综合| 午夜在线观看av| 国产精品白丝av嫩草影院| 中文字幕日韩高清| 欧美精品一级片| 日韩中文字幕一区二区三区| 亚洲一区二区三区sesese| 四虎影视在线播放| 亚洲摸摸操操av| 欧美视频第三页| 一区二区三区视频免费视频观看网站| 亚洲精品国产suv| 欧美日韩午夜视频| 日本美女视频一区二区| 国产91一区二区三区| 91网在线播放| 欧美性极品少妇精品网站| 久久精品久久99| 欧美综合视频| 欧美亚洲视频在线看网址| а√中文在线资源库| 国产精品美女视频| 日韩av三级在线| 亚洲高清在线一区| 精品国内产的精品视频在线观看| 中文字幕超碰在线| 不卡在线视频中文字幕| 免费看污污视频| 青青久久精品| 亚洲图片在区色| 狠狠躁夜夜躁人人爽天天高潮| 韩国精品久久久| 深夜福利成人| 日韩精品专区| 亚洲精品一二区| 亚洲国产综合久久| 成人高清在线视频| 久久久久久久久久伊人| 日韩久久一区| 色综合影院在线| 中文在线免费观看| 久久精品欧美日韩精品| 黄色免费视频大全| 欧美黑白配在线| 97超碰国产精品女人人人爽| 黄色a在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 99re6热在线精品视频| 欧美一级视频| 欧美精品一区三区在线观看| 人人草在线视频| 亚洲精品久久久久久久久久久| 久久综合成人网| 成人精品一区二区三区中文字幕| 久久www视频| 91精品日本| 午夜精品理论片| 神马电影在线观看| 日本精品视频一区二区三区| 国产人妻一区二区| 麻豆视频一区二区| a级网站在线观看| 精品中文视频| 久久久久久久久久久网站| 天天操天天干天天舔| 日韩欧美999| 国产探花视频在线播放| 久久av老司机精品网站导航| 午夜探花在线观看| 成人盗摄视频| 青草青草久热精品视频在线观看| 久久综合九色综合久| 欧美色手机在线观看| 久久国产美女视频| 成人美女视频在线看| 精品视频一区二区在线| 久久综合欧美| 91久久国产婷婷一区二区| 尤物yw193can在线观看| 日韩精品中文字幕有码专区| 日韩一级片中文字幕| 中文字幕日韩一区| 亚洲天堂美女视频| 日韩国产一区二| 2021国产视频| 妖精视频一区二区三区| 国产日韩欧美中文在线播放| 色呦呦在线观看视频| 精品亚洲一区二区| 91成品人影院| 亚洲mv大片欧洲mv大片精品| 最近中文字幕免费| 国产精品一级二级三级| 成人综合视频在线| 国产精品成人a在线观看| 国产高清一区二区三区| 国产综合色在线观看| 色综合久久久久久中文网| 青青操视频在线| 7777精品久久久大香线蕉| www..com国产| 成人免费在线视频观看| 无码精品一区二区三区在线播放| 日本欧美一区二区在线观看| 日韩在线视频在线| 精品久久91| 国产福利久久| 亚洲国产91视频| 欧美中在线观看| 青春草视频在线| 色哟哟网站入口亚洲精品| 全国男人的天堂网| 91精品欧美综合在线观看最新| 久久国产视频播放| 亚洲一区二区视频| 国产精品久久久免费看| 91丨porny丨国产入口| 亚洲五月激情网| 蜜桃精品视频在线| 亚洲中文字幕无码专区| 欧美日本一区二区视频在线观看 | 欧美xxx.com| 欧美精品一区二区三区四区 | 日韩国产欧美区| 亚洲欧美黄色片| 这里是久久伊人| 最好看的日本字幕mv视频大全| 午夜视频一区二区| 欧美黑吊大战白妞| 亚洲视频香蕉人妖| 日本美女bbw| 国产亚洲欧洲997久久综合| 欧美极品jizzhd欧美仙踪林| 国产伦精一区二区三区| 性生活免费在线观看| 日韩在线一区二区| 日韩欧美精品在线观看视频| 亚洲午夜视频| www.夜夜爱| 国产精品jizz在线观看美国| 干日本少妇视频| 五月天久久久| 人人妻人人澡人人爽精品欧美一区| 国模精品一区| 日本午夜精品电影| 国产欧美日韩在线观看视频| 蜜桃传媒视频麻豆第一区免费观看| 极品一区美女高清| 国产在线精品一区二区三区》| www.神马久久| 国产另类自拍| 久久久免费毛片| 精品亚洲第一| 九色精品国产蝌蚪| 日韩在线国产| 日韩激情在线| 亚洲欧美日韩不卡| 欧美成人日韩| 精品国偷自产一区二区三区| 亚洲日产国产精品| 午夜肉伦伦影院| 老司机精品视频网站| 色多多视频在线播放| 日本aⅴ亚洲精品中文乱码| 成人免费无码av| 男人的j进女人的j一区| 欧美一级视频在线| 国产suv精品一区二区三区| 日本道中文字幕| 26uuu亚洲综合色欧美| 夜夜春很很躁夜夜躁| 亚洲欧美自拍偷拍| 久久久久久久久久久久久久久久久| 亚洲网友自拍偷拍| 久久精品视频5| 欧美日韩国产综合视频在线观看| 国产精品久久久久久在线| 日韩三级高清在线| 天天干天天摸天天操| 国产一区二区三区视频| 国产传媒在线播放| 久久久中精品2020中文| 成人性教育av免费网址| 成人免费午夜电影| 日本在线中文字幕一区| 亚洲国产日韩美| 午夜亚洲福利| 欧美a在线视频| 精品亚洲国内自在自线福利| 韩国三级在线看| 亚洲国产激情av| 久久亚洲精品大全| 91久久精品网| 亚洲成人中文字幕在线| 亚洲欧美日本另类| www久久日com| 日本精品视频在线观看| 精品久久免费| 日本一区二区高清视频| 国产综合久久| jizz欧美性11| 久久蜜桃av一区二区天堂| 欧美做爰啪啪xxxⅹ性| 欧美色欧美亚洲高清在线视频| 一级淫片免费看| 日韩精品在线私人| av网站在线免费看推荐| 国产精品av在线播放| 亚洲一区二区免费在线观看| 亚洲a∨一区二区三区| 精品成人国产| 日本中文字幕在线不卡| 亚洲国产高清在线| 亚洲天堂av片| 精品国产乱码久久久久久久| 午夜视频在线观看免费视频| 午夜精品久久久久久久久久久久| www.久久久久爱免| 欧美三级网色| 99热这里只有成人精品国产| www激情五月| 国产精品伦理一区二区| 丁香六月婷婷综合| 精品国产三级电影在线观看| 日本中文字幕在线2020| 国产精品6699| 日韩av系列| 欧美激情 国产精品| 国产精品亚洲午夜一区二区三区| 中文字幕有码在线播放| 欧美日韩国产一区在线| 丰满少妇高潮在线观看| 伦伦影院午夜日韩欧美限制| 国产福利一区二区三区在线播放| 欧美在线视频二区| 欧美在线综合| 亚洲av无码成人精品国产| 亚州成人在线电影| 午夜精品在线播放| 精品综合久久久久久97| 国产一区二区三区黄网站| 欧美h视频在线观看| 久久国产精品99精品国产 | 视频一区二区在线播放| 992tv成人免费影院| 牛牛精品成人免费视频| 国产婷婷一区二区三区| 粉嫩久久99精品久久久久久夜| 青青草免费av| 欧美一区二区福利视频| fc2ppv国产精品久久| 91欧美视频网站| 欧美一区视频| 日本不卡视频一区| 天天操天天色综合| 邻居大乳一区二区三区| 青草青草久热精品视频在线网站| 免费成人av| 日韩中文字幕组| 国产精品视频麻豆| 国产一区二区自拍视频| 久久这里只有精品99| 日韩中文字幕一区二区高清99| 4444在线观看| 成人免费三级在线| 日本午夜视频在线观看| 亚洲色图欧美制服丝袜另类第一页| 国产成人精品123区免费视频| 亚洲精品一卡二卡三卡四卡| 精品一区二区三区视频| 免费在线观看av网址| 亚洲国产高清福利视频| av日韩亚洲| 最新国产精品久久| 成人久久18免费网站麻豆| 区一区二在线观看| 俺去了亚洲欧美日韩| 成人偷拍自拍| 日本精品www| 亚洲欧洲日产国产综合网| 精品久久人妻av中文字幕| 性色av一区二区三区在线观看| 亚洲欧洲色图| 久久婷婷中文字幕| 午夜精品免费在线| 成年人在线视频| 成人自拍视频网站| 日本系列欧美系列| 国产亚洲第一页| 国产亚洲精品久久久久久777| 亚洲高清影院| 欧美 日韩 国产一区| 18成人在线观看| 涩涩视频在线观看免费| 91免费观看网站| 久久一本综合频道| 激情综合五月网| 深夜福利一区二区| 久久综合社区| 国产福利精品一区二区三区| 欧美午夜丰满在线18影院| 欧美成人精品一区二区男人看| 国产伦精品一区二区三区高清| 日本不卡在线视频| 久久精品视频久久| www.日韩视频| 亚洲另类av| 国产伦理在线观看|