日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

码农节快乐|一个系统,高效解决复杂事件采集-计算-实时触达

發(fā)布時(shí)間:2024/8/23 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 码农节快乐|一个系统,高效解决复杂事件采集-计算-实时触达 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PartI: 1024

今天是1024,一個(gè)特別的數(shù)字,比如某網(wǎng)站內(nèi)容的解壓密碼通常都是1024,想求一個(gè)種子留言也是1024。1024是屬于廣大程序猿(又稱碼農(nóng))的節(jié)日,在這樣一個(gè)節(jié)日里,各種“黑”程序猿的新老段子將紛紛出現(xiàn)在各大媒體網(wǎng)站。為什么程序猿屬于經(jīng)常被黑的一個(gè)群體?凌亂的發(fā)型、黑框眼鏡、雙肩包、格子衫、牛仔褲、運(yùn)動(dòng)鞋、錢多話少是很多人眼中的程序猿形象。

?

程序猿經(jīng)常被黑的原因,還因?yàn)樗麄兿矚g自黑(對(duì)比下另一個(gè)工種,千萬(wàn)不能當(dāng)著XXX們的面,叫他們美工,一定要叫設(shè)計(jì)師),但程序猿真的是描述中的那樣嗎



除了錢多話少是對(duì)的,其他都不完全對(duì),比如說我,穿的是一身國(guó)際名牌'優(yōu)衣庫(kù)',喝酒燙頭不抽煙,但我只是個(gè)二流的程序猿,在閑魚里,頂級(jí)的程序猿是這個(gè)樣子的。

程序猿接的最多的需求:這是老板的需求。程序猿代碼上線的時(shí)間:明天上線。程序猿寫過的bug:怎么會(huì)有bug。1024祝廣大程序猿節(jié)日快日,繼續(xù)加班寫bug!!!

Part II??這是一篇技術(shù)文章

閑魚作為一款閑置物品交易平臺(tái),讓用戶的閑置物品再次得到價(jià)值流通,普惠每一位用戶。先看下面幾個(gè)業(yè)務(wù)場(chǎng)景:

場(chǎng)景1:在閑魚的一次活動(dòng)中,用戶進(jìn)入活動(dòng)會(huì)場(chǎng)后,瀏覽了幾個(gè)不同的寶貝,就會(huì)獎(jiǎng)勵(lì)一個(gè)包郵券。 場(chǎng)景2:用戶關(guān)注的用戶寶貝降價(jià)了,實(shí)時(shí)告知用戶該降價(jià)信息。 場(chǎng)景3:在用戶搜索租房后,并瀏覽N個(gè)租房信息,則為其推送一套合適的房源。 場(chǎng)景4:雙十一會(huì)場(chǎng)活動(dòng),用戶進(jìn)入會(huì)場(chǎng),點(diǎn)擊商品詳情,對(duì)其發(fā)送優(yōu)惠。

類似這樣的業(yè)務(wù)還有很多,如果每次都是case by case的去解決,不僅重復(fù)性建設(shè),還非常的浪費(fèi)人力。程序猿最大的優(yōu)點(diǎn)就是懶,喜歡將看似不同的事務(wù)進(jìn)行抽象,找出其共性,進(jìn)行歸納和演繹,并通過設(shè)計(jì)一種架構(gòu),去解決該類似場(chǎng)景下的諸多業(yè)務(wù),以減少重復(fù)性的勞作。
而架構(gòu)的設(shè)計(jì)是有套路可以遵循的,然并卵,雖然了解了很多的架構(gòu)原理、設(shè)計(jì)理念,但往往實(shí)際的操作過程中,很容易空對(duì)空,這里給出一種設(shè)計(jì)架構(gòu)的套路步驟:系統(tǒng)解決的問題定義->系統(tǒng)設(shè)計(jì)的目標(biāo)->核心設(shè)計(jì)->各子系統(tǒng)模塊的詳細(xì)設(shè)計(jì)。

系統(tǒng)解決的問題定義

問題的定義是從解決的業(yè)務(wù)場(chǎng)景出發(fā)的,也是最難的一步,如果問題定義的不明白,后面的系統(tǒng)設(shè)計(jì)很容易出現(xiàn)偏差,甚至各方理解不一,無法落地。上面的這些業(yè)務(wù)場(chǎng)景有哪些共性呢,用一句話可以描述為:“用戶的一系列操作,滿足一定的復(fù)雜規(guī)則條件后,對(duì)其實(shí)時(shí)的觸達(dá)相應(yīng)的權(quán)益”。這里有一個(gè)要求,需要“實(shí)時(shí)”,能夠秒級(jí)的觸達(dá)用戶。 因此系統(tǒng)解決的問題可以定義為:能夠處理復(fù)雜規(guī)則事件的實(shí)時(shí)觸達(dá)系統(tǒng)。

系統(tǒng)設(shè)計(jì)目標(biāo)

有了對(duì)業(yè)務(wù)場(chǎng)景的問題定義,如何設(shè)計(jì)一個(gè)架構(gòu),去解決這個(gè)問題,在設(shè)計(jì)之初,老板給了一些目標(biāo)要求:

1. 技術(shù)與業(yè)務(wù)分離,構(gòu)建技術(shù)組件和能力,組合后實(shí)現(xiàn)業(yè)務(wù)需求; 2. 事件的數(shù)據(jù)格式需要結(jié)構(gòu)化和標(biāo)準(zhǔn)化,支持?jǐn)U展; 3. 規(guī)則的表達(dá)定義類似SQL的申明式DSL,貼合業(yè)務(wù)領(lǐng)域; 4. 客戶端和服務(wù)端有各?的行動(dòng)觸發(fā)能力,?持?jǐn)U展開發(fā);客戶端支持服務(wù)端驅(qū)動(dòng); 5. 觸發(fā)和計(jì)算分離,計(jì)算模式插件化;

系統(tǒng)設(shè)計(jì)的目標(biāo)是為了保證最終的實(shí)現(xiàn)和最初的想法不要出現(xiàn)太大的偏差,有一個(gè)衡量標(biāo)準(zhǔn)在,一是讓項(xiàng)目?jī)?nèi)的成員依據(jù)此目標(biāo)進(jìn)行設(shè)計(jì),避免出現(xiàn)公說公有理、婆說婆有理的情況;二是項(xiàng)目的驗(yàn)收可以依據(jù)這個(gè)目標(biāo)去評(píng)判,有理可依。

核心內(nèi)容設(shè)計(jì)

核心設(shè)計(jì)這一步很考驗(yàn)基本功和技術(shù)視野的,需要綜合判斷、權(quán)衡取舍,依據(jù)設(shè)計(jì)目標(biāo)選出一個(gè)當(dāng)前的最優(yōu)解。在系統(tǒng)的設(shè)計(jì)目標(biāo)中,其中一條,就是要標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化最大的好處是可以統(tǒng)一不變的接入。互聯(lián)網(wǎng)是個(gè)發(fā)展只有不到30年的行業(yè),但工業(yè)已經(jīng)發(fā)展了幾百年,很多互聯(lián)網(wǎng)行業(yè)里的問題,在工業(yè)里已經(jīng)有了標(biāo)準(zhǔn)化的定義。在搜集技術(shù)方案資料中,對(duì)RFID(射頻識(shí)別)進(jìn)行復(fù)雜事件的流處理的方案進(jìn)入我們視野[參考1]。

RFID系統(tǒng)信息體系結(jié)構(gòu)

而這個(gè)工業(yè)場(chǎng)景下的問題定義,具有標(biāo)準(zhǔn)化和通用性,其核心內(nèi)容包含3個(gè)模塊:數(shù)據(jù)采集模塊、復(fù)雜事件處理模塊、結(jié)果觸發(fā)相應(yīng)的時(shí)間模塊。
這個(gè)設(shè)計(jì)正好符合我們的業(yè)務(wù)場(chǎng)景所需要解決的問題。結(jié)合我們自己的業(yè)務(wù),我們將其定義為“日志采集模塊、復(fù)雜事件的實(shí)時(shí)處理(EPL)模塊、結(jié)果觸達(dá)模塊”,其核心的架構(gòu)圖設(shè)計(jì)如下:

核心架構(gòu)圖
這3大核心模塊,都是通過異步消息進(jìn)行通信,目的是每個(gè)模塊可以解耦,即可以進(jìn)行獨(dú)立使用,又可以作為整體的能力提供。
通過日志采集模塊,進(jìn)行日志的采集和歸一,得到輸入的數(shù)據(jù);而后進(jìn)入EPL模塊,進(jìn)行規(guī)則定義和計(jì)算;最終的結(jié)果進(jìn)入觸達(dá)模塊,進(jìn)行用戶的結(jié)果觸達(dá)。下面分別介紹這3個(gè)模塊的詳細(xì)設(shè)計(jì)。

各子系統(tǒng)模塊的詳細(xì)設(shè)計(jì)

1:日志采集模塊
閑魚的系統(tǒng)架構(gòu),入口應(yīng)用多,而且還有是異構(gòu)的(有java應(yīng)用,dart應(yīng)用,Fass應(yīng)用)。我們做了一個(gè)攔截器,屏蔽這些應(yīng)用的細(xì)節(jié),作統(tǒng)一的攔截處理。?經(jīng)過統(tǒng)一請(qǐng)求攔截層,將所有的請(qǐng)求日志寫入到SLS中。如圖

但這些日志的格式千變?nèi)f化,對(duì)下游的業(yè)務(wù)處理非常的不便,因此需要對(duì)原始的日志數(shù)據(jù)進(jìn)行清洗,清洗為統(tǒng)一的格式,同時(shí)這個(gè)清洗任務(wù)隨著原始數(shù)據(jù)的多變,需要支持可配置化。
我們使用blink實(shí)時(shí)的對(duì)原始數(shù)據(jù)進(jìn)行清洗,同時(shí)在blink任務(wù)里,嵌入一個(gè)UDTF,這個(gè)UDTF接入動(dòng)態(tài)化配置平臺(tái),支持對(duì)清洗任務(wù)的可配置化。經(jīng)過blink清洗后的數(shù)據(jù),格式歸一化為:

歸一化格式后的數(shù)據(jù),通過rocketMQ和SLS往下游輸出。這里提一下為何要通過兩種數(shù)據(jù)通道輸出:rocketMQ對(duì)于在線業(yè)務(wù)的接入非常方便; SLS對(duì)下游接blink任務(wù)實(shí)時(shí)計(jì)算并發(fā)度要快。

2:EPL引擎模塊
EPL模塊,在之前的這篇 《閑魚如何打造高效CEP系統(tǒng)及DSL編程語(yǔ)言》?已經(jīng)對(duì)這個(gè)模塊進(jìn)行了詳細(xì)的講解(請(qǐng)戳?https://mp.weixin.qq.com/s/is1IlJdCyr-vup78rIoUIw),這里不再贅述。
這里提一下我們?cè)O(shè)計(jì)此DSL的目的和目標(biāo)。

  • 簡(jiǎn)化該業(yè)務(wù)領(lǐng)域下的寫法。
  • 云/端表達(dá)的統(tǒng)一。
  • 該寫法要作為blink的一層通用抽象表達(dá)。
  • 該DSL要盡量的符合行業(yè)內(nèi)的規(guī)范。
  • 最終的DSL實(shí)現(xiàn)方案,一個(gè)任務(wù)的編寫大約只需要5行,而如果使用blink代碼實(shí)現(xiàn),至少上百行。我們跟blink合作,推動(dòng)該DSL作為blink一種上層業(yè)務(wù)的抽象表達(dá),可以擴(kuò)展blink的使用。同時(shí)DSL的設(shè)計(jì)并不是天馬行空的想出來的,而是根據(jù)1這兩篇論文進(jìn)行的設(shè)計(jì),盡量去符合業(yè)界的規(guī)范。
    同時(shí)這里的EPL引擎模板,除了云端的計(jì)算,還包含了端測(cè)計(jì)算能力,后面會(huì)有針對(duì)這一塊內(nèi)容的文章,敬請(qǐng)期待

    3:結(jié)果觸達(dá)模塊
    結(jié)果觸達(dá)模塊包含了對(duì)EPL計(jì)算結(jié)果的處理,支持可配置化,支持自定義,并提供了諸如“push、poplayer、openPage”等基礎(chǔ)觸達(dá)能力。后面會(huì)有一篇詳細(xì)的文章進(jìn)行介紹,敬請(qǐng)期待。

    應(yīng)用效果

    業(yè)務(wù)方接入,只需要3個(gè)步驟:1.配置需要獲取的日志數(shù)據(jù),2,使用DSL編寫任務(wù)規(guī)則。3.配置一條觸達(dá)能力。不需要一行代碼的開發(fā),只通過配置半天內(nèi)就可以上線一個(gè)業(yè)務(wù)。
    同時(shí),從上游的數(shù)據(jù)采集->計(jì)算->結(jié)果觸達(dá),整個(gè)鏈路的耗時(shí)只需要10s就可以完成。

    ?

    總結(jié)和展望

    我們用一個(gè)攔截器,解決諸多異構(gòu)應(yīng)用的日志采集問題,然后使用可配置化的blink任務(wù),對(duì)原始的日志數(shù)據(jù)進(jìn)行清洗,輸出標(biāo)準(zhǔn)化的格式數(shù)據(jù)。接著根據(jù)行業(yè)的規(guī)范,設(shè)計(jì)出自定義的DSL,以方便復(fù)雜規(guī)則任務(wù)的編寫,并和blink合作,無縫的接入blink實(shí)時(shí)計(jì)算平臺(tái),進(jìn)行任務(wù)的計(jì)算。計(jì)算出的結(jié)果,只需進(jìn)行配置,就可以進(jìn)行到端的push/poplayer/openPage觸達(dá)。
    目前我們的這款技術(shù)產(chǎn)品,已經(jīng)接入了十多個(gè)業(yè)務(wù),線上運(yùn)行穩(wěn)定,接入的效率得到極大提升。
    未來我們將進(jìn)一步對(duì)DSL的表達(dá)能力進(jìn)行加強(qiáng),同時(shí)將接入端計(jì)算能力,使得一些符合端測(cè)直接計(jì)算的業(yè)務(wù)場(chǎng)景,實(shí)時(shí)性得到更高的提升。同時(shí)將結(jié)合算法能力,去挖掘潛在的業(yè)務(wù)價(jià)值。

    ?

    阿里云雙11億元補(bǔ)貼提前領(lǐng),進(jìn)入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110

    原文鏈接
    本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的码农节快乐|一个系统,高效解决复杂事件采集-计算-实时触达的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。