色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Buck2源碼深度解析:用Rust重構(gòu)的增量構(gòu)建引擎架構(gòu)與落地實(shí)踐

Buck2源碼深度解析:用Rust重構(gòu)的增量構(gòu)建引擎架構(gòu)與落地實(shí)踐 2023年我把Buck2的源碼從GitHub拉下來(lái)的時(shí)候第一反應(yīng)是Meta真敢把一個(gè)每天支撐幾萬(wàn)開發(fā)者提交的內(nèi)部構(gòu)建系統(tǒng)直接開源。第二反應(yīng)才是這代碼結(jié)構(gòu)比想象中干凈太多。作為一個(gè)長(zhǎng)期跟Bazel、GN、CMake、sbt這些構(gòu)建系統(tǒng)打交道的工程師我一直在等一個(gè)真正“從底層設(shè)計(jì)就面向monorepo和遠(yuǎn)端執(zhí)行”的開源方案。Buck2的出現(xiàn)基本把構(gòu)建系統(tǒng)這潭水?dāng)嚮盍恕_@篇東西我不會(huì)去復(fù)述官方文檔也不會(huì)教你寫B(tài)UCK文件而是做一次“源碼視角”的盡調(diào)Buck2的架構(gòu)到底怎么分層、核心執(zhí)行模型長(zhǎng)什么樣、增量計(jì)算和緩存是怎么用Rust做到的、企業(yè)級(jí)的坑在哪里。如果你正在做構(gòu)建系統(tǒng)選型或者想在內(nèi)部推一套高性能跨語(yǔ)言構(gòu)建方案這篇文章應(yīng)該能幫你在幾個(gè)小時(shí)之內(nèi)把Buck2的骨架摸清楚。1. 為什么一個(gè)構(gòu)建引擎值得逐行看源碼構(gòu)建系統(tǒng)在多數(shù)技術(shù)團(tuán)隊(duì)眼里就是“裝好后沒人再碰的底層設(shè)施”。可一旦工程規(guī)模上來(lái)問(wèn)題就會(huì)變得非?,F(xiàn)實(shí)全量構(gòu)建要半小時(shí)以上、增量構(gòu)建失效頻繁、語(yǔ)言生態(tài)各搞一套、CI里跑一次流水線貴得離譜。這時(shí)候你會(huì)發(fā)現(xiàn)構(gòu)建引擎的選擇直接決定研發(fā)效率天花板。而Buck2不是又一個(gè)封裝腳本它是一個(gè)正經(jīng)的操作系統(tǒng)級(jí)“調(diào)度器”既要管進(jìn)程、管緩存、管網(wǎng)絡(luò)通信還要設(shè)計(jì)一套自己的增量計(jì)算模型。1.1 先搞清楚Buck2在解決什么Meta內(nèi)部之前的構(gòu)建系統(tǒng)叫Buck1是Java寫的設(shè)計(jì)思路借鑒了Bazel的前身Blaze。Buck1在Facebook大規(guī)模使用很多年后暴露出幾個(gè)挺棘手的問(wèn)題并發(fā)模型老化、緩存失效邏輯不夠精確、對(duì)跨語(yǔ)言項(xiàng)目支持不夠平滑。與其繼續(xù)修修補(bǔ)補(bǔ)Meta選擇用Rust從零寫一個(gè)Buck2。這里面的關(guān)鍵判斷是構(gòu)建系統(tǒng)本身就是一個(gè)“高頻并發(fā)、強(qiáng)緩存、狀態(tài)復(fù)雜”的系統(tǒng)軟件非常適合Rust這種能手動(dòng)控制內(nèi)存又不犧牲性能的語(yǔ)言。源碼里可以清楚看到這個(gè)目標(biāo)Buck2不是簡(jiǎn)單把“編譯命令”串起來(lái)而是把所有構(gòu)建任務(wù)抽象成可計(jì)算、可緩存、可分布執(zhí)行的“動(dòng)作”。在一個(gè)大型repo里你可以同時(shí)跑C、Python、Rust、TypeScript的構(gòu)建任務(wù)它們共享一套底層的緩存和調(diào)度機(jī)制。這才是“跨語(yǔ)言構(gòu)建引擎”的真正含義而不是提供一個(gè)能調(diào)用各種編譯器的腳本入口。1.2 與Bazel的本質(zhì)差異你可能會(huì)問(wèn)Bazel不也是干這個(gè)的嗎從用戶角度看Buck2和Bazel確實(shí)長(zhǎng)得像都是聲明式構(gòu)建規(guī)則、都有遠(yuǎn)端執(zhí)行協(xié)議、都用Starlark做擴(kuò)展語(yǔ)言。但源碼層面有一個(gè)非常核心的區(qū)別Buck2把“動(dòng)態(tài)依賴”作為一等公民。傳統(tǒng)構(gòu)建系統(tǒng)的靜態(tài)圖是需要提前把每個(gè)目標(biāo)的所有依賴聲明清楚Buck2則允許在執(zhí)行過(guò)程中根據(jù)中間結(jié)果繼續(xù)發(fā)現(xiàn)新的依賴。這個(gè)能力在處理“生成代碼再編譯”這類場(chǎng)景時(shí)極有價(jià)值。Bazel也有dynamic dependencies但支持度沒有Buck2這樣深入底層。DICE就是為這種動(dòng)態(tài)圖計(jì)算而生的后面我會(huì)專門拆DICE的實(shí)現(xiàn)思路。2. 頂層架構(gòu)從客戶端到后臺(tái)守護(hù)進(jìn)程很多人在用Buck2時(shí)會(huì)覺得它好快其實(shí)一部分原因是它不是一條命令跑完就結(jié)束而是有一個(gè)常駐后臺(tái)進(jìn)程類似開發(fā)服務(wù)器。你敲下buck2 build的時(shí)候?qū)嶋H是向這個(gè)后臺(tái)進(jìn)程發(fā)起一次RPC請(qǐng)求。這樣做的好處是解析過(guò)的BUCK文件、緩存的計(jì)算結(jié)果、做過(guò)指紋分析的文件狀態(tài)都能留在內(nèi)存里下一次構(gòu)建省掉大量冷啟動(dòng)開銷。2.1 客戶端、服務(wù)端和交互協(xié)議在Buck2源碼里倉(cāng)庫(kù)被劃分成多個(gè)crate其中最外層的是buck2_client和buck2_server。buck2_client負(fù)責(zé)命令行參數(shù)解析、啟動(dòng)后臺(tái)進(jìn)程、建立連接和整理用戶輸出buck2_server則是真正的構(gòu)建引擎后端它管理所有構(gòu)建狀態(tài)、執(zhí)行計(jì)算圖、調(diào)度遠(yuǎn)程執(zhí)行。二者之間的通信協(xié)議不是純文本JSON而是用protobuf定義的一套結(jié)構(gòu)化RPC。這樣做的好處是不同語(yǔ)言寫的客戶端也可以方便對(duì)接比如編輯器插件可以只調(diào)這些接口不需要直接和構(gòu)建內(nèi)核打交道。我第一次看到這個(gè)架構(gòu)時(shí)想到的是這不就是一個(gè)“構(gòu)建操作系統(tǒng)”嗎它的后臺(tái)服務(wù)管理內(nèi)存狀態(tài)和并發(fā)任務(wù)客戶端只是薄薄的一層翻譯殼。如果你是做CI集成的最要緊的是理解這個(gè)進(jìn)程模型——每次構(gòu)建都別簡(jiǎn)單用命令行加參數(shù)而是考慮復(fù)用同一個(gè)服務(wù)進(jìn)程或者至少要知道后臺(tái)進(jìn)程的資源占用和失效策略。2.2 DICE增量計(jì)算引擎是絕對(duì)核心如果說(shuō)Buck2是一臺(tái)汽車DICEDynamic Incremental Computation Engine就是它的發(fā)動(dòng)機(jī)。在源碼里dice這個(gè)crate不是一個(gè)輔助模塊它幾乎貫穿所有構(gòu)建階段。DICE的核心是“帶依賴追蹤的可緩存計(jì)算單元”你定義一些計(jì)算任務(wù)每個(gè)任務(wù)可以聲明它依賴哪些輸入DICE會(huì)記錄任務(wù)的結(jié)果和依賴關(guān)系當(dāng)輸入變化時(shí)DICE只重跑受影響的任務(wù)其他結(jié)果直接從緩存里拿。這個(gè)思路寫起來(lái)不復(fù)雜復(fù)雜的是在并發(fā)環(huán)境下做精確失效。Buck2的做法是給每個(gè)計(jì)算單元一個(gè)抽象的Key所有輸入都通過(guò)Key來(lái)訪問(wèn)底層再配合文件系統(tǒng)的change monitor和內(nèi)容hash做失效判斷。DICE還有事務(wù)機(jī)制可以把一組計(jì)算包裝成一個(gè)事務(wù)事務(wù)內(nèi)要么全部成功提交要么整體回滾這樣不會(huì)出現(xiàn)緩存里殘存半截狀態(tài)的臟數(shù)據(jù)。源碼里對(duì)事務(wù)邊界的處理非常細(xì)致這也是它比很多自研構(gòu)建緩存更穩(wěn)的核心原因。2.3 構(gòu)建階段解析、配置、分析、執(zhí)行Buck2的構(gòu)建流程可以分為幾個(gè)大的階段你可以在buck2_build_api這個(gè)crate里找到對(duì)應(yīng)的核心數(shù)據(jù)結(jié)構(gòu)。解析階段讀取BUCK文件用Starlark解釋器生成“目標(biāo)圖”的原始信息。配置階段把目標(biāo)適配到特定平臺(tái)和構(gòu)建模式比如Debug還是ReleaseAndroid還是iOS。分析階段展開規(guī)則生成具體的動(dòng)作列表和輸出聲明這個(gè)階段也是DICE介入最深的地方。執(zhí)行階段把動(dòng)作調(diào)度到本地或遠(yuǎn)端執(zhí)行校驗(yàn)輸出指紋最后產(chǎn)生最終產(chǎn)物。這四個(gè)階段不是嚴(yán)格串行的很多目標(biāo)可以在不同階段之間交叉推進(jìn)。源碼里大量使用了Future和async配合Rust的tokio運(yùn)行時(shí)可以讓不同目標(biāo)的解析、分析和執(zhí)行重疊進(jìn)行。這種設(shè)計(jì)讓Buck2在大型依賴圖上能壓榨出額外并發(fā)度也是它性能較好的原因之一。3. 核心源碼拆解緩存、指紋和遠(yuǎn)端執(zhí)行盡調(diào)一份源碼最重要的不是看它寫了多少注釋而是看它的核心模塊怎么處理邊界條件。Buck2里最值得花時(shí)間讀的東西第一是DICE的緩存與失效邏輯第二是指紋計(jì)算第三是遠(yuǎn)端執(zhí)行器的抽象。3.1 DICE的緩存如何做到精確失效很多構(gòu)建系統(tǒng)用“文件修改時(shí)間”判斷文件是否變化這在大型倉(cāng)庫(kù)里極不可靠。Buck2默認(rèn)會(huì)記錄文件的digest哈希按下map的key value變化來(lái)做失效。DICE在底層維護(hù)了類似“內(nèi)存狀態(tài)樹”的結(jié)構(gòu)每個(gè)計(jì)算Key對(duì)應(yīng)一個(gè)狀態(tài)狀態(tài)里存的是依賴版本和結(jié)果。當(dāng)某個(gè)依賴文件變更時(shí)變更事件會(huì)向上傳播所有依賴它的計(jì)算節(jié)點(diǎn)都可能失效。源碼里有個(gè)很關(guān)鍵的做法DICE不會(huì)立刻把所有失效任務(wù)全部重算而是等到某個(gè)下游任務(wù)真正需要這個(gè)結(jié)果時(shí)才懶加載式地計(jì)算。這個(gè)懶加載機(jī)制避免了構(gòu)建時(shí)“炸鍋式”重算只算真正被需要的部分。你在讀dice crate源碼時(shí)會(huì)看到大量關(guān)于“dirty/clean”狀態(tài)流轉(zhuǎn)的邏輯這就是Buck2增量構(gòu)建的核心價(jià)值。3.2 指紋Fingerprint與內(nèi)容尋址的設(shè)計(jì)動(dòng)作執(zhí)行完以后Buck2怎么知道這次執(zhí)行結(jié)果是不是和上次一樣答案是指紋機(jī)制。在源碼中動(dòng)作會(huì)聲明自己的輸入、環(huán)境變量、命令行參數(shù)等信息Buck2把它們組合成一個(gè)確定性指紋。執(zhí)行前它會(huì)先查緩存里有相同指紋的歷史結(jié)果如果有就直接復(fù)用輸出文件如果沒有才真正啟動(dòng)進(jìn)程去跑。這里有一個(gè)隱含但極重要的點(diǎn)對(duì)于“確定性”的要求非常嚴(yán)格。如果某個(gè)工具輸出了帶隨機(jī)時(shí)間戳的文件或者通過(guò)絕對(duì)路徑訪問(wèn)了未聲明的輸入指紋機(jī)制就會(huì)失效緩存命中率大幅下降。我在實(shí)戰(zhàn)中遇到過(guò)很多團(tuán)隊(duì)把Buck2接入復(fù)雜項(xiàng)目后發(fā)現(xiàn)構(gòu)建總是全量重新執(zhí)行最后定位到是代碼生成腳本讀了環(huán)境變量但沒有在action里聲明這個(gè)變量。解決方式就是所有環(huán)境變量依賴都要顯式列出來(lái)并且所有非確定性的輸出都要在動(dòng)作后做清洗。3.3 遠(yuǎn)端執(zhí)行不是簡(jiǎn)單的“把命令扔到別的機(jī)器”Buck2支持REAPIRemote Execution API這意味著你可以接上Bazel那套遠(yuǎn)端執(zhí)行服務(wù)比如Buildbarn、BuildGrid也可以通過(guò)Meta內(nèi)部的一些基礎(chǔ)設(shè)施。源碼里把遠(yuǎn)端執(zhí)行抽象成一個(gè)“ActionRunner”接口既能跑本地進(jìn)程也能把a(bǔ)ction發(fā)給遠(yuǎn)端集群。真正有意思的是它如何保證遠(yuǎn)端執(zhí)行的結(jié)果和本地一致。Buck2會(huì)要求動(dòng)作聲明“輸出目錄”和“輸出文件”遠(yuǎn)端執(zhí)行完成后后臺(tái)會(huì)把這些輸出文件流式傳回并重新校驗(yàn)內(nèi)容哈希。如果校驗(yàn)不一致這次執(zhí)行會(huì)被標(biāo)記失敗而不是默默吞掉。源碼層面還有“mingle”和“write”任務(wù)來(lái)處理大輸出文件的流式傳輸這個(gè)設(shè)計(jì)能避免把幾十GB的產(chǎn)物一次性塞進(jìn)內(nèi)存。3.4 跨語(yǔ)言支持靠的是規(guī)則和動(dòng)作抽象跨語(yǔ)言構(gòu)建的難點(diǎn)不是“能調(diào)用編譯器”而是“讓不同語(yǔ)言共享一套依賴調(diào)度和產(chǎn)物緩存”。Buck2的做法是把每種語(yǔ)言封裝成一個(gè)個(gè)規(guī)則rule規(guī)則內(nèi)部生成標(biāo)準(zhǔn)化的“動(dòng)作”。action就像一個(gè)大統(tǒng)一接口描述“要運(yùn)行什么命令、讀出哪些文件、寫出哪些文件”。底層緩存和執(zhí)行系統(tǒng)只關(guān)心action不關(guān)心它是來(lái)自C還是Rust規(guī)則。在源碼里buck2_build_api的action模塊是一個(gè)非常干凈的抽象層。只要某個(gè)語(yǔ)言前端最終能將編譯過(guò)程拆解成一組action它就能自動(dòng)獲得緩存、遠(yuǎn)端執(zhí)行、并發(fā)調(diào)度、失敗重試這套能力。所以你在用Buck2時(shí)說(shuō)“支持Python”并不是因?yàn)橐鎯?nèi)部硬編碼了Python邏輯而是提供了一套Python rule實(shí)現(xiàn)。這個(gè)可插拔架構(gòu)是Buck2跨語(yǔ)言能力的關(guān)鍵也是源碼里最有學(xué)習(xí)價(jià)值的部分。4. 源碼實(shí)證一個(gè)構(gòu)建請(qǐng)求從按下回車到產(chǎn)物輸出紙上談兵沒有意思我直接把一條buck2 build命令的流轉(zhuǎn)過(guò)程在源碼層面上串一下。這一節(jié)你就當(dāng)剛才打開了一個(gè)正在跑Buck2的倉(cāng)庫(kù)我們逐步看它內(nèi)部做了什么。4.1 命令行入口和后臺(tái)進(jìn)程拉起你在終端輸入buck2 build //foo:bar。buck2_client會(huì)先解析參數(shù)檢查.buckconfig和buck2.toml等配置文件。如果檢測(cè)到當(dāng)前項(xiàng)目根目錄下已經(jīng)有buck2 daemon在運(yùn)行它會(huì)直接通過(guò)Unix socket或TCP發(fā)送請(qǐng)求否則會(huì)啟動(dòng)一個(gè)新的daemon進(jìn)程。這個(gè)daemon就是buck2_server啟動(dòng)后它會(huì)加載一個(gè)“project context”包含項(xiàng)目根、配置片段、文件系統(tǒng)監(jiān)聽器。源碼里daemon的生命周期管理寫得很細(xì)包括空閑多少秒自動(dòng)退出、日志怎么輪轉(zhuǎn)、異常崩潰時(shí)怎么恢復(fù)。企業(yè)在做CI時(shí)最好顯式控制daemon的啟動(dòng)和回收不要讓每個(gè)job各起一個(gè)daemon否則內(nèi)存會(huì)被拖垮。4.2 目標(biāo)解析和BUCK文件處理然后服務(wù)端根據(jù)目標(biāo)模式//foo:bar去定位到foo/BUCK文件使用buck2_interpreter crate內(nèi)置的Starlark解釋器執(zhí)行這個(gè)文件。這個(gè)解釋器不是簡(jiǎn)單調(diào)用某個(gè)Python運(yùn)行時(shí)而是用Rust重實(shí)現(xiàn)的一個(gè)Starlark子集。因?yàn)锽UCK文件是聲明式定義目標(biāo)所以執(zhí)行BUCK文件不會(huì)產(chǎn)生任意副作用只會(huì)向一個(gè)包里注冊(cè)規(guī)則。源碼里目標(biāo)被表示為一個(gè)TargetNode它會(huì)記錄自己的規(guī)則類型、屬性、依賴列表。依賴列表里的每一項(xiàng)都是另一個(gè)目標(biāo)或顯式的filegroup。Buck2對(duì)循環(huán)依賴的檢測(cè)也在這一層它會(huì)在構(gòu)建圖構(gòu)建期間就報(bào)錯(cuò)而不是等執(zhí)行到一半才崩。我實(shí)際遇到過(guò)一些項(xiàng)目會(huì)通過(guò)動(dòng)態(tài)讀文件內(nèi)容來(lái)改變依賴這在Buck2里也能做但會(huì)加大指紋失效的復(fù)雜度能不用盡量不用。4.3 DICE事務(wù)和計(jì)算觸發(fā)接下來(lái)Buck2進(jìn)入了分析和執(zhí)行階段。這時(shí)會(huì)通過(guò)DICE發(fā)起一個(gè)事務(wù)請(qǐng)求目標(biāo)//foo:bar的“分析結(jié)果”。這個(gè)事務(wù)會(huì)從這個(gè)目標(biāo)開始向下展開依賴圖。對(duì)每一個(gè)目標(biāo)DICE會(huì)先看緩存里有沒有現(xiàn)成結(jié)果如果沒有它才去調(diào)用對(duì)應(yīng)的規(guī)則實(shí)現(xiàn)生成動(dòng)作。這里我特別要說(shuō)一下Buck2支持動(dòng)態(tài)依賴所以在分析階段它可能發(fā)現(xiàn)某個(gè)動(dòng)作的輸出會(huì)成為另一個(gè)動(dòng)作的輸入。這個(gè)“在運(yùn)行時(shí)發(fā)現(xiàn)依賴”的能力是DICE事務(wù)內(nèi)不斷擴(kuò)展圖的關(guān)鍵。源碼里有一個(gè)API叫DynamicLambda之類的機(jī)制允許規(guī)則在分析時(shí)根據(jù)中間結(jié)果返回新的目標(biāo)列表。這種設(shè)計(jì)對(duì)代碼生成場(chǎng)景非常友好但也意味著如果動(dòng)態(tài)依賴邏輯寫得太復(fù)雜調(diào)試起來(lái)會(huì)比較燒腦。4.4 動(dòng)作執(zhí)行和產(chǎn)物校驗(yàn)?zāi)繕?biāo)的分析結(jié)果最終會(huì)產(chǎn)生一個(gè)Action列表。Buck2會(huì)把這些action提交給執(zhí)行調(diào)度器。如果遠(yuǎn)端執(zhí)行開啟調(diào)度器會(huì)優(yōu)先發(fā)往遠(yuǎn)端如果沒開啟就在本地起子進(jìn)程。一個(gè)action的執(zhí)行會(huì)先做一次本地緩存查詢指紋匹配就直接log hit否則創(chuàng)建隔離的臨時(shí)執(zhí)行目錄跑命令收集輸出文件計(jì)算輸出指紋然后把結(jié)果寫回cas緩存。這個(gè)階段源碼里最需要注意的是“輸出文件聲明”的嚴(yán)格性。Buck2在做產(chǎn)物校驗(yàn)時(shí)會(huì)檢查動(dòng)作聲明了哪些輸出文件如果動(dòng)作偷偷寫到聲明之外的文件這些文件通常會(huì)被忽略或?qū)е戮彺娌灰恢?。我在調(diào)研過(guò)程中看到很多項(xiàng)目就因?yàn)槟硞€(gè)腳本在臨時(shí)目錄里生成了額外文件導(dǎo)致緩存命中率一直上不去。解決辦法是打開Buck2的日志看action的“output”列表把所有實(shí)際生成的文件都補(bǔ)充到out參數(shù)里。5. 企業(yè)級(jí)落地配置調(diào)優(yōu)、監(jiān)控與踩坑實(shí)錄源碼讀得再好最終還是要看能不能在企業(yè)里跑起來(lái)。這一部分是我在調(diào)研和試用過(guò)程中踩過(guò)的坑以及總結(jié)出來(lái)的可操作建議希望在選型時(shí)能幫你少走彎路。5.1 典型問(wèn)題與排查技巧速查現(xiàn)象可能原因排查/解決辦法構(gòu)建頻繁全量執(zhí)行action未完整聲明輸入文件/環(huán)境變量查看日志中action的fingerprint字段對(duì)比兩次構(gòu)建的指紋差異遠(yuǎn)端執(zhí)行結(jié)果和本地不一致動(dòng)作里有非確定性輸出比如時(shí)間戳在action前對(duì)時(shí)間戳白名單化或使用機(jī)器可復(fù)現(xiàn)的編譯參數(shù)后臺(tái)daemon內(nèi)存居高不下長(zhǎng)期運(yùn)行后緩存積累、日志膨脹定期主動(dòng)重啟daemon或調(diào)低daemon空閑回收時(shí)間異步動(dòng)態(tài)依賴導(dǎo)致卡死規(guī)則在動(dòng)態(tài)lambda里循環(huán)依賴檢查日志中的依賴展開棧對(duì)動(dòng)態(tài)依賴增加深度上限某些目標(biāo)總是cache miss輸出文件聲明遺漏或依賴未聲明用buck2 log打開執(zhí)行日志查看miss的fingerprint對(duì)比config平臺(tái)太多導(dǎo)致解析慢平臺(tái)配置導(dǎo)致配置階段矩陣爆炸減少統(tǒng)一配置變體盡量復(fù)用已有配置避免每目標(biāo)單獨(dú)定義新平臺(tái)這張表基本覆蓋了我見過(guò)的90%的Buck2使用問(wèn)題。核心思路永遠(yuǎn)是先看動(dòng)作指紋再看依賴聲明再看輸出聲明。指紋是最底層的事實(shí)所有緩存問(wèn)題最終都能在指紋層面找到答案。5.2 部署建議和架構(gòu)選型思考如果你要在公司內(nèi)部推廣Buck2我建議分三步走。第一步是選一條核心編譯鏈路做PoC比如一個(gè)C服務(wù)或Rust工程先讓它能通過(guò)Buck2構(gòu)建出和現(xiàn)有構(gòu)建系統(tǒng)一致的產(chǎn)物。第二步是把CI接入Buck2重點(diǎn)觀察緩存命中率、全量構(gòu)建時(shí)間、增量構(gòu)建時(shí)間以及遠(yuǎn)端執(zhí)行接入后的收益。第三步才是大規(guī)模推廣這時(shí)需要在意daemon的管理、remote cache容量、構(gòu)建日志聚合等企業(yè)級(jí)能力。Buck2的配置并不復(fù)雜核心是.buckconfig或buck2.toml里面可以配置緩存目錄、daemon超時(shí)、遠(yuǎn)端執(zhí)行地址等。我習(xí)慣把變更少、體積大的工具鏈配置放到頂層的配置里把項(xiàng)目特有的規(guī)則放到各個(gè)包下。一個(gè)容易忽略的地方是--unstable-*參數(shù)很多也有一些配置項(xiàng)在持續(xù)演進(jìn)所以你使用的版本一定要鎖定否則升級(jí)可能需要同步調(diào)整配置。5.3 源碼層面我最喜歡的設(shè)計(jì)細(xì)節(jié)最后說(shuō)兩個(gè)源碼里很有啟發(fā)的小細(xì)節(jié)它們可能不會(huì)寫進(jìn)官方博客但直接影響使用體驗(yàn)。第一件是Buck2對(duì)診斷信息的處理。構(gòu)建失敗時(shí)它會(huì)嘗試輸出“為什么失敗”的因果鏈包括失敗action的具體命令、輸出日志、指紋文件列表。這個(gè)診斷機(jī)制在源碼里做得非常深不是為了好看而是為了讓你沙里淘金時(shí)能快速定位問(wèn)題。第二件是Buck2對(duì)并發(fā)沖突的寬容度。Rust的ownership模型讓很多共享狀態(tài)不需要加鎖代碼里大量使用Arc和原子類型讓并發(fā)控制變得很清爽。如果你讀過(guò)其他JVM構(gòu)建工具的并發(fā)代碼再來(lái)看Buck2會(huì)在“爽”的同時(shí)意識(shí)到語(yǔ)言選擇對(duì)企業(yè)級(jí)軟件質(zhì)量的影響有多大。寫在最后的個(gè)人體會(huì)源碼盡調(diào)這件事最怕的就是只看了幾個(gè)模塊的名字就下結(jié)論。Buck2給我的整體感受是“架構(gòu)清晰、取舍果斷”它放棄了和Bazel完全兼容換來(lái)的是在動(dòng)態(tài)依賴和增量計(jì)算上可以走得更遠(yuǎn)它用Rust從零實(shí)現(xiàn)換來(lái)的是低層級(jí)的性能和內(nèi)存可控性。這套設(shè)計(jì)并不是萬(wàn)能藥它在中小型項(xiàng)目上的優(yōu)勢(shì)沒有大型monorepo那么明顯如果你單獨(dú)編譯一個(gè)小庫(kù)用Buck2反而顯得重但一旦項(xiàng)目規(guī)模和團(tuán)隊(duì)復(fù)雜度漲上來(lái)Buck2的價(jià)值就會(huì)快速放大。如果你后續(xù)想深入研究我會(huì)建議按這個(gè)順序讀源碼先從buck2_server的入口看起理解daemon啟動(dòng)流程然后讀dice crate里的狀態(tài)機(jī)和事務(wù)實(shí)現(xiàn)再讀buck2_build_api里的action和artifact定義最后再看buck2_interpreter里的Starlark集成。四層讀完你基本就能在別人面前用“源碼邏輯”來(lái)聊Buck2了。而我自己的體會(huì)是這種能靠源碼本身講清楚設(shè)計(jì)意圖的構(gòu)建引擎真的太稀缺了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狠狠色噜噜狠狠狠狠狠色综合久久 | 99999精品成人| 欧美色日| 精品无码久久久久久久久果冻糖心| 色综合av男人天堂| 最新精品久久蜜桃| 三级日本一区二区三区| av情色影音| 无码操逼天堂| 超碰色97| 欧美性爱在线无码| 天天躁狠狠躁av| 日本天天干天天操一区| 久久久久久久人妻| 91综合中文字幕| 日本污ww视频网站| 日产精品久久久一区二区| 色婷婷视频| 美女的肌被草喷水视频| 人人做,人人操,人人摸| 2019AV天堂| 无码人妻精品酒店| 中文字幕啊啊啊在线观看视频| 亚洲天堂久| 午夜一区二区三区国产| 神马影院午夜福利久久久| 国产极品粉嫩馒头一线天av| 亭亭丁香激情| 日本性交操一区二区不卡系列| 中文字幕 一区二区 亚洲无码| 国产精品粉嫩福利在线| 青椒国产97在线熟女| 色第一页| 韩日性爱av| 日本999精品| 日韩免费福利在线观看| 日本大香蕉| 色色香蕉| 久草毛片| 久久久久成人蜜桃精品| 欧美少妇色图| 中文字幕在线观看AV| 日本成熟少妇A∨网站| 69AV女优男人的天堂| 91人妻在线视频| 91色噜噜狠狠| 26UUU欧美激情一区二区| 日日黄色三级网站| 免费一级欧美片片线观看| 久啪视频| 欧美综合站| 国产操逼网站亚洲一级黄色| 九一综合网| 日韩偷拍一区二区三区| 老司机免费视频在线91| 天天躁日日躁AAA片李宗瑞| 五月天精品| 成人精品在线| 久久久久久十| 亚州色站 日韩电影| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 日韩精品操少妇| 秋霞影音一区二区三区| 九九精品网| 日韩pv中文| 操操吧亚洲乱伦视频| 色男人色天堂东京热| 午夜男人一级A片7777| 校园春色 欧美| 日日做夜狠狠爱欧美黑人| 中文字幕国产在线天堂| 色综合99999| 粉嫩在线一区二区懂色| 94色色电影网| 男人成人黄色视频在线观看免费下载| 啊啊啊com| 青娱乐国产精品| 97chaopengongkai| 久久久久大香青草精品综合| 日日爽夜夜爽| 免费伦费视频在线观看| 激情小说图片亚洲首页| 中文字幕黄色一起草| 2020视频1区2区3区| h无码动漫在线观看| 91日韩网站| 久久久久久夜夜夜夜夜| 国产无套粉嫩白浆在| 亚洲婷婷丁香在线| 大香蕉中文网| 欧美九九99久久精品| 无码日韩人妻av一| av激情亚洲五月天| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 九九九综合精品| 激情小说成人日本无码一| 99re免费| 亚洲激情综合另类| 不卡六六在线91| www.色婷婷| 性爱视频啪啪啪啪| av网站免费看| 亚洲在线a| 超91综合网| 国产精品爽爽va在线观看98| 伊人操你| 最近二区三区视频大全| 超碰97日韩| 狠狠躁日日躁夜夜躁A| 久久久999日本大片| 亚洲AV性爱电影| 亚洲欧美国产va在线播放频| 日本一级不卡一二区| 殴美日韩m| 激情五月天视频| 蜜桃视频成a人v在线| 神马久久久久久| 伊人网在线点播| 久久久111| 蜜色网色哟哟| 免费农村成人少妇人妻Aa一区二区视频 | 成人性爱av.com| av黄图片在线观看| 天天日天天看| 91观看 国产白丝| 国产精品69久久久久孕妇欧美 | 久久超碰爱| 青椒国产97在线熟女| 91久久久亚洲| 曰韩人妻中文字幕在线| 亚洲巨爆乳一区二区三区四季网| 久久精品一区二区三区四区五区| 丰满人妻一区二区三区免费| 91美女片在线| 男人天堂新在线| 97超碰影音| 国产精品白虎| 色鬼在线综合| 超碰夫妻97| 使劲用力艹少妇视频一区二区| 熟妇熟女一区二三区| 欧美99热| 亚洲中文字幕有码视频一区二区三区| 97香蕉碰碰人妻国产欧美| 无码区蜜乳| 亚洲欧洲成人在线电影| 五十路六十路七十路熟婆| 色综合国产在线观看| 激情黄色片在线观看| av亚欧| 日韩日本欧美在线观看| AV天堂国产| 人人玩人人添人人澡免费| 日欧操屄| 探花在线免费观看视频国产一区| 色婷婷九月天天综合| 国内毛片无码一级毛片| 丁香五月av| 亚洲经典啪啪| 亚洲成人在线播放| AV 少妇 人妻 偷拍| 99热精品在线观看| 超碰 另类 欧美 | 91蜜臀在线久久久久| 麻豆久久视频在线地址| 成人精品视频一区二区| 91亚.色| 激情另类激情| 日本性一区| 伊人性在线视频| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 少妇蹲下露出大唇5| 五月婷亚洲精品天堂| 九九精品无码专区免费| 午夜寂寞欧美| 久久久9品一区二区三区| 精品人妻一区二区免费蜜桃| 91在线色| 91高清欧美| 91亚洲在线| 富女玩鸭子一级毛片| 青娱乐欧美激情一区二区| 操我无码| 蜜桃精久三区| 美女黄码视频午夜| 无码78| 91精品久久久| 九九九九久久久| 午夜呻吟欧美| 日韩电影免费网站麻豆视频| 五月天日日操夜夜操| 日韩三级伦理中文字幕| 日韩AV一起草| 久久综合精品一区二区三区| 97天天插| JIZZJIZZ亚洲女人被躁| 久久免费精彩视频| 国产吹潮女在线观看| 亚洲图片第一页| 91在线视频免费播放| 成功精品影院| 男人天堂免费| 国产第12页| 韩国午夜理伦三级好看| 天天综合有色网| 在线播放中文字幕| 国产强奸乱伦xd| 97人人超| 天天碰久久入| 在线人人人人人人精品超| 十八禁视频网站| 九九成人精品| 国产肏逼网站| 神马精品视频| www.人人摸在线视频| 秋霞一级A片黄色视频| 五月婷婷深深爱| 日韩精品电影| 日韩激情无码影院| 色97| 91欧美少妇| 久久成年片色大黄全免费网站| 免费毛片在线播放| 天天射夜夜| 老女人综合网| 99久久99九九99九九九| 激情综合网一盗摄| 日韩免费在线视频观看| 精彩视频日韩| 久久超碰天天| 欧美黄色大片在线观看| 好爽,再快点啊哈嗯嗯嗯嗯| 天天射天天色成人| 亚洲综合色网| 一二三区视频在线观看| 天天操天天舔| 九九九不卡| 97人妻免费中文字幕| 亚洲91亚洲| 久久精品国产亚洲粉嫩| 一区二区三区四区色图| 精品国产乱码久久久| 曰韩av中文字幕专区| 天天操天天7| 乱伦一区二区三区‘| 亚洲欧美在线观看2021| 日韩成人人妻网站| 久久精品中文字幕观看| 亚洲国产综合久久久性感熟妇| 伊人嫩草| 婷婷色中文字幕| 美熟女逼导航AV操逼| 亚洲精品一二区| 日韩视频小说在线观看 | 美女91色黄18| 国产区性爱在线视频秋霞豆| #NAME?| 亚洲一区二区三区春色| 精品一久久久| 亚洲va有码在线天堂| 九区国产| 青椒国产97在线熟女| 天美传媒av在线| 国产日逼视频| #NAME?| 久久久久成人亚洲国产| 日本97久久| 99操碰| 亚洲欧美综合图片| 人妻天堂综合网| 亚洲欧美人妻| 91美女在线视频| 免费人成在线观看网站品爱网| 亚洲色香| 情侣开房子拍 日韩无码 女的很漂亮| 欧美 综合 亚洲| 国产精品自拍欧美在线| 青草成人免费视频一COm| 欧美精品在线观看| 亚洲毛片一级带毛片基地| 十八禁电影伊人网| 婷婷五月天补不补| 综合国产影视三级| 97网站在线观看| 丁香激情网| 婷婷久月| 麻豆一区二区三区精品| 久久精彩视频| 亚洲精品xxx| 性感美女91影视| 日本一区二区三区精品| 日韩乱伦影音先锋| 日日夜夜精品视频| 9ⅰ久久久天天| 99热精品在线| 超碰人人操97碰| 九9热伊人| 亚洲欧美大| 天天谢天天干| 大色综合| 久久久久久裸体| 91丝袜美女国产| 日韩激情毛片一级久久久| 中文字幕一区二区三区四五区| ss久久| 8050午夜少妇无码| 国产精品麻豆成人av| 国产97在线播放| julia在线观看久久| 久久三| 国产在线观看一区二区三区| 亚码激情| 福利色色| 亚洲国产精品无码AV久久| 亚洲男人的天堂在线看| 成人丁香五月| 国产原创剧情在线丝袜| 温婉少妇玩3p| 国产精品高潮呻吟av久久4虎| 九九精品美女高溯喷水| AV免费在线播放一区| 放黄片放3级黄片没穿衣服| 操老熟女AV| 国产农村妇女精品一| 久久综合激情| 日韩无码精品综合久久| 偷拍精品一区二区三区| 婷婷人妻激情| 欧美97视频| 超碰人妻在线| 国产大陆天天艹| 色97欧美| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 色妇综合网| 超碰99热中文字幕| 女人爽到高潮久久久| 91在线无码精品秘 软件| 国产日韩欧美亚洲精品95| 欧美日韩插逼视频| 日本性感人妻91| 欧亚日韩中文在线| 亚洲97| 欧美日韩人妻精品一区二区三区| 丝袜天堂| 天天影视综合网欧美精品| 丁香六月激情综合| 91啪啪| 91丨九色丨东北熟女| 狠狠操官网| 国产辣妈在线视频福利| 国产精品直播在线观看直播| 91bbb| 97久久久| 操婢日韩| 无码高清专| 国产网红精品| 无码伊人久久大杳蕉中文无码| 美女91网| 麻豆色99999| 无码人妻毛片丰满熟妇精品区| 97爱碰| 久热99999| 99re在线视频国产| 97久久久网站| 天天操天天7| 国产乱不卡| 肉丝中文无码高清| 嗯啊啊啊轻点视频 | 精品人妻一区二区三区不卡断| 97中文字幕一区| 97久久超碰国产网站| 熟女自慰久久久| 亚洲无码99| 野狼激情网| av资源在线播放天堂| 午夜男人一级A片7777| 操逼1区| 国产福利精品最新在线| 大香蕉丝袜一级片| 久久手机好看网站| 97 亚洲 日韩 欧美 在线| 欧美黑人猛交春色影视大全| 天天影视网综合少妇| 99无码| 在线 亚洲 网爆 自拍| 欧美久久草熟女| 午夜福利区| 欧美日本视频一区| 91久久婷婷| 美女久久久久久久久久久| A片大香蕉在线| 午夜啪啪片| 26uuu国产免费观看| 淫荡熟女乱伦网| 大伊香蕉在线视频免费| 国产不卡片| 老女人老91妇女老热女| 9Ⅰ老熟女| 国产亚洲精品A在线观看下载| 日韩A优精品在线观看| 99ri视频| 色综合久久夜色精品国产天堂| 校园春色美腿丝袜| 黄色AV免费| 婷婷五月天激情网| 婷婷激情五月综合| 国产黄a三级三级三级av在线看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 蜜臀久久在线视频| 好湿好紧视频| 一级婬片120分钟试看| 欧美1区二区三区公司| 日本在线播放不卡一区| 久久久婷婷| 亚洲狠狠入| 7777奇米影视久久| 日本一级黄色电影| 精品人人| 超碰吊日色| 国产日韩色综合| 国产亚洲99久久精品| 少妇与黑人高潮在线| 黑人中出21连凳花野真衣| 欧美中文狠| 啊啊啊好多水| 日本精品第一视频在'| 99啪啪视频| 成人性交午夜免费片| 黄色电影观看久久9| 天天综合AV| 色九色久| 亚洲第一狼人丝袜美女另类| 日韩AV一区二区三区四四| 青青草狠狠撸| 1人人看人人摸人人操| www.婷婷六月天| 美女丝袜激情小说| 曰韩精品视频一区二区| 亚洲一二三精品久久网| 久一区久久蜜桃| 日韩三级天堂在线观看| 中文字幕少妇色 | 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 十八禁av无码免费网站APP| 性感美女91影视| 国产精品夜夜夜| 麻豆人妻少妇在线免费观看| 91国模| 日韩性爱播放| 精品久久久久久久久久久久| 人妻天天爽天天爽三区| 精品精品精品| 久久久久久久| 亚洲国产第一页综合视频| 日本999精品| 久久精品国产AV一区二区三区| 花野真衣| 中文字幕免费在线观看| 精品久久人妻成人网| 天天摸天天舔天天操| 欧美精品日韩久久久九| 亚洲国成人情色好看电影| 2019天天干| 99久久婷婷国产综合精品草原| 亚洲玖玖爱| 欧美做爰无码A片视频| 1024手机看片欧美日韩| 日韩av不卡在线看| 日本97久久久精品| av强奸乱轮| 一区,二区,三区视频| 日本精品网站在线中文| 啊啊啊好大好湿| www.91逼逼.com| 亚洲十八禁止| 偷窥自拍A片| 久久婷婷苹果| 亚洲日产专区| 国产精品96| 久久精品国产亚洲AV片多多| 涩亚洲欧洲| 97操操| 啊啊啊爽爽| 亚洲精品819| 性夜影院爽黄A爽免费动漫| 日韩AV一区二区三区三州三州| 日日干天天干夜夜爽| 岛国小电影| 成人av影院在线观看| 亚洲的天堂网| 99久久婷婷| 97视频免费在线观看| 中文伊人大香蕉视频| 无码一区免费在线不卡| 欧美日本天堂| 欧美刺激色黄片免费看| 五月天亚洲色图| 国产av青草| 日韩欧美aⅴ综合网站发布| 亚洲女人毛茸茸91| 射 色综合| 国产黄色影片在线观看| 久9爱精品| 欧美亚男人的天堂| 伊人久久大香线蕉无码| 97精品一区二区视频在线观看| 一二三区在线| 一区二区三区探花在线观看| 91A欧美电影网站| 日韩精品人妻中文字幕有码午| 欧美日韩免费性爱| 加勒比aⅴ| 少妇500双飞99| 一本一道vs波多野结衣| 东北操逼| 久久精精区一区二区一蜜桃一区二区| 天堂俺去俺来也www久久婷婷| 久久久555| 亚洲天堂情色| 大香蕉123| ji熟女.com| 熟妇色99| 国产女人9999| 欧美三级一级| 97碰在线视频| 人人操人人插 - 百度 - 百度| 亚州欧美综合| 亚洲色图加勒比| 国产激情片在线观看| 高清国产无码av| 中文欧丝袜诱惑| 久久精品视频久久久| 久久东京伊人一本到鬼色| 日韩九九九| 东京热大香焦| 久久av网| 欧美熟爽综合| 亚洲欧洲精品视频发布| 久久AV无码AV| 91亚洲欧美激情| 撸撸成人在线视频| 国产欧美日韩女同性恋ww喷水精品| 日韩乱伦影音先锋| 少妇高潮流水av免费| 久操免费观看| 在线 欧美 亚洲| 欧美色日本| 亚洲另类久操网| 天天爽人人综合免费7799| 日韩强奸av| 久久有码视频| 丝袜天堂网| 青青草色插素人| 黄色乱论网站| 台湾佬激情综合| 国产伦精品一区二区三区在线观 | 香蕉久久AⅤ...| 欧美在线91| 91狠狠综合久久| 天天综合站| 久久超碰免费的| 欧美性爱五月天| 亚洲情色 无码专区| 99国产精品免费| 九九九久千久久激情蜜桃在线看 | 久久成年精品| 欧美亚综合色图| 99久久这里只有精品| 天天色综合图片| 99精品视频在线观看| 在线观看色视频| 日韩无码黄色片| 一本色道综合久久欧美| 蜜臀一区二区三区在线| 视频一区二区免费在线| 久久超碰国产一区二区三区| 人人弄人人摸| 午夜性刺激视频免费观看| 中文视频在线观看| 亚洲男人的天堂va亚洲男人社| 国产精品另类一区大香蕉| 骚人妻少妇视频| 99re只有精品| 嗯,啊。舔我逼| 熟妇激情| 国产三级中文字幕粉嫩| 农村少妇久久久久久久| 欧美综合亚洲综合| 麻豆三极片| 一级AV性爱| 999九九九九国产动| 国产v亚洲v日韩v欧美v片另类| 国产高清视频无码在线| 亚洲97在线观看| 欧美 亚洲 另类 综合| 欧美亚男人的天堂| 日本 情色 1区| 婷婷国产精品九区| 亚洲激情 欧美色图| 亚欧中文字幕在线视频| 久久婷婷欧美| 五十路熟女,国产欧美精品区一区二区三区| 蜜臀av网址| 欧美伊人电影| 国产精品com| 成人av福利在线观看| 日本免费一级AAA大片器| 国产精品久久久久久久毛片1| 蜜桃无码AV一区二区| 亚洲一区二区三区四区视频| 人妻熟女字幕一区二区| 东北女人av| 久久久∴| 日本黄色精品| 欧美亚洲| 欧美性爱18观看| 男人高清无码一区二区| 日本午夜久久电影| 亚州成人a∨| 国产精品久久久久999| 九月伊人中文字幕| 天天干天天燥| 天天天天操| 美女淫穴| 国产精品一区二区三区在线| 国产精品无码成人精品| 日韩激情中文字幕有码| 国产日本熟女顶级一区二区三区视频| 久草资源在线视频官方总站日韩丝袜美腿 | 操熟女91| 亚洲欧洲综合成人av一区| 综合操逼| juliaann精品熟女一区| 久久原创中文| 欧美福利视频啊啊啊啊| 婷婷伊人| 人妻五十路在线| 精品免费囯产一区二区三区| 国产野战露脸在线播放| 大香蕉97久久| 日韩精品一区,二区 九九...老司机| 97碰碰色| 亚洲第一无码播放立川理惠| 色九九九| 蜜臀视频网站| 国产精品免费视频人成| 一区二区 日韩 欧美 国产 传媒| 亚洲欧美综合图片| 亚洲黄色a级片| 婷婷五月天久久精品视频一区二区三区| 97久久精品不卡| 欧美伊人久久综合网| 亚洲性爱高潮影院| 亚洲,欧美,综合网| 成在线人在线观看视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 九九色综合| 亚洲天堂电影网| 国产精品无码成人精品| 中文字幕高清20页视频| 四季av一区二区凹凸精品小说| 综合国产影视三级| 神马福利久草| 亚洲资源一区| 久久精品国产亚洲AV成人直播| 亚洲综合小视频小说在线观看| 好吊色综合| www.激情| 欧美日韩人妻精品一区二区三区| AV不卡在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 丁香五月婷婷色| 美女爽爽爽刺痛洞洞| 国产精品美女在线一区| 亚洲91网。| 成人五月天丁香激情综合| 97色碰| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 久久国产精品,久久国产| 东京热天堂网| 九九综合久久| 亚洲天堂少妇| 巨爆乳肉感一区二区三区竹菊影视| 亚洲的天堂网| 日韩一性一交一A片俄罗斯| 色超碰综合| 国产网红精品| 人妻丝袜肏逼| 欧美顶级黄色大片免费| 老司机午夜精品福利视频一区二区| 中国少妇XXXX做受| 国产精品国产自产拍高清AV| 国产精品爆乳懂色蜜乳| 日韩无码嘿咻黑热久| 国产美女高潮| 玖玖综合色| 男人午夜天堂| 九久9热| 国产探花日韩援交| 日韩精品人妻中文字幕久久久| 久久久精品中文字幕爱豆| 伊人97色天使| 国产精品一区二区久久精品| 免费网站观看www在线观| 91精品微拍福利| 天综合网欧美| 国产精品视频精品一二| 久久αⅴ| 校园春色欧美色图| 日韩图区 偷拍| 伊人嫩草| 小少妇| 一级性爱视频免费观看| 夜草欧美| 啊视频在线| 天天92av| 亚洲一二三四区机械| 无码国产Av| 亚洲精品蜜桃久久久| 人妻丝袜无 码视频专区| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 亚洲一二三精品久久网| 国产极品精品美女视频| 日韩人人精品| 日韩AV电影网站| 在线播放成人高清免费视频 | 超碰97人人乐| 黑操B| 亚洲精品性爱片| 亚洲第一页综合在线| 亚洲老熟妇xxx| 一二三四视频中文字幕在线看| 四虎免费视频| 99色悠悠| 性做久久久久久久| 国产日韩久久| AV99热18这里只有精品| 久热久| 操逼视频国产无套| 性生活性生大爱77AV国产| 欧美熟爽综合| 欧美成人性爱视频免费观看 | 欧美色97| 东北女人被操| 99熟女| 草草影院最新网址| 日韩欧美女求操每天更新| 加勒比综合九九99视频在线播放| 立川理惠加勒比无码| 一起草三级AV电影在线观看| 久久亚州大香蕉| 久久超碰爱| 亚洲成人无码影院| 女沟厕偷窥piss小便| 九草九九九| 人妻精品综合中文字幕在线| 色婷婷九月天天综合| 97久久久| 91四海无码日韩欧美| 欧美另类自拍 | 国精精品无码一二三区水多多| 日韩超碰97| 大香蕉92| 久久色一区二区| 国产91久久九九免费精品无码| 中文字幕丰满人妻日本| 国产97/欧美| 久久夜夜夜| 亚洲天堂性爱| 欧美一区二区亚洲天堂| av天堂精品久久| 97亚洲精品| 亚洲高潮影院| 蜜臀无码一区二区| 亚洲成人精品久久久| 五月天婷婷激情| 国内自拍 日韩激情 99| 国产精品一区av在线| 狠狠操使劲操| 97色在线视频| 亚洲第一页色网| 国产AV线| 亚洲污污网站| 清清草影| 九九亚洲精品| 人妻天天夜夜爽一区二区| 日韩女模中文造逼| 人妻aa| 欧美天天干| 丰满人妻一区二区三区性色| 1769成人国产精品视频| 国产精品操| 国产sv美女内射| 亚洲日韩欧美一区二区| 97一区二区三区视频| 久久久国产精品人妻丝袜| 天天操天天射青青草| 欧美一级黄片免费播放| 国产一区在线免费播放| 中国女人内射6XXXXX| 一区二区三区高清天码| 国模私拍一区二区三区神乳| 黄片免费日韩| 中文AV制服乱伦| 日本大香蕉综合网| 亚洲一区二区三区婷婷| 色九久| 天天日夜干| 国产sv美女内射| 精品999一区二区| 欧洲综合色| 青娱乐91| 97国产人人| 日本成人在线不卡一区二区三区| 久久午夜色播影院免费高清| 啊啊啊免费| 91视频综合网| 人人弄人人摸| 亚洲黄片免费在线播放| 男女猛烈无遮掩视频免费软件| 成人免费性爱视视| 1区2区3区中文字幕日韩| 97资源欧美| 91精产一区二区三区| 精品制服美女中文一区二区三区| 青青草原成人| 美女高潮国产高清| 天天综合亚洲综合| 性无码专区2020| 日韩在线一区高清在线| 日本五十路熟女一区二区| 久精品无码av一区二免费国产在线观看| 久久99人妖视频国产| 操碰97| 任你草| 免费看污网站| 99re99视频在线免费观看| 天天干1区2区在线| 久久αⅴ| 黄视频免费| 久久精品国产99精品亚洲蜜... | 亚洲AV无码黄色强奸| 天天插天天操| 五月天春色激情网| 色月天AV导航| 久操影视| 国产精品久久泡妞网站| 思思热在线视频在线| 国产精品999zyz| 婷婷久久网| 国产少妇与亚洲av| 日韩精品怡红院| 九久久精品| 欧美一二三| 国产精品网址| 激情小说五月天| 中文字幕国产精品1区| 亚洲熟妇乱女区二区三区| 日影院久久婷婷夜夜网| 亚洲欧美清纯| 欧美Aⅴ| 99综合| 日日夜夜草草草| 高清无码91| 99久久精品无码一区二区毛片免费| blacked精品一区国产| 五月天激情网站| 青青草成人视频在线观看二区| 黑人精品欧美一区二区蜜桃| 欧美中文字幕日韩在线| 黄色av一区二区在线| 国产一级久久久| 欧美色道啊| 亚洲AV麻豆Aⅴ无码电影一| 日韩欧美国产高清视频| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 殴美在线AⅤ| 国产四虎在线| 欧美最婬乱婬爆婬牲视频| 人人性爱视频免费| 99色天堂| 久草热制服丝袜在线观看 | 精品人妻视频入口| 强奸乱伦av电影| 亚熟在线| 夫妻日逼| 日韩操逼HD| 高清不卡国产| 91热| 操B在线观看| 神马午夜久久久| 九久精品| 精品超碰国产| 亚洲国产一区二区三区在线| 日韩91网| 搡老人老9丨女老熟人| 亚洲欧洲小说图片视频| 亚洲日精品| 岛国片国产成人亚洲播放| 在线女人91| 一起草视频在线| 男人的天堂一区三区| 久草草一二三四区久久| 精品人妻免费观看| 国产av尤物| AV女资源| 色色婷婷五月天| 免费男人的天堂| 丰满的三级少妇欧美久久久| 丰满熟女人妻一区二区三五十一路| 亚洲无码一二三区| 久久久久无码一妻区| 东京热男人的天堂精品| 伊人久久亚洲色欲综合网站 | 黑人美精品 A片| 美腿色图| 欧美天天性| 97色婷| 嗯嗯不要 视频| 麻豆这里只有精品| 天天综合网视频91| 久久久免费的精品| 中文字幕第23区| 一区操逼| 性性久久| 久久成人午夜精品影院 | 欧美另类色| 国产一二三在线视频五十路| 人人考人人摸人人干| 欧美熟女丝袜| 日韩一性一交一A片俄罗斯| 日韩中文字幕2020| 欧美日韩大黄片| 97久久久精品| 女人被男人桶爽视频网站| 在线啊啊啊啊| 国产无码精品成人| 人妻无码后入| 人人玩人人添人人澡免费| 欧美老妇女内射网址| 黑人白女精品一区| 欧美日韩另类字幕中文| 韩国黄片aaaa| 超碰97在线中文| 人人射人人操人人摸| 91精品国产91久久久久久久久久久久| av网页一区二区三区| 97久久国产精品| 青青草天天亲夜夜操网| 亚洲毛片久久| 高凊专区人人操| 亚欧无码线免费观看视频| 麻豆性爱视频在线播放| 一级黄色性爱A级片| 欧美中字不卡| 亚洲综合九九| 久久久精品网站| 超碰人人妻| 黄页av| 亚洲妇色| 国产www色在线观看| 欧美偷偷网| 五月丁香六月| av激情亚洲五月天| 久久九九一区二区三区成人| 高清有码一区二区| 欧美性生活内射| 久久精品性| 99在线精品视频| 任我爽在线视频免费观看| 日韩传媒在线| 嗯阿好爽好紧| 另类视频在线| 国产超碰| 午夜福利免费精品视频| 天天做天天爱夜夜爽毛片试看| 国产白丝网站| 97欧美色综合| 亚州综合AⅤ| 激情终合网| 日韩美女高潮喷水视频| 玖玖97综合| 男人天堂一区二区| 999国产精品999| 日韩午夜精品一区二区三区电影| 欧美日韩不卡传媒| 天天影视网综合少妇| 亚洲各类熟们中文字幕| 五月婷在线| 九九九热精品| 久久三| 亚洲欧洲无码一区夜| 97爱综合| 物业黑人 AV一区| 国产视频一区二区在线| 国产成人精品日本视频| 呦呦影院| 亚洲高清色综合| 亚洲熟女乱色一区二区三区久久久| 精品妇女一区二区三区| 能直接看AV的网站| 日本欧美韩国国产在线| 91美女视频在线观看| 大香蕉日亚洲日本亚大| 亚洲视频一二区| 少妇无码太爽| 五月丁香综合啪啪| 日韩欧美中文日韩欧美色| 亚洲AV无码秘 蜜桃臀国精产品| 久9爱精品| 97爱碰| 国产精品suv一区| 在线天堂999| 亚洲麻豆精品二区三区| 欧美黄色片AAAAA| 高跟丝袜AV专区国产| 黄片qw| 操b在线观看| 亚洲色图91| 亚洲黄色| 大香蕉中文网| 欧美图片色五月天| 久草久日| 色九九综合AV| 欧美999999| 中文幕97| 久久久久久久国产| 蜜桃在线观看一区二区三区| 无码人妻一区二区一牛影视| 五月丁香婷婷色| 日本三级韩三级99久久| 天天看,天天做| 日韩免费看黄片| 久久久久国产精品片区无码直播| 午夜一区二区三区国产| 在线无码网站| 免费一级特黄特色大片在线观看看 | 91n欧美| 美女91| 久操97| 试看日韩黄片| 91国产操逼视频| 亚洲国产成人精品久久久国产成人一区二区| 人妻丝袜日本| 精品传媒在线一区| 清纯唯美亚洲综合| 大JI巴好深好爽又大又粗视频| 97视频在线播放| 丰满熟女一区二区三区在线播放| 婷婷涩嫩草鲁丝久久午夜精品| 国产精品日日摸夜夜添骚逼| 国产精品片| 精品人妻一二三| 日韩 国产 欧美自拍| 丁香九月 婷婷| 国产精品无套内谢| 特级丰满少妇一级AAAA爱毛片| 国产亚州精品美女久久久免费| 爆操无码| 99成人| 乱理日韩中文| 精品999日本| 中文字幕第95页| 综合网少妇| 超碰97中文| 亚洲一卡二卡在线免费| 波多野结衣一级视频| 亚洲美女自拍偷拍视频| 国产精品秘 福利姬在线观看| 色噜噜狠狠色综合日日| 欧美色偷拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 五十路人妻在线| 欧美97av| 99热在线观看| 涩涩涩综合| 国产情侣自拍在线播放| 色色婷| 天天摸夜夜摸| 中文久久96| 欧美高清16| 精品日韩人妻视频| 久久91精品国产9丨久久分亭| 操逼网免费无码视频| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 老女人综合网| 国产女同视频在线播放| 日本日皮视频逼| 懂色AV一区二区三区| 青青草国产盗摄一二三区| 亚洲色棕合| 少妇综合网| 免费一级特黄特色大片在线观看看 | 极品AV网站在线观看| 久热伊人| 手机在线免费看的av| 偷窥自拍A片| 韩国轻伦国内自拍一区| 国产成人精品午夜福利| 亚洲久9| 人人妻人射| 大香交伊人网| 欧美 日韩 婷婷 五月| 殴美性天天| 国产中文大片资源中文字幕| 亚洲色五月| 后入式在线免费观看60秒| 天天欧美| 人妻一区视频| 嗯嗯嗯嗯啊啊啊好紧好大| 超碰久在线天天做| 翔田千里AV无码秘 三区| 久久99午夜精品一区人妻| 亚洲天堂女优在线| 男人的天堂三级| 国产又黄又粗的视频| 色婷婷激情| 欧美日韩另类字幕中文| www国产无码| 国产热RE99久久6国产精品首| 第45页一区二区| 欧美色网络| 亚洲一卡2卡3卡4卡乱码网站 | 性交一区二区在线播放| 操熟女91| 人妻一区二区三区四区视频| 日本精品无码三级网站| 禁止观看美女黄| 91中文字幕在线观看| 先锋激情∨在线视频播放| 久久亚洲不卡| 欧美色图片色哟哟| 人人艹亚洲| 亚洲AV资源| www.男人的天堂| 1769精品一区二区三区| 欲射影视| 人人人摸人人| 国产玖玖| 亚春色色| 91精品伊人久久久大香线蕉91 | 午夜福利区| 国产呦精品系列在线观看| 99色热| 久久久96精品| 久久精品国产亚洲AV嘿嘿| 性生活久久久久久久久久| 人妻铁牛TV| 国产原创自拍| 天天欧美97| 亚洲强奸乱伦影视网| 动漫av中文| 日韩中文字幕视频| 欧美亚男人的天堂| 日韩在线观看三级电影| 五月香婷婷| 99re视频在线播放青草| 极品尤物在线观看| 日韩色女精品| AV不卡在线|