<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>

          Flink StateFunction:集成了Flink和FaaS的流處理優(yōu)點(diǎn)

          共 2277字,需瀏覽 5分鐘

           ·

          2020-10-14 19:10

          點(diǎn)擊上方藍(lán)色字體,選擇“設(shè)為星標(biāo)

          回復(fù)”資源“獲取更多資源

          大數(shù)據(jù)技術(shù)與架構(gòu)
          點(diǎn)擊右側(cè)關(guān)注,大數(shù)據(jù)開發(fā)領(lǐng)域最強(qiáng)公眾號(hào)!

          大數(shù)據(jù)真好玩
          點(diǎn)擊右側(cè)關(guān)注,大數(shù)據(jù)真好玩!



          近日,有狀態(tài)函數(shù)(Stateful Functions , statefun.io )宣布開源,它可以極大降低構(gòu)建和編排分布式有狀態(tài)應(yīng)用程序的復(fù)雜性,集成了 Apache Flink 和函數(shù)即服務(wù)(Function-as-a-Service,F(xiàn)aaS)的流處理優(yōu)點(diǎn),為下一代事件驅(qū)動(dòng)架構(gòu)提供了強(qiáng)大的抽象能力。這篇博客將為開發(fā)者介紹有狀態(tài)函數(shù)產(chǎn)生的原因、概念以及如何使用。

          問題:有狀態(tài)應(yīng)用仍然很難

          在 Kubernetes 和 FaaS 等技術(shù)的推動(dòng)下,無狀態(tài)計(jì)算的編排已經(jīng)取得了長(zhǎng)足進(jìn)步,但是由于大多數(shù)產(chǎn)品主要關(guān)注的是計(jì)算,而不是狀態(tài),所以當(dāng)涉及到有狀態(tài)的分布式應(yīng)用程序時(shí),這些技術(shù)仍然不能很好得滿足要求。此外,函數(shù)之間的交互仍然會(huì)為開發(fā)的整體易用性和分布式數(shù)據(jù)的一致性帶來挑戰(zhàn)。

          Stateful Functions 是專門為突破這些限制而構(gòu)建的,它讓開發(fā)者能夠定義松耦合、獨(dú)立的函數(shù),這些函數(shù)占用空間很小,可以在共享資源池中進(jìn)行一致且可靠的交互。該框架由實(shí)現(xiàn)“Stateful Functions”的抽象 API(圖 1)和基于 Apache Flink 用于分布式協(xié)調(diào)、通信和狀態(tài)管理的運(yùn)行時(shí)組成。

          Stateful Functions API

          該 API 基于 Stateful Functions,封裝了業(yè)務(wù)邏輯的小功能片段,有點(diǎn)類似于 actors 。這些函數(shù)以虛擬實(shí)例的形態(tài)存在,虛擬實(shí)例通常是指應(yīng)用程序中的每個(gè)實(shí)體(例如,每個(gè)用戶都有一個(gè)虛擬實(shí)例),并且這些函數(shù)分布在碎片上,從而使應(yīng)用程序具有開箱即用的水平可伸縮性。每個(gè)函數(shù)在局部變量中都有持久的用戶定義狀態(tài),并且可以隨意向其他函數(shù)(包括它自己)發(fā)送消息,并能保證只發(fā)送一次。

          運(yùn)行時(shí)(Runtime)

          支持 Stateful Functions 的運(yùn)行時(shí)是基于 Apache Flink 流處理的。狀態(tài)保存在流處理引擎中,與計(jì)算位于同一位置,并能提供快速且一致的狀態(tài)訪問。狀態(tài)的持久性和容錯(cuò)性是建立在 Flink 具有魯棒性的分布快照模型上的。

          圖 1


          計(jì)算狀態(tài),而不是根據(jù)狀態(tài)計(jì)算

          該框架不是為了替代 FaaS 或者 Serverless,相反,Stateful Functions 的目的是提供一組類似于 Serverless 計(jì)算屬性的功能,但這些功能是用于解決以狀態(tài)為中心的問題。

          以狀態(tài)為中心(State-centric)

          有狀態(tài)函數(shù)主要用于衡量狀態(tài)和不同狀態(tài)與事件之間的交互,以促進(jìn)這些交互的邏輯作為計(jì)算的主要焦點(diǎn)。事件驅(qū)動(dòng)的應(yīng)用程序需要處理交互狀態(tài)機(jī)并且記錄上下文信息,這非常適合以狀態(tài)為中心的范例。

          以計(jì)算為中心(Compute-centric)

          另一方面,F(xiàn)aaS 和 Serverless 應(yīng)用程序框架主要擅長(zhǎng)彈性擴(kuò)展專用計(jì)算資源。與狀態(tài)和其他函數(shù)的交互,整合的不是很好,當(dāng)然這也不是它們的核心優(yōu)勢(shì)。擬合用例中一個(gè)很好的例子是經(jīng)典的“使 AWS Lambda 實(shí)現(xiàn)鏡像的伸縮”。

          圖 2


          為了實(shí)現(xiàn)這一點(diǎn),Stateful Functions API 下的運(yùn)行時(shí)依賴于 Apache Flink 的流處理,并且擴(kuò)展了其強(qiáng)大的狀態(tài)管理和容錯(cuò)模型。容錯(cuò)模型的主要優(yōu)點(diǎn)是狀態(tài)和計(jì)算共存于同一網(wǎng)絡(luò),這意味著不需要記錄每次往返,就可從外部存儲(chǔ)系統(tǒng)(如 Cassandra、DynamoDB)中獲取狀態(tài),也不需要使用特定的狀態(tài)管理模式來實(shí)現(xiàn)一致性(如事件源、CQRS)。其他優(yōu)點(diǎn)還包括:

          • 不需要管理動(dòng)態(tài)消息,也不需要維護(hù)復(fù)雜的復(fù)制或重新分區(qū)策略,因?yàn)槌志眯院蜑闋顟B(tài)快照提供對(duì)象存儲(chǔ)一樣簡(jiǎn)單;

          • 流(快速實(shí)時(shí))處理和批(離線)處理的高吞吐量允許開發(fā)者模糊事件驅(qū)動(dòng)應(yīng)用程序和通用數(shù)據(jù)處理之間的界限。

          Stateful Functions 對(duì)計(jì)算和存儲(chǔ)的劃分與經(jīng)典的兩層架構(gòu)不同,它維護(hù)了一個(gè)短暫的狀態(tài) / 計(jì)算層(Apache Flink)和一個(gè)簡(jiǎn)單的持久化 blob 存儲(chǔ)層(圖 2)。在編程上,持久性是基于持久化值的概念,這使得每個(gè)函數(shù)實(shí)例都能夠獨(dú)立維護(hù)和跟蹤容錯(cuò)狀態(tài)。

          擴(kuò)展流處理范圍

          盡管Stateful Functions API 獨(dú)立于Flink,但運(yùn)行時(shí)是在Flink 的 DataStream API 之上構(gòu)建的,并且使用了輕量版的過程函數(shù)(即訪問狀態(tài)的低級(jí)函數(shù))來實(shí)現(xiàn)底層抽象。與vanilla Flink 相比,核心優(yōu)勢(shì)在于函數(shù)可以任意將事件發(fā)送給其他函數(shù),而不僅僅是DAG 的下游。

          圖3


          Stateful Functions 應(yīng)用程序通常是模塊化的,包含了多個(gè)函數(shù)包,這些函數(shù)包可以一致且可靠地交互,并復(fù)用到一個(gè) Flink 應(yīng)用程序上(圖 3)。這使得許多小工作可以共享相同的資源池,并根據(jù)需要加以利用,而無需預(yù)訂高峰時(shí)可能需要的資源。在任何時(shí)候,絕大多數(shù)虛擬實(shí)例都是空閑的,不會(huì)消耗任何計(jì)算資源。

          版權(quán)聲明:

          本文為大數(shù)據(jù)技術(shù)與架構(gòu)整理,原作者獨(dú)家授權(quán)。未經(jīng)原作者允許轉(zhuǎn)載追究侵權(quán)責(zé)任。
          編輯|冷眼丶
          微信公眾號(hào)|import_bigdata


          歡迎點(diǎn)贊+收藏+轉(zhuǎn)發(fā)朋友圈素質(zhì)三連


          文章不錯(cuò)?點(diǎn)個(gè)【在看】吧!??

          瀏覽 68
          點(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>
                  久热99在线视频 | 夜夜爽7777精品国产三级 | 日韩 人妻 精品 | 最新国产三级 | 国产一区二区三区片 |