欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

百度垂類離線計算系統(tǒng)的演進過程 百度垂類離線計算系統(tǒng)的設(shè)計與實現(xiàn)

OSC開源社區(qū) ? 來源:百度Geek說 ? 2023-09-01 14:51 ? 次閱讀

作者 | 弘遠君

導(dǎo)讀

本文以百度垂類離線計算系統(tǒng)的演進方向為主線,詳細描述搜索垂類離線計算系統(tǒng)發(fā)展過程中遇到的問題,以及對應(yīng)的解決方案。架構(gòu)演進過程中一直奉行“沒有最好的架構(gòu),只有最合適的架構(gòu)”的宗旨,面對不同階段遇到的問題,給出了適合的解決方案。尤其是近10年來的超大規(guī)模系統(tǒng)架構(gòu)的升級, 一方面需要考慮系統(tǒng)本身的通用性和適配性,以滿足多個業(yè)務(wù)方的需求;另一方面需要結(jié)合系統(tǒng)當前運行的特點,在易用性、穩(wěn)定性、智能化等不同方面進行提升。希望讀者能在了解系統(tǒng)演進的過程中獲得一些啟發(fā)。

01相關(guān)背景介紹

在過去,用戶通過“百度一下”得到的搜索結(jié)果是從互聯(lián)網(wǎng)上抓取來的結(jié)果,也被稱為“自然結(jié)果”。隨著網(wǎng)絡(luò)信息日益豐富,自然結(jié)果不能有效滿足用戶需求。為了解決自然結(jié)果無法滿足搜索需求的問題,提出了針對各個垂類深耕的搜索結(jié)果的解決方案,一方面為用戶帶來的更優(yōu)質(zhì)的內(nèi)容,讓用戶體驗即搜即得的便捷,另一方面也可以幫助優(yōu)質(zhì)內(nèi)容生產(chǎn)者提升訪問量。

隨著業(yè)務(wù)發(fā)展,除了標準通用的業(yè)務(wù)處理需求變更之外,越來越多的業(yè)務(wù)有自定義代碼的更新需求。通過自定義數(shù)據(jù)處理,一方面,產(chǎn)品負責(zé)同學(xué)可以將原始傳入的數(shù)據(jù)按照業(yè)務(wù)需求進行定制化處理,將原始數(shù)據(jù)轉(zhuǎn)化為最終搜索的結(jié)果數(shù)據(jù)。 另一方面,通用默認的一些功能機制限制了少量垂類的發(fā)展,業(yè)務(wù)希望引入更多的策略 模型邏輯 信號等處理以及打分機制,提升排序召回的效果。

在這樣的背景下,業(yè)務(wù)對于數(shù)據(jù)加工計算的框架引擎的需求越來越強烈,并且功能也逐漸成為整個垂搜離線處理過程中不可或缺的一部分。

02計算系統(tǒng)演進過程

百度搜索系統(tǒng)離線數(shù)據(jù)處理從時間線的發(fā)展階段來說一共經(jīng)歷如下幾個階段:

wKgaomTxiiqAUzaNAAF78MXkop8480.png

a.原始離線處理系統(tǒng): 本階段主要是實現(xiàn)業(yè)務(wù)加工入口從0到1的構(gòu)建。整體上還沒有形成完備的框架體系并且開發(fā)成本較高,并且所有業(yè)務(wù)邏輯混在一個公共服務(wù)中,不同數(shù)據(jù)通過不同配置調(diào)用不同的策略邏輯。

b.業(yè)務(wù)離線處理架構(gòu): 本階段初步形成一整套的業(yè)務(wù)服務(wù)處理框架,有統(tǒng)一的服務(wù)框架和開發(fā)階段,實現(xiàn)了云原生和服務(wù)隔離的模式。

c.Serverless架構(gòu): 本階段業(yè)務(wù)的接入效率上進一步提高,業(yè)務(wù)從管理服務(wù)面向轉(zhuǎn)向管理業(yè)務(wù)加工函數(shù),業(yè)務(wù)只需注冊函數(shù)就可以快速測試上線,同時支持容器實例的自動伸縮,使得在業(yè)務(wù)的使用效率得到的極大提升的同時相應(yīng)資源成本急劇壓縮。

d.數(shù)據(jù)智能架構(gòu): 在原有服務(wù)部署的基礎(chǔ)上同時實現(xiàn)了數(shù)據(jù)的管理,從函數(shù)管理進一步升級成為需求管理,實現(xiàn)多語言服務(wù)框架支持的基礎(chǔ)上,成本進一步壓縮&效率提升。

03計算系統(tǒng)核心設(shè)計核心思路

&核心實現(xiàn)

下面詳細闡述各個階段的詳細特點以及核心實現(xiàn)。

3.1 原始離線處理系統(tǒng)

這套架構(gòu)應(yīng)用于2018以前,當時垂類的發(fā)展整體屬于起步階段。該階段業(yè)務(wù)主要的需求就是可以將原始的業(yè)務(wù)數(shù)據(jù)直接上線。架構(gòu)的主要精力聚焦于通用業(yè)務(wù)能力的建設(shè)。隨著業(yè)務(wù)的逐步深耕,發(fā)現(xiàn)有少量的業(yè)務(wù)慢慢演化出來自定義加工的需求。

根據(jù)當時的業(yè)務(wù)需求,最終從原有的數(shù)據(jù)加工模塊中衍生出業(yè)務(wù)數(shù)據(jù)加工系統(tǒng)。當前階段的數(shù)據(jù)加工處理方式是使用統(tǒng)一Handler處理方式,當然這個處理并非是必選項,多數(shù)業(yè)務(wù)仍然不需要自定義加工處理。各業(yè)務(wù)之間也完全沒有數(shù)據(jù)隔離,這種架構(gòu)最核心的意義就是從無到有提供業(yè)務(wù)的自定義加工能力。如下圖所示,此時計算系統(tǒng)只包含計算引擎部分,其他系統(tǒng)完全沒有建設(shè)。下面會對該系統(tǒng)的部分細節(jié)進行詳細說明。

wKgaomTxiiqAUDp8AAA9gYceFnk143.png

3.1.1 業(yè)務(wù)特點

這個時期的業(yè)務(wù)特點主要有兩個:

多數(shù)業(yè)務(wù),核心訴求最主要的是通用能力的建設(shè)。

個別業(yè)務(wù),有少量簡單的自定義加工處理的需求。

所以這個時間點的核心主要是為了解決業(yè)務(wù)加工入口的問題。

3.1.2 核心設(shè)計

初版本的離線架構(gòu)模塊非常簡單,如下圖所示藍色部分。隨著業(yè)務(wù)發(fā)展,為了滿足業(yè)務(wù)自定義加工的需求,引入紅色數(shù)據(jù)通路,其中統(tǒng)一數(shù)據(jù)加工模塊就是主要處理業(yè)務(wù)自定義加工邏輯。

wKgaomTxiiqAIr6zAAJExhqfQvs087.png

如上圖所示,灰色部分是業(yè)務(wù)外層接入的數(shù)據(jù)系統(tǒng),最開始的時候只有XML、POST 和 數(shù)據(jù)隊列的這種模式。藍色部分就是業(yè)務(wù)沒有自定義時候原始的數(shù)據(jù)框架代碼。紅色部分就是為了針對業(yè)務(wù)自定義需求引入的框架模塊:

用戶數(shù)據(jù)代理:主要是為了適配業(yè)務(wù)數(shù)據(jù)接入方式,數(shù)據(jù)的協(xié)議打平,主要是不同用戶協(xié)議的RPC做建庫層的數(shù)據(jù)轉(zhuǎn)化。

用戶通用需求:主要是為用戶共性需求做統(tǒng)一處理,會根據(jù)不同業(yè)務(wù)的不同配置做功能處理:比如業(yè)務(wù)圖片視頻的轉(zhuǎn)化處理,業(yè)務(wù)用戶版本管理處理以及用戶的核心機制等。

統(tǒng)一數(shù)據(jù)加工模塊:主要是為了統(tǒng)一用戶數(shù)據(jù)的加工處理,主要是給所有接入的業(yè)務(wù)的數(shù)據(jù)提供了一個可以數(shù)據(jù)加工的入口。

3.2 業(yè)務(wù)處理架構(gòu)

如上文所述3.1架構(gòu)核心價值是自定義加工能力的從0到1的建設(shè),然而隨著業(yè)務(wù)的快速發(fā)展,越來越多的業(yè)務(wù)需要自定義加工能力。業(yè)務(wù)自定義加工的需求從原來個位數(shù)迅速膨脹了10倍。因此,為了滿足業(yè)務(wù)在自定義開發(fā)上易用性和穩(wěn)定性的訴求,將原來3.1的中心化的處理模式升級成為服務(wù)框架的模式??傮w上來說,當前階段的計算系統(tǒng)建設(shè)已經(jīng)基本具備了服務(wù)層和業(yè)務(wù)層兩層:

wKgaomTxiiqAEmbSAAEdXDvt7AM434.png

業(yè)務(wù)層:業(yè)務(wù)通過平臺已經(jīng)基本上可以實現(xiàn),基礎(chǔ)的服務(wù)管理。

服務(wù)層:對計算引擎進行重構(gòu),讓新的服務(wù)框架支持業(yè)務(wù)的高效開發(fā)。

下面會對該系統(tǒng)的部分細節(jié)進行詳細說明。

3.2.1 業(yè)務(wù)特點

由于3.1中上一代系統(tǒng)數(shù)十個業(yè)務(wù)自定義需求統(tǒng)一在同一個模塊里面開發(fā)&統(tǒng)一線上運行,遇到了主要如下幾方面問題:

效率:業(yè)務(wù)在相同的模塊里面開發(fā),導(dǎo)致業(yè)務(wù)開發(fā)上線的過程中經(jīng)常遇到?jīng)_突,以及上線排隊的問題,導(dǎo)致整體生效周期比較長。

穩(wěn)定性:由于這種業(yè)務(wù)流量混合的模式隔離性比較差,導(dǎo)致單個業(yè)務(wù)出問題,經(jīng)常會影響所有的業(yè)務(wù)。

因此,架構(gòu)構(gòu)建出完善的服務(wù)框架,業(yè)務(wù)可以基于服務(wù)框架構(gòu)建自己的業(yè)務(wù)代碼,從效率和穩(wěn)定性兩個方面解決上述問題:

效率:服務(wù)開發(fā)上線的過程是完全隔離的,業(yè)務(wù)在開發(fā)上線的過程中完全沒有業(yè)務(wù)阻塞,整體服務(wù)上線周期從天級縮短到小時級別。

穩(wěn)定性:由于每個業(yè)務(wù)服務(wù)執(zhí)行邏輯都有完全獨立的app,導(dǎo)致業(yè)務(wù)的穩(wěn)定性大大提升,不會存在業(yè)務(wù)之間的互相影響。

3.2.3 核心設(shè)計

wKgZomTxiiqAcFUUAAD2NWEuwYQ234.png

業(yè)務(wù)處理框架:建設(shè)一個數(shù)據(jù)處理框架,業(yè)務(wù)可以基于這個框架來實現(xiàn)自己的業(yè)務(wù)處理功能。

任務(wù)平臺:每個任務(wù)注冊、升級、管理都可以通過任務(wù)平臺來進行管理。

統(tǒng)一網(wǎng)關(guān):所有數(shù)據(jù)的統(tǒng)一入口,統(tǒng)一接收上游數(shù)據(jù),并且做數(shù)據(jù)的轉(zhuǎn)發(fā)和分發(fā)。

業(yè)務(wù)APP:每個業(yè)務(wù)都有自己獨立服務(wù)的app,每個業(yè)務(wù)開發(fā)是基于框架的獨立分支開發(fā),上線是每個業(yè)務(wù)單獨上線,業(yè)務(wù)處理的服務(wù)流量也都是完全隔離的。

3.3 Serverless架構(gòu)

如上文中3.2表述已經(jīng)解決系統(tǒng)隔離性的問題,業(yè)務(wù)快速發(fā)展從最開始的幾十個,發(fā)展到上百個業(yè)務(wù)應(yīng)用。當業(yè)務(wù)發(fā)展到井噴狀態(tài)后,服務(wù)框架的形式已經(jīng)完全不能滿足業(yè)務(wù)的開發(fā)需求。

Serverless架構(gòu)如下圖所示,此時計算系統(tǒng)整體版圖已經(jīng)相對完善,相比上一代計算架構(gòu),不僅僅業(yè)務(wù)層包含的全流程的優(yōu)化,提供了完整的工具功能;服務(wù)層充分考慮的架構(gòu)的設(shè)計和復(fù)用,同時增加控制層增加智能調(diào)度的功能針對系統(tǒng)流量進行資源的動態(tài)調(diào)度。

wKgZomTxiiqAH79pAAEe6Mijank334.png

下面會對該系統(tǒng)的部分細節(jié)進行詳細說明。

3.3.1 業(yè)務(wù)特點&解決問題

業(yè)務(wù)學(xué)習(xí)成本:大量的新業(yè)務(wù)接入需要進行開發(fā),導(dǎo)致框架本身學(xué)習(xí)成本需要幾天的時間,新業(yè)務(wù)的接入和開發(fā)的時間基本上都在周級別。

資源如何節(jié)省:大量的業(yè)務(wù)也帶來app的高速膨脹,原來接入的數(shù)百臺機器已經(jīng)用滿,到了資源瓶頸,當前的資源量無法支持業(yè)務(wù)的快速膨脹。

3.3.3 核心設(shè)計

wKgZomTxiiqAeXY4AADcCPJc3lY934.png

應(yīng)用層:針對于基礎(chǔ)服務(wù)架構(gòu),上面給業(yè)務(wù)開放的各種云服務(wù),從業(yè)務(wù)的 接入、開發(fā)到后面的調(diào)試、測試,到服務(wù)上線后的監(jiān)控。

服務(wù)層:這部分是整體架構(gòu)的基礎(chǔ),應(yīng)用層都是基于這里進行開發(fā)的,這部分是整個系統(tǒng)的基石,屬于整體系統(tǒng)的核心框架。

調(diào)度層:通過根據(jù)流量形式的擴縮容,保證后續(xù)服務(wù)可以自動化的進行服務(wù)操作。

下面重點介紹一下 服務(wù)層的主要內(nèi)容,對業(yè)務(wù)來說主要包含兩部分:

極致抽象的業(yè)務(wù)框架:是核心框架基礎(chǔ)中的基礎(chǔ),提供新的開發(fā)范式同時,為后續(xù)智能調(diào)度奠定良好基礎(chǔ)。

高度復(fù)用的基礎(chǔ)服務(wù):強大豐富的后端服務(wù)能力封裝,支持業(yè)務(wù)低成本復(fù)用,降低開發(fā)成本同時提升穩(wěn)定性。同時系統(tǒng)還提供強大的編排能力,低成本支持業(yè)務(wù)從簡單到復(fù)雜的發(fā)展。

極致抽象的業(yè)務(wù)框架

業(yè)務(wù)框架作為FaaS層和業(yè)務(wù)代碼的載體,是整個業(yè)務(wù)邏輯的代碼框架。框架本身維護數(shù)據(jù)流語義,面向有向無環(huán)圖(DAG)的數(shù)據(jù)流,調(diào)用業(yè)務(wù)函數(shù)代碼。業(yè)務(wù)框架是面向有向無環(huán)圖的數(shù)據(jù)流實時計算,基于公司基礎(chǔ)的數(shù)據(jù)流框架支持完備的流式計算語義,結(jié)合業(yè)務(wù)場景需要功能構(gòu)建出業(yè)務(wù)框架:

wKgaomTxiiqADf2mAAD3p76jAiU229.png

如上圖左邊就是用戶實際的執(zhí)行代碼,對于函數(shù)的接口定義:入?yún)⒑头祷刂刀际荄ict類型。業(yè)務(wù)的代碼邏輯直接在函數(shù)中實現(xiàn),需要變更的數(shù)據(jù),如上圖所示業(yè)務(wù)在根目錄下增加了一個時間戳字段,然后把更新后的結(jié)果傳遞給下游。

業(yè)務(wù)端使用開發(fā)成本低的腳本語言進行開發(fā)(例如Python),基礎(chǔ)服務(wù)框架使用C++實現(xiàn),結(jié)合數(shù)據(jù)壓縮、批處理、數(shù)據(jù)預(yù)分發(fā)等機制,使得業(yè)務(wù)可以在簡化服務(wù)框架開發(fā)同時優(yōu)化服務(wù)運行性能。通過架構(gòu)層面的優(yōu)化策略來達到服務(wù)性能和開發(fā)成本的平衡。

高度復(fù)用的基礎(chǔ)服務(wù)

業(yè)務(wù)依賴的后端服務(wù),包括多媒體長留服務(wù),數(shù)據(jù)存儲服務(wù),策略計算等十項服務(wù)能力,所有的服務(wù)架構(gòu)的支持目標都是通過簡單配置、少量代碼的方式進行服務(wù)接入。

架構(gòu)通用能力:包括索引處理(倒排、正排、向量索引),數(shù)據(jù)審核(政治敏感數(shù)據(jù)/色情數(shù)據(jù)識別&過濾),多路分發(fā)、數(shù)據(jù)建庫等能力。

與業(yè)務(wù)聯(lián)合研發(fā)的能力:數(shù)據(jù)的低質(zhì)過濾能力(實現(xiàn)數(shù)據(jù)清洗/歸一化/數(shù)據(jù)去重/類目拼接),數(shù)據(jù)多元融合,數(shù)據(jù)質(zhì)量打分計算(質(zhì)量打分/作弊識別/物料打分)。

基于公司強大基礎(chǔ)能力: 多媒體處理服務(wù)(外鏈轉(zhuǎn)內(nèi)鏈/OCR/水印計算/重復(fù)圖計算/主體識別/視頻轉(zhuǎn)儲等),自然語言處理服務(wù),數(shù)據(jù)沉淀服務(wù)。

支持的基礎(chǔ)服務(wù)(BaaS服務(wù))主要是兩個特點:簡單穩(wěn)定 & 充分集成公司內(nèi)其他優(yōu)質(zhì)能力。用戶通過SDK調(diào)用、算子復(fù)用和數(shù)據(jù)流復(fù)用等方式直接進行能力復(fù)用,完全不需要進行服務(wù)的部署和管理,服務(wù)易用性、穩(wěn)定性由搜索中臺來處理。使用任何服務(wù)后端都可以收口在一個地方,避免業(yè)務(wù)頻繁跟多個服務(wù)團隊進行交流處理,極大降低業(yè)務(wù)使用成本。業(yè)務(wù)最開始接入通常只需要簡單的少數(shù)功能(例如,修改部分字段的信息),多數(shù)業(yè)務(wù)直接用我們提供的平臺化的開發(fā)模板即可完成開發(fā)。但是隨著業(yè)務(wù)的逐步深耕,業(yè)務(wù)逐步使用,業(yè)務(wù)會向復(fù)雜逐步過渡,例如搜索中臺某業(yè)務(wù)通過復(fù)用數(shù)十種能力的組合使用,建設(shè)出具有深度定制的數(shù)據(jù)系統(tǒng)。

wKgZomTxiiqATnf1AADK2UJHfig522.png

3.4 數(shù)據(jù)智能架構(gòu)

如上文中3.3 表述已經(jīng)很大程度上解決業(yè)務(wù)接入效率的問題并且在資源的使用效率上實現(xiàn)根據(jù)流量的擴縮容實現(xiàn)的資源極大程度的節(jié)省,業(yè)務(wù)的app的數(shù)量已經(jīng)發(fā)展到上千個,業(yè)務(wù)對于效率、成本、服務(wù)質(zhì)量提出來更高的要求。至此已經(jīng)構(gòu)建出,從業(yè)務(wù)層、邏輯層、服務(wù)層、控制層的四層架構(gòu),實現(xiàn)離線計算系統(tǒng)從指令式計算系統(tǒng)到聲明式計算系統(tǒng)的徹底轉(zhuǎn)變。

wKgaomTxiiqAY9V7AAEuvr9nvs0104.png

3.4.1 業(yè)務(wù)特點

效率業(yè)務(wù)的迭代開發(fā)很多都是針對少數(shù)幾個字段,但是當前業(yè)務(wù)同學(xué)仍然需要了解服務(wù)全拓撲才能開發(fā)。

隨著業(yè)務(wù)復(fù)雜深耕業(yè)務(wù)的開發(fā)迭代業(yè)務(wù)開發(fā)者出現(xiàn)多語言開發(fā)情況來提高服務(wù)的開發(fā)和執(zhí)行效率。

業(yè)務(wù)如何實現(xiàn)新類目的快速接入、在不了解全面的情況下快速迭代。

計算引擎執(zhí)行效率更高,用更少的資源計算跑更多的服務(wù)資源。

業(yè)務(wù)問題能不能快速定位&發(fā)現(xiàn)以及問題的自動處理。

3.4.2 核心思路

從設(shè)計思路來看當前系統(tǒng)架構(gòu)是上一代架構(gòu)的拓展:

數(shù)據(jù)管理:出了原始服務(wù)管理外,引入數(shù)據(jù)全面管理,為列計算奠定基礎(chǔ)。

編排能力:將原來業(yè)務(wù)手動編排的函數(shù)能力擴展成為需求聲明式自動編排的能力。

服務(wù)處理:極致高效的服務(wù)處理能力,支持多種不同業(yè)務(wù)開發(fā)者的高效開發(fā)效率,將整體的計算從行計算轉(zhuǎn)向列計算,提高整體的計算復(fù)用。

控制能力:將原來自動伸縮的能力擴展成為智能控制能力,做到問題的自動識別、自動分發(fā)、自動分析 和 自動處理。

整體架構(gòu)的設(shè)計核心理念大致是多層抽象、分層復(fù)用。

3.4.3 核心設(shè)計

當前階段的核心設(shè)計已經(jīng)呈現(xiàn)出完整的四層架構(gòu)的抽象能力:

wKgaomTxiiqAY9V7AAEuvr9nvs0104.png

應(yīng)用層:業(yè)務(wù)直接可見的相關(guān)服務(wù),包括業(yè)務(wù)從開始數(shù)據(jù)接入到服務(wù)運行的全周期各階段各種應(yīng)用。

邏輯層:也可以稱之為編排層,負責(zé)將原始的業(yè)務(wù)需求表達轉(zhuǎn)化成為線上真實運行的服務(wù), 業(yè)務(wù)通過Codeless 平臺化選擇勾選自己的功能集合,以及對應(yīng)數(shù)據(jù)映射關(guān)系進行提交,將用戶提供的功能 & 數(shù)據(jù)的綁定關(guān)系轉(zhuǎn)化為業(yè)務(wù)的自定義的功能 以及映射關(guān)系。

服務(wù)層:計算系統(tǒng)的核心,業(yè)務(wù)實際計算運行在這層,主要包含計算引擎 和服務(wù)架構(gòu)兩部分。向上承接邏輯層的編排結(jié)果運行服務(wù),向下提供基礎(chǔ)信號作為控制層的輸入。

控制層:包含智能調(diào)度和智能控制兩部分:智能控制主要是通過自動接受業(yè)務(wù)指標數(shù)據(jù)進行智能控制保證服務(wù)穩(wěn)定,而智能調(diào)度是除了根據(jù)數(shù)據(jù)流量進行進行自動伸縮以外還可以根據(jù)業(yè)務(wù)服務(wù)關(guān)系進行流量復(fù)用,減少業(yè)務(wù)的重復(fù)計算。

下面我們針對部分核心系統(tǒng)(如上圖藍色部分)的設(shè)計作展開說明。

需求表達邏輯

wKgZomTxiiqATJ4BAAD0iMZLENk513.png

需求邏輯的表達的核心就是如何把用戶原始的功能需求轉(zhuǎn)化成真是線上服務(wù)的算子、配置、關(guān)系的表達。用戶最原始的輸入包含兩部分:

業(yè)務(wù)數(shù)據(jù):業(yè)務(wù)數(shù)據(jù)需要功能的最小單位進行切割,后續(xù)算子進行配置轉(zhuǎn)化以及服務(wù)綁定的列式計算。這里說的有點繞口,其實本質(zhì)上就是把業(yè)務(wù)數(shù)據(jù)的原始Proto或者數(shù)據(jù)Schema注冊一下就可以。

功能集合:功能集合既可以用戶直接使用的系統(tǒng)提供的默認模版的功能集合 也可以是用戶通過平臺自定義的集合,值的注意的是每個功能都都有其指定的傳入參數(shù),比如圖片計算,需要傳入圖片URL,向量計算需要傳入原始數(shù)據(jù) & 向量參數(shù)等等。功能完成后也會有對應(yīng)的輸出結(jié)果業(yè)務(wù)可以指定。

獲取完成用戶的原始輸入后,架構(gòu)通過兩層邏輯映射的方式,將原始用戶需求轉(zhuǎn)化成為線上服務(wù)部署信息:

需求表達服務(wù):用戶的原始需求轉(zhuǎn)化為功能模版的組合。這個階段會根據(jù)用戶配置,將原始算子和數(shù)據(jù)進行綁定,原始用戶抽象的需求實例化成帶數(shù)據(jù)的算子集合。

需求編排服務(wù):通過業(yè)務(wù)算子的本身的依賴關(guān)系和數(shù)據(jù)依賴的血緣關(guān)系進行表達組合,將帶數(shù)據(jù)的算子構(gòu)建出N個有向無環(huán)圖。

整體需求表達都可以通過Codeless方式表達,通過描述功能集合數(shù)據(jù)集合描述方式,加之兩層邏輯映射的轉(zhuǎn)化,這樣就可以將原始用戶聲明式需求直接轉(zhuǎn)化線上服務(wù)關(guān)系和系統(tǒng)配置,并且服務(wù)的算子的拓撲關(guān)系完全可以通過業(yè)務(wù)的數(shù)據(jù)關(guān)系表達自動化推導(dǎo)出來, 實現(xiàn)了95%以上的功能可以完全自動化配置實現(xiàn),當然有個別服務(wù)無法低成本轉(zhuǎn)化表達的,也提供了人工接口。

計算引擎實現(xiàn)

計算引擎層的核心組件大致分成兩部分,圖計算引擎 & 多語言算子的執(zhí)行引擎 。

wKgaomTxiiuAV1qjAACqvimMjuk683.png

圖計算引擎:主要控制的業(yè)務(wù)拓撲的表達關(guān)系,通過有向無環(huán)圖來表達。

算子執(zhí)行引擎:主要控制業(yè)務(wù)真實業(yè)務(wù)函數(shù)的執(zhí)行,不同語言有不同的函數(shù)實現(xiàn),例如Python、GoLang、C/C++都有自己的執(zhí)行引擎。

下面針對兩部分進行仔細說明

線程管理:每個業(yè)務(wù)算子默認都是多線程的分發(fā)模式(如果業(yè)務(wù)算子只支持單線程,可以把線程數(shù)設(shè)置成1)。

分發(fā)模式:數(shù)據(jù)消費分發(fā)模式默認是輪詢分發(fā),固定KEY分發(fā)(實現(xiàn)保序)以及按消費能力分發(fā)。

數(shù)據(jù)壓縮:這個默認支持常見數(shù)據(jù)壓縮方法,是可選的吞吐優(yōu)化手段,支持LZ4、Gzip、Snappy等常見壓縮算法。

wKgaomTxiiuACCqFAAFt_UV9anM109.png

圖計算引擎實現(xiàn):實現(xiàn)的核心功能就是實現(xiàn)支持表達有向無環(huán)圖的框架,使用C++實現(xiàn)的,圖下圖部分中,藍色部分就是有向無環(huán)圖的框架實現(xiàn),當然我們這個框架的底層實現(xiàn)支持了多種數(shù)據(jù)的表達:

wKgZomTxiiuARaLUAAEtQQY3Ggg988.png

本地隊列表達:如圖左下角部分表達的就是一個簡單的拓撲表達,拓撲關(guān)系是通過本地的無鎖隊列進行串聯(lián)的,每個隊列下面掛載一個業(yè)務(wù)算子,業(yè)務(wù)算子處理完成數(shù)據(jù)后,算子拓撲配置管理分發(fā)到下游的本地隊列中,如果是最后一個算子,數(shù)據(jù)結(jié)果全部處理完成后輸出到遠程隊列Producer中。左側(cè)這邊是框架內(nèi)部的通用功能:

遠程隊列表達:每個藍色大框表示一個具體實例,實例之間使用遠程隊列交互,如果每個實例里面只有一個業(yè)務(wù)算子,這種的交互方式類似于遠程隊列的表達方式。

混合方式表達:更多使用方式是混合使用,一個巨型拓撲會拆分成多個子拓撲,每個子拓撲使用本地隊列的方式進行表達,而子拓撲之間使用遠程隊列的方式進行表達。

多語言引擎執(zhí)行層:語言執(zhí)行層整體框架整體根據(jù)不同的語言有不同實現(xiàn)模式,大體上分成三部分:編譯型、解釋型、原生C++。

解釋型:最典型的就是Python實現(xiàn)方式,這種方式也是過去同學(xué)最喜歡用的開發(fā)語言之一。圖上圖最上面,左邊灰色部分是C++開發(fā)的部分,最右邊黃色部分是業(yè)務(wù)代碼,中間這部分就是C++轉(zhuǎn)Python的交互引擎調(diào)用。這種方式的本質(zhì)就C++的開發(fā)引擎使用PyBind實現(xiàn)指定接口服務(wù)解釋器,根據(jù)指定的數(shù)據(jù)序列化和反序列化方式進行操作,在函數(shù)調(diào)用時再實時轉(zhuǎn)化為python的Dict。

編譯型:典型是Golang的使用方式。與Python的實現(xiàn)類似,左邊灰色部分是C++開發(fā)的部分,最右邊黃色部分是Golang業(yè)務(wù)代碼,中間是C++轉(zhuǎn)Golang的交互引擎。Golang的實現(xiàn)相比Python的方式有點復(fù)雜,本質(zhì)是通過原生CGO作為用戶接口,為了統(tǒng)一用戶接口層,其實分成兩部分:左半部分是直接跟C++交互,直接用C++實現(xiàn)負責(zé)把原生C++轉(zhuǎn)化為基礎(chǔ)的C類型的函數(shù)指針進行調(diào)用。右半部分使用Golang實現(xiàn)負責(zé)把原生序列化好的函數(shù)反序列化成業(yè)務(wù)結(jié)構(gòu)體,然后再進行真正調(diào)用。

原生C++:這里很多人可能覺得奇怪,C++不是也是編譯型的么,已經(jīng)有編譯型的實現(xiàn)模式何必畫蛇添足,增加這么一種實現(xiàn)模式,其實本質(zhì)不然,golang雖然是編譯型語言,底層框架的實現(xiàn)由于盡量考慮通用性,數(shù)據(jù)傳遞的過程中勢必需要進行序列化和反序列操作,而在原生的C++的實現(xiàn)過程中我們在實現(xiàn)的過程完全摒棄所有的序列化和反序列操作,數(shù)據(jù)在本地隊列中的傳遞完全是業(yè)務(wù)的數(shù)據(jù)指針(而非序列化數(shù)據(jù)),而每個業(yè)務(wù)算子在處理數(shù)據(jù)過程中,直接根據(jù)原始的數(shù)據(jù)指針通過反射機制(實現(xiàn)方式有很多最簡單的 map)可以直接獲取對應(yīng)列的數(shù)據(jù)項,整個過程無鎖的超高效率。這里的核心優(yōu)化思路數(shù)據(jù)鏈式處理過程。拉鏈上的每個算子,都共享同一個輸入和輸出。每個算子,其實就是一個接口相同的函數(shù),這樣就可以隨意地調(diào)整函數(shù)指針的組合,形成不同的處理鏈。比如:一個請求走 A 模型排序,一個請求要走 B 模型排序,他們可以共享前序的算子,只在最后一個算子有所不同。在鏈式處理基礎(chǔ)上,算子也可以是繼承同一基類接口的派生類,或者 lambda 表達式。結(jié)合工廠模式等一些編程技巧,處理鏈的調(diào)整可以配置化、動態(tài)化、腳本化。實測執(zhí)行業(yè)務(wù)單算子普通的純數(shù)據(jù)項帶分支的多節(jié)點的拓撲計算單機(單線程/算子)可以達到數(shù)十萬的處理能力。

通過新計算引擎的實現(xiàn)從使用上完全兼容上一代計算系統(tǒng)的使用方式,將不常使用的功能做精簡,同時優(yōu)化復(fù)雜拓撲執(zhí)行方式,通過架構(gòu)層也業(yè)務(wù)層解耦,支持多語言高效執(zhí)行方式,對于老業(yè)務(wù)平遷的數(shù)據(jù)框架平均計算效率提高5~10倍,同時業(yè)務(wù)由于針對性建設(shè)業(yè)務(wù)框架業(yè)務(wù)開發(fā)效率進一步提升。

智能控制實現(xiàn)

自動化問題分析引擎是整個智能控制系統(tǒng)的大腦。它上游接收觀測提供的原始數(shù)據(jù),進行自動的分析決策后,通過系統(tǒng)提供的自愈能力處理。自動化問題分析引擎的核心思路: 只要歷史上出現(xiàn)過的問題,RD同學(xué)能找到問題和解決方案,就可以轉(zhuǎn)化為系統(tǒng)規(guī)則和后置函數(shù)梳理。那當下一次遇到問題則無需人工干預(yù)。規(guī)則引擎的核心分析過程是2段式的:

階段1: 傳統(tǒng)配置化的規(guī)則引擎的配置(上圖中右上角黃色部分),配置多個采集指標項的邏輯關(guān)系(與或交非), 這里主要是針對問題的基礎(chǔ)分析功能,判定規(guī)則是否觸發(fā)。

階段2: 基于這個基礎(chǔ)分析的結(jié)果,進行后置Function的執(zhí)行分析,這個主要是針對復(fù)雜問題的分析補充, 最終執(zhí)行引擎根據(jù)這個返回結(jié)果進行函數(shù)執(zhí)行。

下面針對問題分析引擎的執(zhí)行結(jié)果如下:

wKgZomTxiiuASY9MAAI2GlCM4Ww668.png

前提: 開發(fā)者需要配置好處理邏輯規(guī)則(以及規(guī)則依賴的數(shù)據(jù)項,必填) & 回調(diào)函數(shù)(選填)。

數(shù)據(jù)解析器: 數(shù)據(jù)解析器主要承擔(dān)的數(shù)據(jù)的原始抽取的工作,一共分成如下3步:

a.配置解析: 邏輯執(zhí)行根據(jù)開發(fā)者配置的數(shù)據(jù)信息解析;

b.數(shù)據(jù)抽取: 根據(jù)解析出來的配置通過數(shù)據(jù)接口進行獲取,可以從統(tǒng)一接口根據(jù)配置的信息從不同的介質(zhì)充抽取所需求的信息;

c.數(shù)據(jù)歸一化: 將不同介質(zhì)的原始數(shù)據(jù)歸一化成為統(tǒng)一的數(shù)據(jù)格式供規(guī)則管理器使用。

規(guī)則管理器: 規(guī)則管理器主要承擔(dān)核心的邏輯分析工作,一共分成如下幾步:

a.規(guī)則解析: 根據(jù)開發(fā)者配置的規(guī)則邏輯,將原始配置信息,解釋成原始的規(guī)則樹。

b.執(zhí)行計算: 根據(jù)數(shù)據(jù)解析器提供的數(shù)據(jù)結(jié)果和配置的函數(shù)規(guī)則分別執(zhí)行計算。執(zhí)行計算過程中最重要的就是基礎(chǔ)分析器,整體提供了5大基礎(chǔ)能力,數(shù)十種常見的邏輯計算來輔助規(guī)則配置。

c.規(guī)則邏輯運算: 根據(jù)上層解析出來的規(guī)則樹 和 每個數(shù)據(jù)項執(zhí)行完成的計算結(jié)果進行邏輯運算,并根據(jù)執(zhí)行的結(jié)果確定是否進行高級數(shù)據(jù)分析器,如果判斷結(jié)果為真則根據(jù)所配置的后置函數(shù)進行處理。

高級數(shù)據(jù)分析器: 如圖所示有兩種模式,對于簡單基礎(chǔ)分析可以判斷結(jié)果的,直接給默認的處理函數(shù)進行數(shù)據(jù)拓傳;對于簡單邏輯規(guī)則無法準確表達的,開發(fā)者可以自定義后置分析函數(shù), 函數(shù)會將原始數(shù)據(jù)和基礎(chǔ)計算的計算結(jié)果作為參數(shù)傳出來,開發(fā)者只需要通過處理后的數(shù)據(jù)描述清楚分析邏輯即可。

動作執(zhí)行器: 就是這個分析器的真正的執(zhí)行引擎,根據(jù)規(guī)則運算的結(jié)果中包含的參數(shù)進行動態(tài)調(diào)整。

通過智能控制系統(tǒng)的建設(shè),月級別分析處理上萬的異常問題,自動恢復(fù)的比例占總數(shù)的95%以上,絕大多數(shù)的問題幾分鐘內(nèi)完成自動恢復(fù), 核心故障同比減少60% (由于預(yù)處理防止普通問題惡化成嚴重問題)。

04結(jié)論以及展望

本文全篇以離線計算系統(tǒng)的發(fā)展為主線,貫穿全文講解遇到的問題以及解決方案。尤其是當前新一代架構(gòu)核心就是以數(shù)據(jù)+功能為核心的聲明式的設(shè)計,配合高效計算引擎、配合智能化的設(shè)計,把整體的離線計算系統(tǒng)的高度做了進一步提升。設(shè)計中其實還是雖然解決了過去的很多問題,但是仍然有不完善的地方,當然當前的效果還遠沒有達到最終的理想狀態(tài),部分系統(tǒng)功能有待持續(xù)性的打磨升級。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2736

    瀏覽量

    47787
  • 百度
    +關(guān)注

    關(guān)注

    9

    文章

    2283

    瀏覽量

    90804
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73887
  • 計算系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    10319

原文標題:百度垂類離線計算系統(tǒng)發(fā)展歷程

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    2022百度世界大會-百度智能交通幫助實現(xiàn)“綠燈自由”

    2022百度世界大會-百度智能交通幫助實現(xiàn)“綠燈自由” ? ? ? 審核編輯:彭靜
    發(fā)表于 07-21 15:52 ?727次閱讀
    2022<b class='flag-5'>百度</b>世界大會-<b class='flag-5'>百度</b>智能交通幫助<b class='flag-5'>百</b>姓<b class='flag-5'>實現(xiàn)</b>“綠燈自由”

    百度地圖離線API調(diào)用教程

    前言:對百度地圖的使用已經(jīng)成為了我們生活中的一部分,對于習(xí)慣使用百度地圖的朋友來說更是不可或缺。但是如果沒有網(wǎng)絡(luò)的話就不能正常使用百度地圖的服務(wù),制作一款離線地圖在這個時候就顯得尤為重
    發(fā)表于 01-24 09:42

    百度總裁:百度在人工智能領(lǐng)域已有重大突破

    ?! ∨c此同時,百度的語音識別技術(shù)也日臻完善。張亞勤表示,百度通過收集整理大量數(shù)據(jù),省去復(fù)雜的預(yù)處理環(huán)節(jié),直接輸入音頻文件,再通過深度神經(jīng)網(wǎng)絡(luò)輸出字符,從而大大提高系統(tǒng)運算效率。目前該系統(tǒng)
    發(fā)表于 07-01 15:22

    谷歌地圖、百度地圖,離線+在線

    控件的詳細使用說明。2、在map.html、map.js演示了谷歌地圖API、百度地圖API的使用,可在此基礎(chǔ)上實現(xiàn)更豐富更復(fù)雜的應(yīng)用。3、腳本庫支持谷歌地圖、百度地圖,離線+在線。4
    發(fā)表于 07-19 22:16

    Firefly 百度人臉識別開發(fā)套件

    ,加速人工智能產(chǎn)品落地?;谏疃葘W(xué)習(xí)的百度離線人臉識別算法,實現(xiàn)了活體識別、精準檢測和管理人臉信息等功能。離線算法永久使用,提供完整的API,全面開放SDK,方便企業(yè)快速高效地進行二次
    發(fā)表于 07-25 10:19

    語音識別有哪些成本稍微低的解決方案,訊飛或百度的能離線

    語音識別有哪些成本稍微低的解決方案,訊飛或百度的能離線嗎如題 只識別命令
    發(fā)表于 07-07 14:50

    百度綠蘿算法

    百度綠羅計算方法是百度搜索引擎在二月份上作弊計算方法。計算方法主要與超級鏈作弊作斗爭,例如超鏈接代理,銷售鏈接和購買鏈接。
    發(fā)表于 10-10 09:47

    labview調(diào)用百度人臉識別SDK

    本帖最后由 故人心 于 2021-11-19 13:52 編輯 labview實現(xiàn)人臉識別有多種途徑,我這里調(diào)用的百度的人臉識別SDK(C#版本),實現(xiàn)離線人臉識別。
    發(fā)表于 11-27 19:40

    百度的框計算平臺

      百度推出的框計算平臺,從表面上看是討好用戶之舉,但實際上是將大部分流量留在了自己的平臺上,并埋下了未來贏利的伏筆。而由此被甩出百度搜索框的眾多中小網(wǎng)站,
    發(fā)表于 10-20 11:06 ?938次閱讀

    百度“天智平臺”發(fā)布 開放百度大腦能力

    11月30日,2016百度云智峰會正式召開。百度云聯(lián)席總經(jīng)理劉煬發(fā)表了題為ABC時代的演講,并重點介紹了百度云人工智能平臺級解決方案天智,全面開放百度大腦能力,推動全行業(yè)的智能轉(zhuǎn)型,迎
    發(fā)表于 12-01 11:13 ?901次閱讀

    百度宣布量子計算研究所成立

    段潤堯?qū)用?b class='flag-5'>百度深感榮幸,他表示,將全力推動”百度量子、量子百度“的研究規(guī)劃,計劃五年時間里在百度組建世界一流的量子計算研究所,并在之后五年
    發(fā)表于 03-09 11:14 ?1152次閱讀

    百度大數(shù)據(jù)怎么使用

    百度大數(shù)據(jù)+連接垂直行業(yè),深挖用戶價值精準拓展客戶,高效經(jīng)營管理百度大數(shù)據(jù)+,是百度開放的新商業(yè)“能源庫”,旨在面向行業(yè)關(guān)鍵訴求,開放百度大數(shù)據(jù)核心能力,幫助企業(yè)先人一步創(chuàng)造新商業(yè)機會
    的頭像 發(fā)表于 12-18 16:11 ?9620次閱讀

    百度攜手新思科技 實現(xiàn)“讓計算更加智能”的愿景

    新思科技宣布,將與百度(納斯達克股票代碼:BIDU)持續(xù)深化合作,助力實現(xiàn)其“讓計算更加智能”的愿景。百度人工智能芯片“昆侖”已采用新思科技全流程解決方案。
    的頭像 發(fā)表于 03-12 14:37 ?2561次閱讀

    百度王海峰:自研云端AI通用芯片百度昆侖1已實現(xiàn)量產(chǎn)

    12月17日消息,在“ABC SUMMIT 2020百度云智峰會”上,百度CTO王海峰透露,百度自主研發(fā)了云端AI通用芯片—百度昆侖,其中百度
    的頭像 發(fā)表于 12-18 09:59 ?2747次閱讀

    大模型如何全面重構(gòu)搜索、辦公和營銷?2023百度世界李彥宏將解密

    、文庫、營銷平臺等重要產(chǎn)品將以全新面目驚艷亮相。 10月11日,百度舉行百度世界2023媒體預(yù)溝通會,百度集團副總裁、搜索平臺負責(zé)人肖陽,百度集團副總裁、移動生態(tài)商業(yè)體系負責(zé)人王鳳陽,
    的頭像 發(fā)表于 10-11 18:44 ?831次閱讀
    大模型如何全面重構(gòu)搜索、辦公和營銷?2023<b class='flag-5'>百度</b>世界李彥宏將解密