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

給奔跑中的火車換輪子,58速運(yùn)訂單調(diào)度系統(tǒng)架構(gòu)大解密

開(kāi)發(fā) 架構(gòu) 開(kāi)發(fā)工具
簡(jiǎn)單來(lái)說(shuō)我們的業(yè)務(wù)是做同城貨運(yùn),比如您去買一個(gè)大型家具,自己的家用車肯定是裝不下的,這時(shí)你可能需要找路邊的小型面包車或者金杯車來(lái)幫你搬運(yùn)。

今天很榮幸給大家介紹 58 速運(yùn)從艱苦創(chuàng)業(yè)到成為同城貨運(yùn)行業(yè)領(lǐng)頭人的整個(gè)系統(tǒng)演進(jìn)過(guò)程。

[[213231]]

簡(jiǎn)單來(lái)說(shuō)我們的業(yè)務(wù)是做同城貨運(yùn),比如您去買一個(gè)大型家具,自己的家用車肯定是裝不下的,這時(shí)你可能需要找路邊的小型面包車或者金杯車來(lái)幫你搬運(yùn)。

一般來(lái)講,很容易遇到黑車,而且價(jià)格不標(biāo)準(zhǔn),我們做的這個(gè)行業(yè)就是將這種傳統(tǒng)的黑車行業(yè)進(jìn)行線上化,在產(chǎn)品形態(tài)上可理解為滴滴打車的出租車版。

本次分享內(nèi)容主要分為4個(gè)部分:

  • 創(chuàng)業(yè)之初:快速迭代試錯(cuò)
  • 高速發(fā)展:穩(wěn)定、高效
  • 智能時(shí)代:效率、精準(zhǔn)
  • 總結(jié)

創(chuàng)業(yè)之初:快速迭代試錯(cuò)

58 速運(yùn)在 2014 年是作為 58 集團(tuán)下 20 多個(gè)孵化業(yè)務(wù)中的其中一個(gè),那個(gè)時(shí)期基本上是平均三個(gè)星期一個(gè)業(yè)務(wù)孵化上線,當(dāng)時(shí)有 20 多個(gè)業(yè)務(wù)孵化同時(shí)進(jìn)行。這個(gè)時(shí)間我們不斷的試錯(cuò),不斷去尋找 58 同城新的增長(zhǎng)點(diǎn)。

從上圖中,大家可以看到,我們所有的服務(wù)都是基于一個(gè)數(shù)據(jù)庫(kù)來(lái)運(yùn)行的,這個(gè)系統(tǒng)之間只需要通過(guò)一些簡(jiǎn)單的 tag 標(biāo)記就可以區(qū)分開(kāi)業(yè)務(wù),系統(tǒng)迭代非常快。

對(duì)于新孵化的業(yè)務(wù),我們?cè)黾恿艘恍┖?jiǎn)單的業(yè)務(wù)邏輯就能實(shí)現(xiàn)這個(gè)產(chǎn)品的快速上線,我們?cè)趦芍軆?nèi)實(shí)現(xiàn)了速運(yùn)用戶、商家的 APP 以及后端的產(chǎn)品上線。

派單-石器時(shí)代

這時(shí)的系統(tǒng)架構(gòu)是非常簡(jiǎn)單的,我們稱之為“石器時(shí)代”,當(dāng)時(shí)所有的訂單調(diào)度的邏輯放在一個(gè) Jar 包,然后通過(guò) MQTT 服務(wù)將訂單推送到司機(jī)的 APP 上。

當(dāng)時(shí)的訂單調(diào)度(也是我們最初級(jí)的訂單調(diào)度方案)是一個(gè)訂單搜索附近的司機(jī),然后由近到遠(yuǎn)的距離將訂單推送出去,司機(jī)搶單后即中單。因?yàn)樵趧?chuàng)業(yè)階段,我們需要吸引客戶、司機(jī),對(duì)于每單都會(huì)有補(bǔ)貼。

這個(gè)階段面臨的痛點(diǎn)如下:

  • 系統(tǒng)不穩(wěn)定,一個(gè)慢 SQL,全業(yè)務(wù)受影響,這里舉個(gè)非常普遍的例子,其他業(yè)務(wù)線小伙伴在上線時(shí),不小心寫(xiě)了一個(gè)慢 SQL,一個(gè)慢 SQL 就會(huì)把數(shù)據(jù)庫(kù)的所有連接占滿,導(dǎo)致所有的業(yè)務(wù)全部掛掉了,當(dāng)時(shí)聽(tīng)到的最多的反饋是:什么情況,怎么你們又掛了。
  • 多業(yè)務(wù)并存,訂單表索引多,性能下降,當(dāng)時(shí)有很多個(gè)業(yè)務(wù)在同時(shí)孵化,多業(yè)務(wù)并存,每一個(gè)業(yè)務(wù)都會(huì)根據(jù)它自己的業(yè)務(wù)需求在訂單表中建立索引,結(jié)果索引越來(lái)越多,整體的性能也越來(lái)越差。
  • 訂單字段冗余,新增和修改字段非常痛苦。每個(gè)業(yè)務(wù)都有特殊的業(yè)務(wù)字段,單標(biāo)數(shù)據(jù)量已經(jīng)到達(dá)了***,每增加一個(gè)字段和修改一個(gè)字段,都需要耗費(fèi)很長(zhǎng)的時(shí)間,而且會(huì)造成鎖庫(kù)導(dǎo)致系統(tǒng)異常。
  • 業(yè)務(wù)增長(zhǎng)迅猛,數(shù)據(jù)庫(kù)已成瓶頸,58 速運(yùn)整體的訂單增長(zhǎng)非常迅速,在成立三個(gè)月以后,每天的單已達(dá)到了1 萬(wàn)+,系統(tǒng)性能已成為瓶頸。

針對(duì)以上痛點(diǎn),我們做了***次的技術(shù)引進(jìn)——遷庫(kù)、集群拆分。

***次技術(shù)演進(jìn):遷庫(kù)、集群解耦

為什么要遷庫(kù)?誰(shuí)痛誰(shuí)知道!不想受到其他業(yè)務(wù)小伙伴的影響,就要做到解耦。

一個(gè)最簡(jiǎn)單的方案就是停服,把所有的服務(wù)停掉,然后把數(shù)據(jù)庫(kù)抽離出來(lái),相對(duì)來(lái)講這是成本最簡(jiǎn)單的。

但是停服會(huì)產(chǎn)生的影響:

  • 凌晨時(shí)間業(yè)務(wù)仍然有訂單,會(huì)影響到用戶訪問(wèn)。
  • 需要給用戶發(fā)公告。
  • 停服遷移如果失敗,無(wú)法向業(yè)務(wù)方解釋,會(huì)喪失信任。

我們采用的方案:將訂單表單獨(dú)地拆離出來(lái),放在單獨(dú)的數(shù)據(jù)庫(kù)里,兩個(gè)數(shù)據(jù)庫(kù)之間使用雙向同步。

雙向同步需要解決的問(wèn)題:

  • 主鍵沖突:速運(yùn)的訂單會(huì)標(biāo)記一個(gè)比較特殊的標(biāo)記 ID(如 80 開(kāi)頭標(biāo)記為速運(yùn),其他業(yè)務(wù)都是 10 開(kāi)頭的),與其他的業(yè)務(wù)線區(qū)分開(kāi)發(fā),這樣就可以保證它在雙向同步時(shí)不會(huì)出現(xiàn)主鍵沖突的問(wèn)題。
  • 更新覆蓋:update 的操作在同步的過(guò)程中因?yàn)闀r(shí)間差的問(wèn)題可能存在寫(xiě)覆蓋的情況,我們采用訂單日志的記錄,遷庫(kù)完成后做數(shù)據(jù)的校驗(yàn)。

經(jīng)過(guò)多次的遷移,將原有的數(shù)據(jù)庫(kù)按照業(yè)務(wù)劃分成了訂單庫(kù)、結(jié)算庫(kù)、配置庫(kù)和軌跡庫(kù)等,每個(gè)數(shù)據(jù)庫(kù)會(huì)根據(jù)業(yè)務(wù)量容量的大小來(lái)配置數(shù)據(jù)庫(kù)物理機(jī)的內(nèi)核、內(nèi)存,減少成本。

高速發(fā)展:穩(wěn)定、高效

2015 年我們進(jìn)入了高速發(fā)展的階段,市場(chǎng)上出現(xiàn)了藍(lán)犀牛、1 號(hào)貨的、云鳥(niǎo)的等多個(gè)強(qiáng)勁的競(jìng)爭(zhēng)對(duì)手。各方都是爭(zhēng)分奪秒,一個(gè)系統(tǒng)、功能,我需要抓緊把它給迭代上來(lái),誰(shuí)也不能比誰(shuí)落后。

這個(gè)階段我們存在的問(wèn)題:

  • 補(bǔ)貼大戰(zhàn),大量無(wú)效補(bǔ)貼,運(yùn)營(yíng)成本高,各大競(jìng)爭(zhēng)對(duì)手投放大量的訂單補(bǔ)貼(高達(dá) 30 元+),使得整體運(yùn)營(yíng)成本呈現(xiàn)水漲高船的趨勢(shì)。
  • 快速迭代多人維護(hù)一套工程,效率差,Bug 頻發(fā),最開(kāi)始創(chuàng)業(yè)時(shí)團(tuán)隊(duì)只有幾個(gè)人,工程都集中在幾個(gè)集群中,后面擴(kuò)大到 30 多個(gè)人時(shí),大家都集中在這些集群上去開(kāi)發(fā),平均每天都要進(jìn)行多次上線,遇到了個(gè)最核心、最痛點(diǎn)的問(wèn)題,代碼合并,合并代碼就意味著出錯(cuò)的幾率大大提升,當(dāng)時(shí) Bug 率很高。
  • 業(yè)務(wù)高速發(fā)展,數(shù)據(jù)量急速增長(zhǎng),我們?cè)?2015 年時(shí),訂單增長(zhǎng)了好幾倍,同時(shí)每個(gè)訂單大概會(huì)推送給 50 多個(gè)司機(jī),這個(gè)數(shù)據(jù)量級(jí),數(shù)據(jù)量高速的增長(zhǎng)。
  • 運(yùn)營(yíng)分析需求越來(lái)越復(fù)雜,另外運(yùn)營(yíng)需要對(duì)現(xiàn)在的市場(chǎng)和用戶進(jìn)行分析,整體的運(yùn)營(yíng)需求分析逐漸復(fù)雜。

這時(shí)我們進(jìn)行了第二次技術(shù)演進(jìn),我們稱之為“進(jìn)行了奔跑中的火車換輪子”,我們進(jìn)行了服務(wù)化解耦;緩存、分庫(kù)分表,提升系統(tǒng)性能;接入大數(shù)據(jù)平臺(tái),進(jìn)行復(fù)雜需求的分析。

第二次技術(shù)演進(jìn):奔跑中的火車換輪子

派單-鐵器時(shí)代

我們將所有的系統(tǒng)都按服務(wù)模塊進(jìn)行了拆分,比如說(shuō)結(jié)算、充值、推送、司機(jī)任務(wù)等,現(xiàn)在大概已有 20+ 個(gè)服務(wù),每個(gè)服務(wù)都有獨(dú)立的數(shù)據(jù)庫(kù),有獨(dú)立的負(fù)責(zé)人。

這樣就可以做到我自己的代碼我自己來(lái)寫(xiě),別人都不允許去插手。

此外我們進(jìn)行了推送的多通道化,從上圖可以看到,我們針對(duì)每個(gè)司機(jī)選取了兩種推送通道,同時(shí)我們也建議大家在做推送消息時(shí)采取這種方案。

拿小米的手機(jī)來(lái)說(shuō),“小米”推送通道的到達(dá)率是***的,但小米的通道在華為的手機(jī)上,到達(dá)率不如“個(gè)推”的推送到達(dá)率高。

我們就會(huì)根據(jù)司機(jī)的機(jī)型來(lái)選取一個(gè)到達(dá)率***的三方通道。同時(shí)在設(shè)計(jì)上不能有單點(diǎn),假如說(shuō)小米的通道出現(xiàn)了問(wèn)題,那我們的服務(wù)就不可用了,司機(jī)接收不到訂單,用戶的需求就沒(méi)法得到滿足。

所以我們還有一個(gè)自研渠道 TCP 通道,這個(gè) TCP 通道除了和我們?nèi)酵ǖ雷鲆粋€(gè)雙通道保活外,它還可以做一些數(shù)據(jù)的上傳。

這時(shí)的訂單調(diào)度,被稱為探索階段,初期的距離推送效果有限,誰(shuí)搶到誰(shuí)就中單,司機(jī)的服務(wù)質(zhì)量我們沒(méi)有辦法去評(píng)判,補(bǔ)貼也是大眾化的。

所以我們自己研究了一個(gè)按象限推送的方法:

  • 首先我先推送一個(gè)很短的距離,比如說(shuō)我先把一公里以內(nèi)的所有司機(jī)都推送一遍,這時(shí)我是不給補(bǔ)貼的,當(dāng)推完一公里以后沒(méi)有人搶,或者是搶的人非常的少,我會(huì)按象限去推。
  • 在***個(gè)象限,我給一塊錢(qián)補(bǔ)貼,如果沒(méi)人搶,第二個(gè)象限給兩塊錢(qián)補(bǔ)貼,第三個(gè)象限給三塊錢(qián),這樣逐步地去增加。
  • ***當(dāng)司機(jī)搶了單,我們會(huì)根據(jù)司機(jī)的好評(píng)、完成率這些方面選擇一個(gè)***質(zhì)的司機(jī)。

分庫(kù)分表

前面提到數(shù)據(jù)庫(kù)性能已經(jīng)成為瓶頸了,所以這里以一個(gè)用戶服務(wù)給大家講一下我們的分庫(kù)分表是怎么做的:

  • 業(yè)務(wù)初期,我們一個(gè)庫(kù)可以完成支撐所有的訪問(wèn)。
  • 隨著數(shù)據(jù)量的增長(zhǎng),我們做了一些讀寫(xiě)的分離,把一些讀取 SQL 放在從庫(kù)上,但這里給大家一個(gè)建議——訂單狀態(tài)的讀取盡量不要在從庫(kù)上讀,網(wǎng)絡(luò)一抖動(dòng),你的訂單狀態(tài)就很可能會(huì)出現(xiàn)不一致情況。
  • 加上從庫(kù),當(dāng)表的數(shù)據(jù)量達(dá)到***,查詢的性能依然會(huì)下降,這樣我們就需要去做水平拆分和垂直拆分。

水平拆分比較簡(jiǎn)單,大家也容易理解,而垂直拆分就是比如說(shuō)我把一個(gè)用戶 10 個(gè)最常用的屬性放到一個(gè)組表里,把不常用的屬性放到另外一張表里面去,這樣可以減少 I/O 的操作,也可以提高整體的產(chǎn)品性能。

  • 數(shù)據(jù)庫(kù)水平拆分以后,再給拆分后的庫(kù)增加從庫(kù)。

在這里水平拆分要重點(diǎn)提一下,就是如果資源允許,水平拆分還是建議分庫(kù)。

數(shù)據(jù)庫(kù)的性能瓶頸也是會(huì)受到硬件設(shè)備和網(wǎng)絡(luò) IO 的影響,如果訪問(wèn)量持續(xù)增加,數(shù)據(jù)庫(kù)還是會(huì)成為瓶頸。

我們的水平拆分有兩種方法:

范圍法:用戶 ID 在 1K 萬(wàn)以下的放到一個(gè)庫(kù),1K 萬(wàn)~2KW 以上的放到另外一個(gè)庫(kù),這樣切分簡(jiǎn)單,擴(kuò)容也方便,但是會(huì)存在數(shù)據(jù)庫(kù)之間的負(fù)載不均勻。

哈希法:根據(jù)用戶 ID 進(jìn)行哈希運(yùn)算,切分簡(jiǎn)單,整體負(fù)載比較均衡,平滑遷移可能是需要我們?nèi)ソ鉀Q的難點(diǎn)。

拆分后的問(wèn)題:

  • 部分查詢變慢了:非 patition key 查詢,需要遍歷全部庫(kù),做完水平拆分以后,我們遇到了一個(gè)新的問(wèn)題,實(shí)用 Patition key 水平拆分,非 patition key 查詢需要掃庫(kù),性能反而變慢了。
  • 運(yùn)營(yíng)需求無(wú)法實(shí)現(xiàn):各種維度統(tǒng)計(jì),沒(méi)辦法聯(lián)表查詢,運(yùn)營(yíng)小伙伴原來(lái)在單庫(kù)的時(shí)候,因?yàn)閺?fù)雜 SQL 跑的特別慢,導(dǎo)致無(wú)法統(tǒng)計(jì)特別情況,分完庫(kù)以后,他連 Join 都用不了,更無(wú)法查詢統(tǒng)計(jì)了。

問(wèn)題分析,“任何脫離業(yè)務(wù)架構(gòu)的設(shè)計(jì)都在耍流氓”:

  • 我們拿數(shù)據(jù)庫(kù)的 Binlog 日志看了一下,根據(jù)用戶 ID 的訪問(wèn)大概是占 99%,根據(jù)用戶姓名、手機(jī)號(hào)、Email 的這些屬性的查詢大概只有在 1% 的量。
  • 運(yùn)營(yíng)會(huì)根據(jù)年齡、性別、頭像、登錄時(shí)間、注冊(cè)時(shí)間這些復(fù)雜的數(shù)據(jù)去做統(tǒng)計(jì)和分析。

前端解決方案:

  • 索引表法:非 Patition key 與 uid 建立索引表,拿非 Patition key 和 uid 做一個(gè)索引表。

這樣我直接通過(guò)這個(gè)表和 Patition key 進(jìn)來(lái)后先去找一下 uid,這樣就可以找到這個(gè) uid 在哪個(gè)庫(kù),但是增加了一次數(shù)據(jù)庫(kù)的查詢。

  • 緩存映射法:非 Patition key 與 uid 映射關(guān)系放入緩存,緩存***率高,我們把 Patition key 與 uid 的映射關(guān)系放在緩存里面去,只會(huì)***次比較慢,后面都會(huì)從緩存中取,而且這個(gè)緩存基本上不用淘汰。
  • 非 Patition key 生成 uid,根據(jù) Patition key 生成一個(gè) uid,這個(gè)需要一定的生成技巧,同時(shí)這個(gè)可能有主鍵沖突的風(fēng)險(xiǎn)。
  • 基因法,根據(jù)非 Patition key 的其中部分基因生成一個(gè)字段,如下圖:

運(yùn)營(yíng)側(cè)需求解決方案:

  • 冗余后臺(tái)庫(kù):通過(guò) MQ/Canal 實(shí)時(shí)同步到后臺(tái)庫(kù),通過(guò) MQ 或者是 Canal 讀取 MySQL 的 binlog,將幾個(gè)前臺(tái)的數(shù)據(jù)庫(kù)實(shí)時(shí)地同步到后臺(tái)庫(kù)里去,后臺(tái)庫(kù)不對(duì)前臺(tái)業(yè)務(wù)提供服務(wù),僅供運(yùn)營(yíng)側(cè)查詢。

注意這個(gè)后臺(tái)庫(kù)是千萬(wàn)不能用于現(xiàn)場(chǎng)生產(chǎn)的,因?yàn)檫\(yùn)營(yíng)會(huì)在上面做一些復(fù)雜的慢查詢,數(shù)據(jù)庫(kù)的響應(yīng)會(huì)非常慢。

  • 外置搜索引擎:ES/Solr/XXXX,接入外鍵索引,如 ES/Solr 提供搜索服務(wù)。
  • 大數(shù)據(jù)平臺(tái),使用大數(shù)據(jù)平臺(tái),通過(guò) MySQL 的 binlog 和日志上報(bào),將數(shù)據(jù)讀取到大數(shù)據(jù)平臺(tái)進(jìn)行實(shí)時(shí)地分析,供運(yùn)營(yíng)查詢。

到了 2016 年,競(jìng)爭(zhēng)對(duì)手基本上已經(jīng)被消滅了,58 速運(yùn)已經(jīng)成為行業(yè)的領(lǐng)頭者了,如何使用更少的補(bǔ)貼獲取***化的收益?

我們有如下幾點(diǎn)反思:

平臺(tái)補(bǔ)貼是不是真的起到了作用,然后我們到底需要補(bǔ)多少錢(qián)才能幫助用戶完成訂單?

如何去盡量滿足用戶的需求?每個(gè)新用戶進(jìn)入平臺(tái)是有成本的,一個(gè)用戶的成本在幾十甚至到一百塊左右,如何滿足用戶的需求,讓用戶持續(xù)的留在平臺(tái)中。

平臺(tái)的司機(jī)良莠不齊,司機(jī)的收益應(yīng)如何分配?

第三次技術(shù)演進(jìn):戰(zhàn)斧項(xiàng)目

我們進(jìn)行了第三次的技術(shù)引進(jìn),我們稱之為戰(zhàn)斧項(xiàng)目,項(xiàng)目的定義:精準(zhǔn)、高效。

我們做了以下優(yōu)化:

  • 策略服務(wù)的細(xì)化
  • 智能模型的接入
  • 智能的分流框架

智能時(shí)代:效率、精準(zhǔn)

智能模型訓(xùn)練

上圖為智能模型訓(xùn)練圖,首先我們會(huì)將訂單信息、用戶信息、司機(jī)信息、客司關(guān)系信息、訂單總體推送、司機(jī)接單等場(chǎng)景信息統(tǒng)一上傳到大數(shù)據(jù)平臺(tái)。

通過(guò)這種歸一化&分桶、XGBoost、特征組合、獨(dú)熱編碼等將這些數(shù)據(jù)分析為特征數(shù)據(jù)。

針對(duì)分析出來(lái)的特征數(shù)據(jù),我們需要對(duì)它進(jìn)行訓(xùn)練,如:訂單價(jià)格、訂單距離等特征在整個(gè)訂單派單中起到的權(quán)重。

因?yàn)樘卣骱芏啵?jì)算出來(lái)的權(quán)重可能并不是一個(gè)***的解,只能說(shuō)是近優(yōu)、***的一個(gè)解法,通過(guò)不斷地迭代優(yōu)化,最終訓(xùn)練出來(lái)最終的模型。

訂單-模型運(yùn)用

訂單模型的運(yùn)用:

  • 下單階段:在用戶下單時(shí),我們會(huì)采用這種用戶訂單定價(jià)的模型,觀察這個(gè)訂單所在的商圈的運(yùn)力飽和度,如果司機(jī)少,而訂單需求多,我們會(huì)進(jìn)行一個(gè)訂單的調(diào)價(jià)。
  • 推送階段:系統(tǒng)推送的過(guò)程中,會(huì)根據(jù)司機(jī)的接單意愿來(lái)?yè)迫 S械乃緳C(jī)喜歡高價(jià)格訂單,有的司機(jī)喜歡短程訂單,有的司機(jī)喜歡去中關(guān)村等。我們會(huì)根據(jù)訂單與司機(jī)意愿的匹配程度進(jìn)行優(yōu)先推送的排序。
  • 搶單階段:先預(yù)估這個(gè)訂單的接單人數(shù),計(jì)算出來(lái)訂單的價(jià)值,如果訂單的價(jià)值高(價(jià)格高、地點(diǎn)好)、那么這個(gè)訂單不會(huì)發(fā)放補(bǔ)貼了,同時(shí)會(huì)扣取司機(jī)的一些積分或優(yōu)先搶單次數(shù)等。
  • 如果訂單價(jià)值比較低(價(jià)格低、偏遠(yuǎn)地區(qū)),會(huì)給這個(gè)訂單適當(dāng)?shù)卦黾友a(bǔ)貼,來(lái)確保訂單的完成。
  • 指派階段:當(dāng)司機(jī)搶完單以后,我們會(huì)根據(jù)所有司機(jī)歷史完成訂單的數(shù)據(jù),取司機(jī)的質(zhì)量,來(lái)決定哪個(gè)司機(jī)中單,保證訂單盡可能完成。
  • 訂單完成階段:訂單完成了以后預(yù)測(cè)這個(gè)用戶的流失概率,如果可能流失,會(huì)送一些券或者其他權(quán)益吸引用戶留在平臺(tái)。

派單-智能時(shí)代

上圖是智能派單時(shí)代的系統(tǒng)架構(gòu)圖。用戶在下完單以后,訂單會(huì)進(jìn)入到我們整體的策略系統(tǒng),它包含推送系統(tǒng)、補(bǔ)貼系統(tǒng)、價(jià)格系統(tǒng)、任務(wù)系統(tǒng)等。

然后通過(guò)特征匹配系統(tǒng),計(jì)算出一個(gè)***的訂單調(diào)度解,將這個(gè)訂單推送到司機(jī)的單隊(duì)列引擎和訂單的排序策略引擎,最終通過(guò)我們的推送服務(wù)將訂單推送給司機(jī)。

策略分流+監(jiān)測(cè)

智能系統(tǒng)需要有不同的算法在線上實(shí)驗(yàn),當(dāng)我們一些新算法研發(fā)完成以后,肯定不能用 100% 的流量在線上進(jìn)行驗(yàn)證算法的可行性,如果有問(wèn)題,會(huì)對(duì)線上業(yè)務(wù)產(chǎn)生影響。

我們一般取 5% 或 10% 的流量在線上驗(yàn)證,根據(jù)用戶手機(jī)號(hào)、設(shè)備碼、用戶屬性等,以及取模、集合等方式。對(duì)線上算法驗(yàn)證時(shí),如何實(shí)時(shí)的監(jiān)測(cè)算法的效果,避免錯(cuò)誤算法對(duì)線上業(yè)務(wù)造成的影響?

如上圖所示,用戶在 APP 中的每個(gè)步驟、運(yùn)用了哪個(gè)算法,我們都會(huì)將用戶的 ID、采用的算法 ID 通過(guò)日志上報(bào)到統(tǒng)計(jì)平臺(tái)。業(yè)務(wù)監(jiān)控平臺(tái)會(huì)實(shí)時(shí)進(jìn)行監(jiān)控,對(duì)于出現(xiàn)異常的算法就自動(dòng)關(guān)閉分流。

特征計(jì)算

特征數(shù)據(jù)中有 40 多萬(wàn)個(gè)特征,每個(gè)訂單需要推送給很多個(gè)司機(jī),需要進(jìn)行上萬(wàn)次的運(yùn)算,需要在幾十毫秒內(nèi)給出計(jì)算結(jié)果,如何保證計(jì)算的高性能呢?

我們采用的是這種階段性事件驅(qū)動(dòng)的計(jì)算方式來(lái)***化提高并行計(jì)算的能力。

如圖所示,這是我們的計(jì)算鏈,里面包含多個(gè) Stage,包含準(zhǔn)備階段、轉(zhuǎn)化階段、取數(shù)階段和計(jì)算階段。

每一個(gè)階段都有自己獨(dú)立的線程池,根據(jù)每個(gè)階段的特征設(shè)置核心線程數(shù),同時(shí)整個(gè)計(jì)算鏈做到了可插拔的形式,方便業(yè)務(wù)調(diào)整。

利器-監(jiān)控平臺(tái)

監(jiān)控可以說(shuō)是整個(gè)架構(gòu)演進(jìn)過(guò)程中非常重要的部分:

  • 再牛逼的算法,也需要穩(wěn)定的系統(tǒng)來(lái)支撐。
  • 業(yè)務(wù)出現(xiàn)異常,我們肯定要***時(shí)間知曉。
  • 提高問(wèn)題排查效率,就是在挽救損失。

立體化監(jiān)控

目前已經(jīng)做到的監(jiān)控包含:關(guān)鍵字、接口、流量、端口,JVM、CPU、線程、緩存、DB 所有的監(jiān)控等等,同時(shí)還有服務(wù)治理,當(dāng)服務(wù)節(jié)點(diǎn)發(fā)生異常,實(shí)時(shí)切換。

業(yè)務(wù)化的指標(biāo)監(jiān)控,渠道轉(zhuǎn)化率、渠道取消率、渠道推送數(shù)量、異常訂單數(shù)量等等,如果出現(xiàn)異常,***時(shí)間預(yù)警。

調(diào)用跟蹤系統(tǒng)

很多互聯(lián)網(wǎng)公司都已經(jīng)在使用調(diào)用跟蹤系統(tǒng),目的是需要看到 APP 發(fā)起的每個(gè)請(qǐng)求在整個(gè) Service 后端走過(guò)的所有過(guò)程,效果如下圖所示,可以監(jiān)控到每一步所調(diào)用的服務(wù)和耗時(shí)。

總結(jié)

***給大家總結(jié)了 5 點(diǎn)經(jīng)驗(yàn):

  • 不同的階段采用不同的架構(gòu),技術(shù)的重點(diǎn)跟隨業(yè)務(wù)轉(zhuǎn)變。
  • 訂單的推送通道,建議使用雙通道,保證推送的到達(dá)率。
  • 數(shù)據(jù)庫(kù)的水平拆分,在資源允許的情況下,強(qiáng)烈建議分庫(kù)。
  • 算法線上分流驗(yàn)證必須要有實(shí)時(shí)的監(jiān)控和自動(dòng)流量切換。
  • 監(jiān)控很重要,***時(shí)間發(fā)現(xiàn)問(wèn)題,減少影響。

[[213239]]

胡顯波,58 到家技術(shù)經(jīng)理、58 速運(yùn)后端架構(gòu)總負(fù)責(zé)人。2014 年 7 月加入 58 到家,先后負(fù)責(zé) 58 到家 APP、58 小時(shí)工、58 美甲等,見(jiàn)證了 58 到家飛速發(fā)展。2014 年 11 月負(fù)責(zé) 58 速運(yùn)整體業(yè)務(wù),帶領(lǐng)團(tuán)隊(duì)小伙伴支撐了速運(yùn)業(yè)務(wù)日訂單從 0~50W 的飛速增長(zhǎng)。

 

責(zé)任編輯:武曉燕 來(lái)源: DBAplus社群
相關(guān)推薦

2021-06-04 09:01:05

PythonGUI大解密Python基礎(chǔ)

2021-06-01 09:02:06

PythonClassPython基礎(chǔ)

2012-02-01 08:56:32

2016-07-12 10:09:13

OpenManage大

2016-06-20 15:36:01

OpenManage大

2017-08-24 12:56:36

里程計(jì)算里程APP

2018-08-21 09:22:46

58速運(yùn)架構(gòu)DB

2018-03-15 11:23:59

微服務(wù)架構(gòu)實(shí)踐

2018-06-14 21:47:46

WOT沈劍58速運(yùn)

2018-03-24 12:21:21

58速運(yùn)微服務(wù)架構(gòu)智能云

2025-02-08 14:03:25

2020-08-24 07:55:48

解密系統(tǒng)架構(gòu)

2013-09-27 17:12:13

2022-03-18 09:11:56

高并發(fā)搶購(gòu)系統(tǒng)架構(gòu)

2025-01-15 09:13:53

2018-05-30 13:42:39

2020-05-18 10:27:06

框架EB級(jí)系統(tǒng)

2016-08-21 14:33:28

IFTTT數(shù)據(jù)架構(gòu)

2014-01-03 09:13:39

JavaScriptthis

2025-05-06 00:00:45

線程死鎖系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品无码午夜福利| 日韩一级片免费视频| 在线视频你懂得| 在线国产一区| 日韩h在线观看| 一级特黄性色生活片| 日本三级在线播放完整版| 国产成人亚洲综合色影视| 久久久久久九九九| 精品人体无码一区二区三区| 亚洲国产欧美国产第一区| 一本色道综合亚洲| 国产欧美123| 黄色国产在线| 国产69精品一区二区亚洲孕妇| 欧亚精品在线观看| 青娱乐在线视频免费观看| 狠狠综合久久av一区二区蜜桃| 欧美一级国产精品| 久久午夜夜伦鲁鲁一区二区| 久久香蕉一区| 国产精品每日更新在线播放网址| 国产精品入口免费| 国产精品乱码久久久| 巨乳诱惑日韩免费av| 久久天天躁狠狠躁夜夜躁| 大黑人交xxx极品hd| 亚洲精品不卡在线观看| 欧美日韩不卡一区二区| 成人在线免费在线观看| 久草在线视频福利| 亚洲精品欧美综合四区| 亚洲三区在线| 精品成人一区二区三区免费视频| 粉嫩av亚洲一区二区图片| 国产精品一久久香蕉国产线看观看| 日韩特黄一级片| 国产专区一区| 美女福利精品视频| 特级西西人体高清大胆| 欧美一区二区三区高清视频| 亚洲免费av电影| 精品人妻一区二区免费视频| 成人动漫视频| 亚洲国产成人精品久久| 亚洲av综合色区无码另类小说| 亚洲欧洲二区| 欧美日韩www| 色噜噜狠狠一区二区| 精品视频在线一区二区在线| 欧美午夜宅男影院在线观看| 丝袜老师办公室里做好紧好爽| segui88久久综合9999| 亚洲在线视频网站| av女优在线播放| 91九色在线播放| 亚洲成人av电影| 人体内射精一区二区三区| 黄页网站在线观看免费| 午夜精品视频一区| 91精品91久久久中77777老牛 | 成人免费毛片app| 999视频在线观看| 性一交一乱一透一a级| 国产a精品视频| 国产综合动作在线观看| 日夜干在线视频| 日本一区二区免费在线观看视频| 亚洲欧美日韩在线综合| 黄色av免费在线| 一区二区在线看| 久激情内射婷内射蜜桃| 三级在线观看视频| 在线观看一区日韩| 九九热免费在线观看| 欧美第一在线视频| 欧美精品一区二区三区很污很色的 | 蜜桃成人在线| 成人精品一区二区三区免费| 中文字幕亚洲一区二区av在线| 最新视频 - x88av| sm捆绑调教国产免费网站在线观看| 狠狠躁天天躁日日躁欧美| 日本美女高潮视频| 日韩免费精品| 亚洲视屏在线播放| 美女的奶胸大爽爽大片| 亚洲尤物在线| 91精品视频大全| 韩国av免费在线| 国产欧美日韩在线看| 国产一二三四五| sis001欧美| 777久久久精品| free性中国hd国语露脸| 久久激情电影| 午夜精品久久久久久久99黑人| 男人天堂2024| 国产成人一区在线| 色狠狠久久av五月综合| 在线黄色网页| 日本高清不卡在线观看| 亚洲AV无码久久精品国产一区| 欧美三级电影在线| 久久夜色精品国产欧美乱| 中文字幕精品无码一区二区| 激情av综合网| 日本一区免费看| 人人超在线公开视频| 在线视频国内自拍亚洲视频| 在线xxxxx| 操欧美老女人| 欧美精品18videosex性欧美| 日批视频免费观看| 99riav久久精品riav| 一区二区三区四区久久| 日韩在线免费| 欧美精品一区二| 亚洲天堂网av在线| 日本亚洲三级在线| 欧美精品欧美精品系列c| 青青草原av在线| 欧美乱妇23p| 亚洲色成人网站www永久四虎 | 国产精品毛片a∨一区二区三区| 日本黄大片在线观看| 四虎精品永久免费| 国产亚洲欧美日韩一区二区| 日本少妇裸体做爰| 国产成人一区在线| 91成人在线视频观看| 欧美高清影院| 伊人久久免费视频| 在线观看免费av片| 91在线porny国产在线看| 高清无码一区二区在线观看吞精| 欧美国产视频| 日韩资源在线观看| 中文字幕一区二区三区四区免费看| 97久久精品人人做人人爽| 欧美一级免费播放| 免费观看成人www动漫视频| 久久久久久久久久久免费精品| 国产熟女一区二区三区四区| 中文字幕一区免费在线观看| 亚洲另类第一页| 日韩欧美综合| 国产深夜精品福利| 欧洲美女少妇精品| 3d动漫精品啪啪一区二区竹菊| av在线播放中文字幕| 久久爱另类一区二区小说| 亚洲一区二区在线看| 日本午夜精品久久久久| 久久久精品美女| av中文字幕播放| 亚洲精品免费在线| 免费黄色av网址| 亚洲久久一区| 茄子视频成人在线观看| 激情亚洲小说| 欧美成人免费在线视频| 成人毛片在线精品国产| 亚洲高清在线视频| 国产精品无码久久久久一区二区| 久久久久网站| 中文字幕在线观看一区二区三区| 91精品国产一区二区在线观看 | 亚洲国产古装精品网站| 亚洲国产成人精品激情在线| 2017欧美狠狠色| 国产又大又黄又粗又爽| 91不卡在线观看| 国产一区精品在线| 国产一区二区主播在线| 日韩中文字幕精品| 懂色av蜜臀av粉嫩av分享吧| 精品久久久久久久久国产字幕| 亚洲午夜精品久久久久久高潮| 久久国产精品第一页| 欧美成人精品免费| 国产va免费精品观看精品视频 | 极品尤物一区| 国产精品久在线观看| 99在线播放| 日韩精品中文字幕在线观看| 一级黄色大片网站| 亚洲国产中文字幕| 国产三级在线观看完整版| 国产精品中文字幕欧美| 国产视频九色蝌蚪| 国产精品久久久久一区二区三区厕所| 国产精品久久波多野结衣| 日韩高清成人| 欧美国产中文字幕| 在线中文资源天堂| 亚洲精品久久久久国产| 国产露脸无套对白在线播放| 欧美日韩午夜激情| 日本在线一级片| 久久蜜桃av一区精品变态类天堂| 在线播放免费视频| 久久一二三区| 欧美一区二区视频在线播放| 日本电影一区二区| 久久久久久久久久码影片| 91麻豆精品一二三区在线| 欧洲一区二区视频| av网站大全在线| 国产亚洲精品久久久| 日韩中文字幕免费观看| 欧美日本韩国一区二区三区视频| 五月婷婷中文字幕| 一级做a爱片久久| 综合 欧美 亚洲日本| 91麻豆福利精品推荐| 99热这里只有精品2| 日韩高清在线不卡| 日韩av三级在线| 欧美网站在线| 久久国产精品免费观看| 99久久久久久中文字幕一区| 欧美精品一区二区视频| 高清欧美性猛交xxxx黑人猛| 成人伊人精品色xxxx视频| 九九九伊在线综合永久| 亲爱的老师9免费观看全集电视剧| 美女精品导航| 欧美激情视频三区| 伊人影院在线视频| 久久这里只有精品99| 最新电影电视剧在线观看免费观看| 国产丝袜精品第一页| 亚洲av电影一区| 日韩电影大片中文字幕| 内射后入在线观看一区| 精品久久人人做人人爰| 亚洲第一色网站| 日韩欧美不卡在线观看视频| 国产成人免费看一级大黄| 在线91免费看| 国产精品欧美久久久久天天影视| 欧美日韩高清一区二区三区| 国模私拍一区二区| 欧美三级视频在线播放| 在线观看免费黄色小视频| 欧美亚洲动漫精品| 在线观看一二三区| 欧美日韩亚洲综合在线| 一区二区视频网| 欧美日韩成人一区二区| 国产精品国产精品国产专区| 91麻豆精品91久久久久久清纯 | 极品少妇一区二区三区精品视频| 欧美女同在线观看| 激情欧美一区二区三区在线观看| 51自拍视频在线观看| 国产精品一级片| 精品国产乱码久久久久夜深人妻| 国产91色综合久久免费分享| 免费看毛片的网站| 久久亚洲捆绑美女| 日韩不卡av在线| 日韩美女视频一区二区| 久草视频中文在线| 黑丝美女久久久| 一区二区视频网站| 日韩欧美成人一区二区| 亚洲av电影一区| 中文字幕久热精品在线视频| 久久精品视频观看| 久久久亚洲网站| 欧美艳星kaydenkross| 国产精品亚洲自拍| 都市激情亚洲| 日韩欧美一区二区三区久久婷婷| 色喇叭免费久久综合网| av久久久久久| 亚洲综合国产激情另类一区| 亚洲视频第二页| 成年人国产精品| www.黄色在线| 亚洲欧美日韩国产综合| 亚洲免费在线观看av| 欧洲在线/亚洲| 亚洲国产福利视频| 亚洲图片欧美日产| 青春草在线视频| 国产精品第8页| 99精品国产高清一区二区麻豆| 你懂的网址一区二区三区| 亚洲天堂免费| 国产日产欧美视频| 国产成人精品三级麻豆| 永久免费成人代码| 亚洲国产日日夜夜| 亚洲中文字幕在线观看| 亚洲成人av中文字幕| 快射av在线播放一区| 欧洲美女7788成人免费视频| 亚洲专区**| 一本一道久久a久久综合精品| 最新亚洲一区| 中文字幕第66页| 国产亚洲短视频| 国产无码精品在线观看| 欧美老人xxxx18| 成年人在线观看网站| 午夜剧场成人观在线视频免费观看| 四虎永久精品在线| 热re99久久精品国产99热| 红桃视频国产精品| 亚洲男人天堂2021| 中文无字幕一区二区三区| wwwxxx亚洲| 精品国产91久久久久久久妲己| 欧美激情午夜| 国产成人小视频在线观看| 韩国女主播一区二区三区| 国产日产欧美一区二区| 老司机精品视频导航| 级毛片内射视频| 欧美性高潮床叫视频| 免费观看黄一级视频| 久热精品视频在线观看| 欧美高清你懂的| 亚洲va韩国va欧美va精四季| 久久久久久一区二区| 国产精品无码永久免费不卡| 亚洲va韩国va欧美va精品| 国产福利免费视频| 另类美女黄大片| 色综合视频一区二区三区44| 亚洲v欧美v另类v综合v日韩v| 久久中文在线| 女~淫辱の触手3d动漫| 精品色蜜蜜精品视频在线观看| 蜜臀av午夜精品| 97在线精品视频| 一区二区三区韩国免费中文网站| 国产中文字幕视频在线观看| av色综合久久天堂av综合| 日本三级一区二区| 国产婷婷成人久久av免费高清| 松下纱荣子在线观看| 茄子视频成人在线观看| 日韩电影在线一区二区三区| 日韩欧美黄色网址| 欧美亚洲国产一区二区三区| 98在线视频| 91九色国产视频| 欧美精品国产一区二区| 日批免费观看视频| 欧美视频中文在线看| 黄视频在线播放| 国产欧美精品在线| 亚洲乱码精品| 极品白嫩的小少妇| 精品国产成人在线| 国产高清一级毛片在线不卡| 国产美女久久精品香蕉69| 一区二区国产在线| 稀缺小u女呦精品呦| 欧美日韩日本国产| 在线观看av黄网站永久| 91视频免费在线| 亚洲黄页一区| 国产一区二区三区四区五区六区| 欧美日韩视频在线一区二区 | 中文字幕在线观看一区二区| 国产欧美久久久| 欧美激情一区二区三区成人| 日韩三级视频| 亚洲一区在线不卡| 一区二区理论电影在线观看| 婷婷国产在线| 国产精品久久久久久久久久久久 | 久久影院资源网| 国产精品xxxav免费视频| 成人免费无码av| 亚洲人一二三区| 天堂a√中文在线| 成人性生交大片免费看小说 | 亚洲欧美自拍另类日韩| 一区二区三区久久| 你懂的视频在线观看| 亚洲一区二区自拍| 国产九九精品| 疯狂试爱三2浴室激情视频| 亚洲精品动漫100p| 99国内精品久久久久| 少妇高潮喷水久久久久久久久久| 日韩美女视频一区| 男女视频在线观看| www.一区二区三区| 日韩1区2区3区| 日韩在线观看第一页| 不用播放器成人网| 精品国产一区二区三区四区 | 国产精品2023|