<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          云原生事件驅(qū)動(dòng)組件之DIP

          共 2608字,需瀏覽 6分鐘

           ·

          2022-07-17 02:27


          事件驅(qū)動(dòng)架構(gòu)思想一直是軟件架構(gòu)領(lǐng)域非常重要的一種設(shè)計(jì)思想,每一次架構(gòu)浪潮下都會(huì)被提起。

          DDD 時(shí)代,怎么解決兩個(gè)領(lǐng)域下通信問題呢?事件驅(qū)動(dòng)。

          ESB 時(shí)代,事件總線就是非常重要的概念。

          微服務(wù)時(shí)代,異步通信/MQ更是被廣泛使用。

          云原生時(shí)代了,事件驅(qū)動(dòng)架構(gòu)模式再次被提起,變成了云服務(wù)下的一個(gè)云原生產(chǎn)品了。

          為了更好地理解云原生,了解云原生事件驅(qū)動(dòng)產(chǎn)品的價(jià)值就是很好的一個(gè)切入點(diǎn)。

          今天介紹的云原生事件驅(qū)動(dòng)產(chǎn)品是DIP,主要解決的是云原生時(shí)代數(shù)據(jù)集成的問題。

          隨著移動(dòng)互聯(lián)網(wǎng)發(fā)展、數(shù)據(jù)量爆炸,圍繞于數(shù)據(jù)接入、處理、清洗、展現(xiàn)的技術(shù)組件就不斷在發(fā)展。

          一個(gè)經(jīng)典的數(shù)據(jù)鏈路架構(gòu)圖如下:

          從數(shù)據(jù)源、數(shù)據(jù)接入、數(shù)據(jù)緩沖、數(shù)據(jù)目標(biāo),整個(gè)鏈路非常復(fù)雜。

          云原生時(shí)代下,數(shù)據(jù)集成的新訴求是:SaaS 化、低代碼、簡(jiǎn)單、可靠、高性能、按需付費(fèi)。

          DIP 是騰訊云的一款數(shù)據(jù)接入平臺(tái),目的是構(gòu)建數(shù)據(jù)源和數(shù)據(jù)處理系統(tǒng)之間的橋梁。

          定位是云上 SaaS 數(shù)據(jù)接入與處理平臺(tái),幫助客戶一站式實(shí)現(xiàn)數(shù)據(jù)接入、處理、分發(fā)。

          DIP 可以實(shí)現(xiàn) Http/Tcp 協(xié)議的 SDK 數(shù)據(jù)上報(bào)、數(shù)據(jù)變更訂閱機(jī)制、支持多種存儲(chǔ)數(shù)據(jù)庫。

          DIP 類似于傳統(tǒng)大數(shù)據(jù)解決方案中的 Kafka+Flink 的角色,但不能完全替代 Flink,只能解決一些通用數(shù)據(jù)接入場(chǎng)景,而復(fù)雜的數(shù)據(jù)處理還需要依賴于 Flink 流式計(jì)算實(shí)現(xiàn)。

          DIP 是基于 Kafka 實(shí)現(xiàn)的,Kafka 定位于存儲(chǔ)層,DIP 定位于分發(fā)平臺(tái),在 Kafka 基礎(chǔ)上多了接入層與分發(fā)層。

          Kafka 屬于 PaaS 層能力,DIP 屬于 SaaS 層能力,通過低代碼、Serverless 方式,實(shí)現(xiàn)一站式數(shù)據(jù)鏈路搭建,免運(yùn)維的效果。


          接下來看下 DIP 是如何解決過去的一些高頻數(shù)據(jù)處理場(chǎng)景的。

          日常開發(fā)中,經(jīng)常遇到一些比較簡(jiǎn)單的數(shù)據(jù)統(tǒng)一上報(bào)的需求,比如監(jiān)控?cái)?shù)據(jù)、用戶行為數(shù)據(jù)、APP 操作數(shù)據(jù)等。需要將端到端的數(shù)據(jù)統(tǒng)一收集到服務(wù)端,供業(yè)務(wù)查詢、處理、分析。

          一般情況下,這些上報(bào)的數(shù)據(jù)需要存儲(chǔ)到下游的分析系統(tǒng)里面(比如 ES、HDFS、Hive、數(shù)據(jù)湖等),再進(jìn)行下一步處理。

          但以上這些基礎(chǔ)設(shè)施屬于大數(shù)據(jù)相關(guān)組件,需要做數(shù)據(jù)接收、處理任務(wù)編寫、存儲(chǔ)等工作,對(duì)于研發(fā)人員和產(chǎn)品人員學(xué)習(xí)成本高,不夠友好。同時(shí)大數(shù)據(jù)組件往往屬于多租戶產(chǎn)品,擴(kuò)容難度大、成本高也不夠靈活。

          DIP 通過 SaaS 思路解決這個(gè)問題,通過簡(jiǎn)單的界面配置+SDK 上報(bào)方式,實(shí)現(xiàn)整個(gè)數(shù)據(jù)采集鏈路的搭建,簡(jiǎn)化了數(shù)據(jù)上報(bào)、處理、展示的閉環(huán),降低了研發(fā)成本。

          數(shù)據(jù)上報(bào)端,提供多種上報(bào) SDK,屏蔽了上報(bào)協(xié)議和多種 MQ 存儲(chǔ)協(xié)議的復(fù)雜性與差異性。


          另一種數(shù)據(jù)集成常見的需求是監(jiān)聽 mysql 的 binlog,這種情況往往需要研發(fā)搭建自定義的數(shù)據(jù)變更訂閱組件,比如基于 canal、databus 等。

          而基于 DIP 提供的 SaaS 組件,通過界面配置的方式即可完成對(duì) Mysql 的數(shù)據(jù)訂閱、處理、轉(zhuǎn)儲(chǔ)等流程。

          另一種常見的數(shù)據(jù)常見是數(shù)據(jù)的清洗與分發(fā)。比如數(shù)據(jù)接入之后,只需要簡(jiǎn)單的處理、過濾、歸并,再做下一步的存儲(chǔ)、轉(zhuǎn)發(fā)、分析、查詢。

          過去,對(duì)于這個(gè)問題,需要下把預(yù)處理數(shù)據(jù)落存儲(chǔ),比如存儲(chǔ)到 ES 或者 HDFS,然后自己寫個(gè) Flink 的任務(wù),做過程清洗。成本高、效率低。

          如果使用 DIP,可以通過提供的產(chǎn)品配置,完成一鍵配置,低代碼方式實(shí)現(xiàn)數(shù)據(jù)的過濾和清洗。

          還有一種場(chǎng)景,是多個(gè)數(shù)據(jù)源的歸并處理。比如有的數(shù)據(jù)來源于 SDK 上報(bào),有的來源于 Kafka,有的是 MySql 的 binlog。過去對(duì)于這種問題,同樣需要數(shù)據(jù)轉(zhuǎn)儲(chǔ)、分析、再處理,整個(gè)鏈路就比較長(zhǎng)。

          DIP 同樣可以通過簡(jiǎn)單的配置,實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)源的接入。

          DIP 整體架構(gòu)上,分為兩層,一層是數(shù)據(jù)面、一層是管控面。

          管控面圍繞于資源管理、監(jiān)控調(diào)度、自動(dòng)擴(kuò)縮容、遷移管理、配置告警等。

          數(shù)據(jù)面圍繞于數(shù)據(jù)流轉(zhuǎn)的鏈路,分為數(shù)據(jù)接入、數(shù)據(jù)處理、數(shù)據(jù)流出三部分。


          數(shù)據(jù)接入方式上,主要有三種:主動(dòng)訂閱、數(shù)據(jù)上報(bào)、跨云數(shù)據(jù)獲取。

          數(shù)據(jù)接入模塊也有三類,一類是 mysql 、nosql這樣的服務(wù)類數(shù)據(jù)上報(bào);

          一類是日志采集器;

          一類是 http 的主動(dòng)上報(bào);

          對(duì)于前兩類,可以通過產(chǎn)品化配置界面,拖拉拽的方式快速配置數(shù)據(jù)鏈路,而無需關(guān)注底層實(shí)現(xiàn)。第三類則需要引入 DIP 的 sdk 作為數(shù)據(jù)接入點(diǎn),有一定的侵入性和開發(fā)成本,但數(shù)據(jù)上報(bào)更靈活。

          DIP 平臺(tái)支持任務(wù)編排,在控制臺(tái)上可以看到數(shù)據(jù)流轉(zhuǎn)鏈路,比如數(shù)據(jù)源情況、轉(zhuǎn)儲(chǔ)處理、任務(wù)投遞、數(shù)據(jù)詳情等。通過編排方式可以增加或刪除鏈路上的節(jié)點(diǎn),做定制的數(shù)據(jù)處理鏈路。

          DIP 架構(gòu)上深度集成了 Kafka,通過 kafka 的 connector 將不同的數(shù)據(jù)源數(shù)據(jù)導(dǎo)進(jìn)來。對(duì)于 http 數(shù)據(jù)上報(bào),是通過 SDK 實(shí)現(xiàn)。本質(zhì)是將 http 上報(bào)的數(shù)據(jù)放到 kafka 的 producer,導(dǎo)入到隊(duì)列中,借助于 kafka 實(shí)現(xiàn)高可用、自動(dòng)恢復(fù)、擴(kuò)縮容等能力,提升穩(wěn)定性。

          接下來,再看下DIP接入的一些案例。

          多場(chǎng)景數(shù)據(jù)上報(bào):將 web 端、移動(dòng)端多種數(shù)據(jù)源上報(bào),做檢索查詢。

          1. 自定義代碼,引入 sdk,進(jìn)行業(yè)務(wù)邏輯處理;

          2. 原始數(shù)據(jù)進(jìn)入 ES 便于數(shù)據(jù)檢索;



          數(shù)據(jù)處理分發(fā):采集服務(wù)日志,放入 es 做檢索,部分?jǐn)?shù)據(jù)清洗處理后,存儲(chǔ)到 hdfs 持久化。

          1. 同一套數(shù)據(jù)源通過 kafka 上報(bào),基于 DIP 實(shí)現(xiàn)不同需求的數(shù)據(jù)分發(fā)(用于檢索、持久化、fink 計(jì)算)



          數(shù)據(jù)訂閱:多套存儲(chǔ)引擎中數(shù)據(jù)導(dǎo)入 ES 進(jìn)行檢索查詢。

          1. 數(shù)據(jù)寫入 ES 時(shí)跟進(jìn)時(shí)間分索引;

          2. 數(shù)據(jù)量大,需要做一定的數(shù)據(jù)精簡(jiǎn);

          3. 根據(jù)不同的表,將數(shù)據(jù)分發(fā)到不同的索引中;

          原始架構(gòu)鏈路:PGSQL + Debezium PGSQL + kafka connector + kafka + logstash + ESDIP架構(gòu)鏈路:PGSQL + DIP + ES

          http 數(shù)據(jù)接入 MQ:

          1. 簡(jiǎn)化客戶端使用,最好用兼容性較好的 http 協(xié)議;

          2. 底層 MQ 引擎切換業(yè)務(wù)無感;

          3. 支持現(xiàn)有的 Http 協(xié)議 SDK;



          數(shù)據(jù)接入數(shù)據(jù)湖:多種數(shù)據(jù)源數(shù)據(jù)共同存儲(chǔ)到數(shù)據(jù)湖。


          希望通過對(duì)DIP的介紹,能幫助你在頭腦中形成一個(gè)云原生時(shí)代,基礎(chǔ)架構(gòu)組件產(chǎn)品的全貌,幫助你看待及設(shè)計(jì)適用于云原生時(shí)代的技術(shù)組件。

          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色录像一级片 | 免费性网| 大操影院 | 色色色色色色五月婷婷 | 3p两根一起进女学生 |