Flink DataStream 廣播狀態模式

2021-09-24 22:14:45 字數 2369 閱讀 4619

我們使用state描述了operator state,在恢復時,可以修改並行度重新分配operator state(偶**再分配方式),或者使用union的方式(聯合重新分發)恢復並行任務。

operator state還有一種廣播狀態模式(broadcast state)

引入廣播狀態是為了支援這樣的用例,其中來自乙個流的一些資料需要被廣播到所有下游任務,其中它被本地儲存並用於處理另乙個流上的所有傳入元素。作為廣播狀態可以作為自然擬合出現的示例,可以想象包含一組規則的低吞吐量流,我們希望針對來自另乙個流的所有元素進行評估

考慮到上述型別的用例,廣播狀態與其他運營商狀態的不同之處在於:

keyed streamnon-keyed stream與乙個broadcaststream連線,非廣播流可以通過呼叫connect()來完成,並將其broadcaststream作為引數。這將返回乙個broadcastconnectedstream,我們可以process()方法來處理我們的邏輯。如果是keyed stream連線廣播流,process()裡面的引數需是keyedbroadcastprocessfunction;如果是non-keyed stream連線廣播流,process()裡面的引數是broadcastprocessfunction

1、keyed stream連線廣播流示例:

public

class

keyedbroadcaststream

}@override

public

void

processbroadcastelement

(user value, context ctx, collector

out)

throws exception })

.print(""

);env.

execute

("broadcast: ");

}}

2、non-keyed stream連線廣播流

public

class

broadcaststream})

; user.

print

("user: ");

singleoutputstreamoperator

order = env

.addsource

(new

flinkkafkaconsumer010

("order"

,new

******stringschema()

, p)).

map(

newmapfunction

()})

; order.

print

("order: ");

mapstatedescriptor

descriptor =

newmapstatedescriptor

("user"

, string.

class

, user.

class);

org.apache.flink.streaming.api.datastream.broadcaststream

broadcast = user.

broadcast

(descriptor)

; broadcastconnectedstream

connect = order.

connect

(broadcast)

; connect

.process

(new

broadcastprocessfunction

()}@override

public

void

processbroadcastelement

(user value, context ctx, collector

out)

throws exception })

.print

("result: ");

env.

execute

("broadcast: ");

}}

RabbitMQ fanout廣播交換器模式

當訂單服務向交換器傳送請求的時候,需要簡訊服務和push服務進行工作,如果使用傳統的服務呼叫的話,是強耦合不利於擴充套件開發,此時可以使用rabbitmq提供的交換器中的fanout 廣播模式 進行解決,中介軟體通過廣播模式同時將請求放入訂單服務的佇列中。進行業務的處理 fanout不會進行路由鍵匹...

sd卡狀態監聽廣播

先配置清單檔案 android name 解除安裝sd卡 android name android.intent.action.media unmounted 掛載sd卡 android name android.intent.action.media mounted sd的裡面存的是一些檔案資料,...

android 使用廣播監聽網路狀態

網路狀態發生變化的時候,系統會發出 android.net.conn.connectivity change 下面是實現的 demo packagemark.zhang importandroid.content.broadcastreceiver importandroid.content.con...