国产91在线无码_少妇人妻无码高清_91人妻中文字幕无码专区在线_国产福利在线播放_免费 无码 国产成年视频网站

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

導(dǎo)讀:

據(jù)Gartner調(diào)研,應(yīng)用開(kāi)發(fā)需求的市場(chǎng)增長(zhǎng)至少超過(guò)IT交付能力的5倍,預(yù)計(jì)到2025年,70%的新應(yīng)用開(kāi)發(fā)將使用低代碼技術(shù)。我們需要在需求迭代越來(lái)越高頻、創(chuàng)新能力要求越來(lái)越高的背景下,探索如何通過(guò)技術(shù)手段為業(yè)務(wù)開(kāi)發(fā)降本增效提質(zhì)做出突破,更高效的實(shí)現(xiàn)產(chǎn)品創(chuàng)新。百度搜索中臺(tái)支撐多元業(yè)務(wù)場(chǎng)景,有豐富的業(yè)務(wù)形態(tài),對(duì)卓越效能有極致追求。本文從搜索中臺(tái)業(yè)務(wù)研發(fā)者面臨的困難和挑戰(zhàn)入手,分析原因,探討低代碼的一些解決思路。

全文5988字,預(yù)計(jì)閱讀時(shí)間15分鐘

一、關(guān)于低代碼

低代碼是軟件系統(tǒng)的快速開(kāi)發(fā)工具,開(kāi)發(fā)者無(wú)需編碼就可以實(shí)現(xiàn)常見(jiàn)的功能、少量代碼即可完成功能擴(kuò)展,從而實(shí)現(xiàn)便捷構(gòu)建應(yīng)用程序。隨著企業(yè)數(shù)字化需求的快速增長(zhǎng),傳統(tǒng)的軟件開(kāi)發(fā)方式的低下生產(chǎn)效率,成為制約企業(yè)數(shù)字化轉(zhuǎn)型的主要矛盾,低代碼得到快速發(fā)展。相比傳統(tǒng)的軟件開(kāi)發(fā)模式和工具,低代碼的開(kāi)發(fā)門(mén)檻更低、研發(fā)效率更高;相比其他的快速開(kāi)發(fā)工具,低代碼的擴(kuò)展性更高,可以勝任復(fù)雜場(chǎng)景下的核心開(kāi)發(fā)訴求。研發(fā)效能也一直是各大互聯(lián)網(wǎng)企業(yè)關(guān)注的焦點(diǎn),隨著近幾年的探索和發(fā)展,市場(chǎng)上出現(xiàn)了眾多的低代碼平臺(tái),低代碼也受到了越來(lái)越多的關(guān)注。

目前業(yè)界低代碼框架主要解決的是一般領(lǐng)域的通用需求,可以低成本的拖拽組件來(lái)打造前后端一體的應(yīng)用,主要用于 BRM(業(yè)務(wù)規(guī)則管理)、ERP、CRM等系統(tǒng)的快速研發(fā)。但是這種方式對(duì)專(zhuān)業(yè)領(lǐng)域的中后臺(tái)開(kāi)發(fā)者并不適用,他們面對(duì)的是復(fù)雜多樣的場(chǎng)景,他們專(zhuān)注的問(wèn)題是如何維護(hù)已經(jīng)達(dá)到十萬(wàn)、甚至百萬(wàn)的代碼,如何快速迭代、策略?xún)?yōu)化實(shí)現(xiàn)業(yè)務(wù)可持續(xù)增長(zhǎng),如何治理與保障服務(wù)的穩(wěn)定性等等。如果低代碼工具只能創(chuàng)建帶界面的數(shù)據(jù)庫(kù)應(yīng)用,支持簡(jiǎn)單工作流場(chǎng)景,并不能給后者帶來(lái)實(shí)際幫助。

搜索中臺(tái)從業(yè)務(wù)場(chǎng)景和業(yè)務(wù)痛點(diǎn)出發(fā),借鑒業(yè)界低代碼理念,對(duì)復(fù)雜的后端系統(tǒng)開(kāi)展了低代碼探索和實(shí)踐之路。工欲善其事,必先利其器,希望通過(guò)打造新的生產(chǎn)力工具,更高效地實(shí)現(xiàn)產(chǎn)品創(chuàng)新。

二、我們面對(duì)的場(chǎng)景

搜索中臺(tái)為業(yè)務(wù)提供兩種接入方式,一種是使用者以配置化的形式進(jìn)行定制,之后使用提供的API接口訪(fǎng)問(wèn)中臺(tái)的能力,另一種是允許使用者以代碼開(kāi)發(fā)、部署服務(wù)的形式在中臺(tái)內(nèi)部系統(tǒng)中進(jìn)行定制,實(shí)現(xiàn)高度靈活的產(chǎn)品邏輯。前者更加接近“無(wú)代碼”,但是擴(kuò)展性和靈活性不夠,應(yīng)對(duì)的是一般性需求,后者我們?cè)谥信_(tái)系統(tǒng)內(nèi)提供了應(yīng)用引擎(以下稱(chēng)Search-AE),業(yè)務(wù)可以直接入場(chǎng)開(kāi)發(fā),通過(guò)代碼實(shí)現(xiàn)檢索需求定制,滿(mǎn)足更加靈活的業(yè)務(wù)場(chǎng)景。

隨著深耕業(yè)務(wù)場(chǎng)景的規(guī)模爆發(fā)式增長(zhǎng),大量應(yīng)用開(kāi)始涌入 Search-AE,目前已經(jīng)包含了200 獨(dú)立業(yè)務(wù)系統(tǒng)。在需求高速迭代、規(guī)模快速增長(zhǎng)的情況下,效能上面臨的問(wèn)題也越發(fā)凸顯:

  • 缺少有效沉淀

    在 Search-AE 發(fā)展之初,各個(gè)業(yè)務(wù)更多的是縱向發(fā)展,通用功能很難沉淀,應(yīng)用之間的能力共享主要通過(guò) copy-paste 來(lái)完成,而這些代碼在一段時(shí)間的迭代后,又會(huì)因?yàn)橐恍┪⒉煌瑢?dǎo)致其往各自的方向發(fā)展,最終業(yè)務(wù)之間完全演變成各自獨(dú)立的系統(tǒng),本可以復(fù)用的能力變的更加難以有效沉淀。

  • 高速迭代下系統(tǒng)的復(fù)雜性加大

    隨著需求的快速迭代,業(yè)務(wù)系統(tǒng)的代碼量和架構(gòu)復(fù)雜度也在快速提升,部分業(yè)務(wù)代碼量級(jí)已經(jīng)發(fā)展到數(shù)十萬(wàn)級(jí)別的規(guī)模。同時(shí)業(yè)務(wù)需求又是第一位的,大家都在被需求推著走,開(kāi)發(fā)過(guò)程中很難保證對(duì)文檔做出有效沉淀。接手同學(xué)在維護(hù)迭代時(shí)只能通過(guò)大量源碼去理解系統(tǒng),難以保證高效開(kāi)發(fā)。

  • 研發(fā)全流程操作繁瑣

    搜索本身很復(fù)雜,尤其在經(jīng)歷過(guò)多年的發(fā)展后,搜索系統(tǒng)成為鏈路長(zhǎng)、連接復(fù)雜的大型分布式系統(tǒng)。環(huán)境部署、調(diào)試預(yù)覽等都會(huì)對(duì)業(yè)務(wù)研發(fā)產(chǎn)生一定的負(fù)擔(dān)。另一方面,研發(fā)全流程需要接觸不同的工具平臺(tái),這些平臺(tái)沒(méi)有從全流程的維度去規(guī)劃設(shè)計(jì),它們之間的跳轉(zhuǎn)、使用也會(huì)產(chǎn)生學(xué)習(xí)成本。有一個(gè)實(shí)際場(chǎng)景的例子:開(kāi)發(fā)一個(gè)業(yè)務(wù)需求,先花一周時(shí)間讀懂代碼評(píng)估代碼的修改點(diǎn),再花一周去配置整套環(huán)境,還要花一周時(shí)間熟悉研發(fā)流程中的工具鏈,而真正寫(xiě)代碼可能只需要一天。

總體來(lái)看,我們要解決的問(wèn)題是:如何更快開(kāi)發(fā)——少寫(xiě)代碼,更快上手——系統(tǒng)易理解,更快交付——全流程操作簡(jiǎn)單。

三、思路與目標(biāo)

業(yè)內(nèi)的一些低代碼平臺(tái)主要聚焦的是前端的場(chǎng)景需求,將頁(yè)面元素封裝成通用組件,使用者拖拽這些組件實(shí)現(xiàn)頁(yè)面形態(tài)的定制。搜索中臺(tái)面對(duì)的是中后臺(tái)場(chǎng)景,但是要解決的問(wèn)題和思路是非常類(lèi)似的。從每個(gè)業(yè)務(wù)的實(shí)際情況看,雖然最終的檢索場(chǎng)景各不相同,但執(zhí)行的功能流程都有一定的相似性,如果我們把通用的功能抽出來(lái),業(yè)務(wù)通過(guò)組合這些通用能力來(lái)滿(mǎn)足需求,就可以顯著提升效率。同時(shí),這些通用能力是標(biāo)準(zhǔn)化的,業(yè)務(wù)可以按標(biāo)準(zhǔn)規(guī)范進(jìn)行開(kāi)發(fā),開(kāi)發(fā)生態(tài)易于分享和使用,針對(duì)通用算子滿(mǎn)足不了的業(yè)務(wù)場(chǎng)景,大家就會(huì)補(bǔ)充更多的通用組件,在下一次類(lèi)似需求來(lái)到時(shí)快速滿(mǎn)足。

統(tǒng)一業(yè)務(wù)框架:圖引擎 & 圖編排

我們的解決思路是使用圖引擎來(lái)驅(qū)動(dòng)業(yè)務(wù)邏輯的執(zhí)行,通用和定制的能力都以算子形式提供,業(yè)務(wù)則以 DAG 圖的形式串聯(lián)這些算子。圖本身沒(méi)有一套固定的流程,算子間的連接和使用完全由業(yè)務(wù)場(chǎng)景決定,所以即使是完全差異化的業(yè)務(wù)都可以使用圖引擎來(lái)構(gòu)建系統(tǒng)。并且,圖和算子定義了一套標(biāo)準(zhǔn)規(guī)范,開(kāi)發(fā)的產(chǎn)品功能都通過(guò)算子的形式對(duì)外暴露,而算子又是可以插拔的,業(yè)務(wù)之間都可以方便的拿來(lái)復(fù)用。

但是,僅僅有圖引擎是不夠的,我們需要讓算子在業(yè)務(wù)的使用之下快速沉淀起來(lái):業(yè)務(wù)愿意去共建通用算子,并且這些算子對(duì)業(yè)務(wù)能夠充分共享,即大家可以便捷的查看和使用這些通用算子。而使用圖編排工具,可以以平臺(tái)化的形式對(duì)這些算子進(jìn)行呈現(xiàn),研發(fā)同學(xué)可以快速的查看所需功能算子,也可以通過(guò)可視化拖拽低成本的配置使用。

建設(shè)圖編排工具還有一個(gè)很重要的出發(fā)點(diǎn)是:我們希望通過(guò)可視化的圖幫助開(kāi)發(fā)同學(xué)快速的了解業(yè)務(wù)系統(tǒng)。這個(gè)圖既是系統(tǒng)的實(shí)際運(yùn)行圖,也是幫助快速理解系統(tǒng)的執(zhí)行流程圖。我們使用圖編排進(jìn)行可視化之后,圖本身就具備自解釋性,研發(fā)同學(xué)可以在圖上補(bǔ)充備注信息,圖就相當(dāng)于和代碼同步的天然文檔。對(duì)有一定規(guī)模的業(yè)務(wù)來(lái)說(shuō),通過(guò)“圖文檔”理解系統(tǒng)要比讀源碼理解更快,更加自然易懂。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

全流程一站式研發(fā)

除了代碼開(kāi)發(fā)上的改善之外,我們希望有一套統(tǒng)一的工具對(duì)研發(fā)全流程進(jìn)行提效:在圖編排的基礎(chǔ)上打造 All-in-one 的開(kāi)發(fā)平臺(tái),將研發(fā)流程各個(gè)單點(diǎn)能力橫向集成與拉通。業(yè)務(wù)研發(fā)者在研發(fā)過(guò)程中不需要學(xué)習(xí)對(duì)接各種開(kāi)發(fā)工具或平臺(tái),所有的研發(fā)工作都收攏在一套工具里解決。同時(shí)這套流程又是標(biāo)準(zhǔn)化的,過(guò)去研發(fā)過(guò)程中所有的飛線(xiàn)技術(shù)棧都能統(tǒng)一起來(lái),使用更加高效便捷的標(biāo)準(zhǔn)化解決方案。業(yè)務(wù)有能夠提升效率的方式、工具也可以往這套工具里進(jìn)行沉淀,共同打造。

四、Nimbus 低代碼平臺(tái)的設(shè)計(jì)與實(shí)踐

我們?cè)?iCoding(公司代碼開(kāi)發(fā) IDE) 的基礎(chǔ)上建設(shè)了 Nimbus 低代碼平臺(tái),所以 Nimbus 天生就擁有了 IDE 包含的代碼開(kāi)發(fā)、編譯調(diào)試等基礎(chǔ)能力。對(duì)使用者來(lái)說(shuō),研發(fā)全流程的操作都可以在 IDE 內(nèi)部完成,不需要對(duì)接外部工具系統(tǒng),提供了很大的便利性。我們將研發(fā)全流程劃分為五個(gè)階段,分別是環(huán)境準(zhǔn)備、開(kāi)發(fā)、預(yù)覽調(diào)試、測(cè)試和發(fā)布運(yùn)維。每個(gè)階段 Nimbus 都組建了適合的工具來(lái)降低開(kāi)發(fā)者的研發(fā)成本。

一鍵生成線(xiàn)上同步的開(kāi)發(fā)環(huán)境,開(kāi)箱即用

在工程效能部同事的支持下,我們建設(shè)了可以開(kāi)箱即用的云端開(kāi)發(fā)環(huán)境。業(yè)務(wù)開(kāi)發(fā)者在代碼倉(cāng)庫(kù)可以一鍵申請(qǐng)開(kāi)發(fā)鏡像,后臺(tái)會(huì)在云端拉起一個(gè) Docker 容器,容器內(nèi)運(yùn)行著 iCoding 的服務(wù)端,可以使用瀏覽器的形式連接開(kāi)發(fā)鏡像,也可以使用 iCoding 客戶(hù)端進(jìn)行連接。

鏡像內(nèi)包含代碼庫(kù)、開(kāi)發(fā)過(guò)程中的全部工具、服務(wù)編譯運(yùn)行所需要的全部依賴(lài)包、線(xiàn)上同步的服務(wù)配置詞典等,業(yè)務(wù)開(kāi)發(fā)者不需要額外的配置就可以直接開(kāi)始開(kāi)發(fā)。同時(shí)所有用戶(hù)的開(kāi)發(fā)環(huán)境也是完全一致的,不會(huì)因?yàn)橄到y(tǒng)、SDK、配置的不同導(dǎo)致的問(wèn)題影響。當(dāng)用戶(hù)長(zhǎng)時(shí)間未連接開(kāi)發(fā)鏡像時(shí),鏡像會(huì)自動(dòng)掛起閑置,節(jié)省機(jī)器成本。鏡像也可以分享給其他用戶(hù),便于問(wèn)題排查。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

在打包鏡像的過(guò)程中我們發(fā)現(xiàn)應(yīng)用的依賴(lài)非常多,如果將這些依賴(lài)都放入鏡像中會(huì)導(dǎo)致鏡像體積過(guò)大,不僅影響鏡像的拉起時(shí)間,也對(duì)機(jī)器的磁盤(pán)空間造成很大壓力。初期我們將這些依賴(lài)都放到 NFS 里,在鏡像內(nèi)通過(guò) fuse 進(jìn)行掛載,但是會(huì)導(dǎo)致業(yè)務(wù)無(wú)法修改這些依賴(lài),在一些場(chǎng)景下使用體驗(yàn)不佳。我們又基于Overlayfs 虛擬了一層聯(lián)合文件系統(tǒng),用戶(hù)看到的只是一個(gè)普通的文件系統(tǒng)目錄,可以任意修改替換。實(shí)際文件系統(tǒng)則包含兩層的合并內(nèi)容,Lower 層指向了公共的 NFS 集群,里面有全部的依賴(lài)文件,和線(xiàn)上實(shí)時(shí)更新,Upper 層指向鏡像的工作目錄,用戶(hù)可以修改 Lower 層的文件,修改后會(huì)自動(dòng)移到 Upper 層,Lower 原始數(shù)據(jù)不受影響。使用 Overlayfs 后我們的鏡像拉起速度非???,絕大部分依賴(lài)都放到遠(yuǎn)程,開(kāi)發(fā)鏡像只需要5秒鐘就可以拉起。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

可視化拖拽算子,快速組建復(fù)雜場(chǎng)景

開(kāi)發(fā)過(guò)程中,使用者可以在 Nimbus 中打開(kāi)圖編排工具來(lái)拖拽算子。每個(gè)算子都會(huì)有詳細(xì)的描述信息,比如名稱(chēng)、類(lèi)別、用途、屬性等。這些信息通過(guò)注解的方式在代碼中進(jìn)行聲明,圖編排工具會(huì)掃描這些算子代碼,讀取相應(yīng)的注解信息,并添加到算子倉(cāng)庫(kù)中。業(yè)務(wù)開(kāi)發(fā)同學(xué)可以在圖編排中對(duì)算子倉(cāng)庫(kù)中的算子進(jìn)行瀏覽或檢索,通過(guò)拖拽組建適合的業(yè)務(wù)場(chǎng)景執(zhí)行圖。拖拽后圖的連接配置會(huì)直接保存到業(yè)務(wù)的代碼庫(kù),下次打開(kāi)可以重新加載。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

在圖編排工具中,我們也添加了一些交互來(lái)提示研發(fā)同學(xué)在圖中添加算子、邊的詳細(xì)備注,幫助其他同學(xué)基于圖快速了解系統(tǒng)。一些領(lǐng)域的問(wèn)題可能具有相當(dāng)?shù)膹?fù)雜度,用一張圖表示并不直觀(guān),我們提供了子圖的功能,可以將圖與圖之間關(guān)聯(lián)在一起。開(kāi)發(fā)者在圖編排中可以雙擊跳轉(zhuǎn),也可以通過(guò)Peek 功能快速查看子圖的結(jié)構(gòu)。對(duì)于復(fù)雜的業(yè)務(wù)場(chǎng)景,研發(fā)同學(xué)就可以借助子圖來(lái)層級(jí)遞進(jìn)的理解系統(tǒng)。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

Nimbus 是在 IDE 基礎(chǔ)上進(jìn)行的設(shè)計(jì),所以圖編排可以和代碼開(kāi)發(fā)緊密關(guān)聯(lián)在一起。在圖中雙擊算子單元能夠直接跳轉(zhuǎn)到具體的代碼實(shí)現(xiàn),方便用戶(hù)實(shí)際開(kāi)發(fā)。圖編排中也集成了調(diào)試分析的功能,用戶(hù)可以在圖中任意算子增加斷點(diǎn)查看輸入輸出,也可以觀(guān)察整個(gè)圖的執(zhí)行狀況,各個(gè)階段的耗時(shí),通過(guò)圖的執(zhí)行過(guò)程快速掌握業(yè)務(wù)邏輯。

在實(shí)際的使用過(guò)程中,我們和業(yè)務(wù)同學(xué)將一些最優(yōu)實(shí)踐,高頻出現(xiàn)的業(yè)務(wù)場(chǎng)景抽象成了通用的圖模板,這些通用圖模板可以直接在 Nimbus 中進(jìn)行打開(kāi),業(yè)務(wù)可以在這些模板的基礎(chǔ)上進(jìn)行定制,為構(gòu)建新場(chǎng)景時(shí)提供幫助參考。

免配置的端到端效果調(diào)試,使用更友好

預(yù)覽調(diào)試過(guò)去一直是很繁瑣的問(wèn)題,系統(tǒng)的鏈路和模塊太復(fù)雜了,尤其對(duì)新人來(lái)說(shuō)是一個(gè)很大的挑戰(zhàn)。Nimbus 提供了功能強(qiáng)大的預(yù)覽工具,同時(shí)支持直連請(qǐng)求和端到端的效果調(diào)試。我們和 QA 同學(xué)一起搭建了沙盒環(huán)境,完全復(fù)刻了線(xiàn)上的在線(xiàn)模塊,并和線(xiàn)上模塊保持同步更新。在調(diào)試端到端的過(guò)程中,Nimbus 會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到沙盒環(huán)境,請(qǐng)求開(kāi)發(fā)中的業(yè)務(wù)模塊時(shí),沙盒環(huán)境會(huì)攔截該請(qǐng)求,轉(zhuǎn)發(fā)到實(shí)際開(kāi)發(fā)調(diào)試的服務(wù)。新的效果預(yù)覽方式中預(yù)覽環(huán)境的大部分模塊都使用公共服務(wù),顯著節(jié)省機(jī)器成本,同時(shí)省去了環(huán)境部署、同步更新的人力成本。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

調(diào)試過(guò)程中,我們也可以通過(guò) Nimbus 進(jìn)行可觀(guān)測(cè)性分析,如 logging、tracing 等等。Nimbus 中也打通了 IDE 的 live debug 功能,支持用戶(hù)快速進(jìn)行代碼的斷點(diǎn)調(diào)試。

現(xiàn)代化的測(cè)試工具集,集中在測(cè)試本身

過(guò)去測(cè)試流程主要依賴(lài)人來(lái)驅(qū)動(dòng),研發(fā)同學(xué)開(kāi)發(fā)自測(cè)完之后,QA 同學(xué)需要將服務(wù)部署在測(cè)試環(huán)境,因?yàn)橐蕾?lài)較多,部署過(guò)程中需要 RD 和 QA 的反復(fù)溝通對(duì)接才能建立完整的測(cè)試環(huán)境。Nimbus 連接了一套公共測(cè)試集群,研發(fā)同學(xué)開(kāi)發(fā)完之后可以一鍵部署仿真實(shí)例,仿真實(shí)例通過(guò)線(xiàn)下的 Paas 平臺(tái)進(jìn)行部署,環(huán)境和線(xiàn)上基本一致,可用于性能壓測(cè)、效果驗(yàn)證等。同時(shí) Nimbus 支持自動(dòng)化回歸測(cè)試功能,我們定期錄制了線(xiàn)上流量,發(fā)起自動(dòng)化回歸時(shí),Nimbus 會(huì)自動(dòng)部署基線(xiàn)實(shí)例和測(cè)試實(shí)例,發(fā)送錄制流量來(lái)生成 diff 以及性能報(bào)告,用于評(píng)估上線(xiàn)風(fēng)險(xiǎn)。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

智能化的容量管理,快速適應(yīng)服務(wù)變化

Search-AE 內(nèi)混布了大量的業(yè)務(wù)模塊,高峰期有百萬(wàn)級(jí) QPS,服務(wù)的容量規(guī)劃一直很難處理。搜索流量本身變化較快,加上業(yè)務(wù)頻繁迭代,線(xiàn)下需要反復(fù)壓測(cè)評(píng)估合適的部署方案。同時(shí)線(xiàn)上一直在變化,之前合適的部署方案可能因?yàn)樯舷掠巫兏之a(chǎn)生資源不足或浪費(fèi)。過(guò)去線(xiàn)上的容量問(wèn)題一直需要研發(fā)和運(yùn)維關(guān)注,我們希望在 Nimbus 中能夠用全局視角統(tǒng)一的管理線(xiàn)上容量,讓業(yè)務(wù)同學(xué)只需要關(guān)注在實(shí)際的代碼開(kāi)發(fā)上。

技術(shù)揭秘!百度搜索中臺(tái)低代碼的探索與實(shí)踐(百度業(yè)務(wù)中臺(tái))

智能容量管理要解決的問(wèn)題是在滿(mǎn)足穩(wěn)定性要求的前提下,確定各個(gè)服務(wù)的部署計(jì)劃,讓 Search-AE 整個(gè)集群的資源占用最少。智能容量管理的處理包含觸發(fā)、分析和決策三個(gè)階段。觸發(fā)階段包含三種情況:一種是業(yè)務(wù)迭代變更時(shí)會(huì)觸發(fā)容量分析,第二種是線(xiàn)上持續(xù)的輪轉(zhuǎn)服務(wù)觸發(fā)分析,第三種是線(xiàn)上實(shí)際資源占用達(dá)到某個(gè)水位時(shí)觸發(fā)快速分析。分析階段主要的數(shù)據(jù)輸入包含:

  1. 和線(xiàn)上一致的仿真實(shí)例,階梯遞增的QPS壓測(cè)下的資源占用、速度 SLA曲線(xiàn)。

  2. 現(xiàn)在及歷史的QPS、耗時(shí)數(shù)據(jù)。

  3. 現(xiàn)在及歷史的資源占用 Load 指標(biāo)。

通過(guò)這些數(shù)據(jù)分析系統(tǒng)會(huì)綜合判斷服務(wù)是否需要變更部署安排,最終通過(guò)底層的調(diào)度引擎觸發(fā)服務(wù)調(diào)整。過(guò)去大部分容量變化都依賴(lài)人去做評(píng)估調(diào)整,有了這套工具后,線(xiàn)上服務(wù)的部署調(diào)整就可以實(shí)現(xiàn)自動(dòng)化。

五、總結(jié)與展望

業(yè)務(wù)創(chuàng)新加速,在需求越來(lái)越多、迭代越來(lái)越塊、創(chuàng)新能力要求越來(lái)越高的背景下,如何通過(guò)技術(shù)手段為業(yè)務(wù)開(kāi)發(fā)降本增效提質(zhì)做出突破,是搜索中臺(tái)、也是眾多產(chǎn)品研發(fā)平臺(tái)需要思考和解決的問(wèn)題。搜索中臺(tái)從業(yè)務(wù)場(chǎng)景和業(yè)務(wù)痛點(diǎn)出發(fā),借鑒業(yè)界低代碼理念,對(duì)復(fù)雜的后端系統(tǒng)深入開(kāi)展了低代碼的探索和實(shí)踐,據(jù)此形成一套從技術(shù)思路、到系統(tǒng)能力、再到業(yè)務(wù)運(yùn)營(yíng)可借鑒可復(fù)用的復(fù)雜后端系統(tǒng)低代碼解決方案,整個(gè)解決方案包含3個(gè)關(guān)鍵組成:

  1. 基于圖引擎&通用模板通用算子&業(yè)務(wù)微定制算子,打造低代碼能力引擎,幫助業(yè)務(wù)少寫(xiě)代碼

  2. 打造低代碼一體化平臺(tái),通過(guò)能力集成和可視化開(kāi)發(fā)實(shí)現(xiàn)研發(fā)流程的全生命周期管理,幫助業(yè)務(wù)高效交付

  3. 重視用戶(hù)培育,營(yíng)造共創(chuàng)氛圍,促進(jìn)創(chuàng)新生產(chǎn)力工具的應(yīng)用、推廣和共建,幫助低代碼現(xiàn)代化生產(chǎn)力工具在實(shí)戰(zhàn)中快速成長(zhǎng)

低代碼一體化平臺(tái)Nimbus正式發(fā)布以來(lái),在多個(gè)業(yè)務(wù)取得了顯著收益,并收獲了早期用戶(hù)的高滿(mǎn)意度和良好口碑,驗(yàn)證了通過(guò)低代碼實(shí)現(xiàn)復(fù)雜業(yè)務(wù)場(chǎng)景降本增效提質(zhì)的切實(shí)可行。它是一套工具,也是一套標(biāo)準(zhǔn),我們期望打造開(kāi)放共創(chuàng)的生態(tài),前臺(tái)和中臺(tái)同學(xué)都可以基于這套標(biāo)準(zhǔn)來(lái)沉淀更多的通用算子、研發(fā)能力、應(yīng)用案例和實(shí)踐經(jīng)驗(yàn)等等,而這些可以支撐我們進(jìn)一步向更低代碼、更高效能去邁進(jìn)。在低代碼的征途上,我們已經(jīng)揚(yáng)帆起航,將繼續(xù)乘風(fēng)破浪,勇往直前。期待搜索中臺(tái)低代碼一體化平臺(tái)能夠廣泛應(yīng)用、深入人心,促進(jìn)多元業(yè)務(wù)高效率、高質(zhì)量、低成本的敏捷迭代,為加速業(yè)務(wù)創(chuàng)新和發(fā)展做出更多貢獻(xiàn)。

  • JDK ThreadPoolExecutor核心原理與實(shí)踐

  • 深入解析Apache Pulsar系列 —— Broker消息確認(rèn)的管理

  • 化繁為簡(jiǎn)–百度智能小程序主數(shù)據(jù)架構(gòu)實(shí)戰(zhàn)總結(jié)

  • 深入剖析全鏈路灰度技術(shù)內(nèi)幕

  • 愛(ài)奇藝基礎(chǔ)數(shù)據(jù)平臺(tái)演進(jìn)

技術(shù)原創(chuàng)及架構(gòu)實(shí)踐文章,歡迎通過(guò)公眾號(hào)菜單「聯(lián)系我們」進(jìn)行投稿。

高可用架構(gòu)

改變互聯(lián)網(wǎng)的構(gòu)建方式

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀(guān)點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年7月6日 上午11:30
下一篇 2024年7月6日 上午11:41

相關(guān)推薦