あなたの質問に1つ1つ答えてください。
は、なぜ彼らは、この例では(カフカのような)任意のストリーミング層を使用していませんか?
私はあなたがフリンクのストリーミングについて誤解していると思います。まず第一に、Flinkはストリーム処理エンジンです。基本的にFlinkが処理しているものはすべてストリームです。
多くの場合、Flinkはストリームモードまたはバッチモードで動作することができますが、Flinkバッチは有限の長さのストリームの特別なケースです。ストリームは通常無限大です。だから、すべてがFlinkの出来事の流れです。ですから、質問はFlinkがデータを取得する場所です。
Flinkは多くのソースからデータを読み取ることができ、KafkaはFlinkで使用できるソースの1つです。 Flinkリポジトリのthisとthisフォルダを見てください。それらには、Kafka、Kinesis、RabbitMQなどのFlinkにさまざまなソースが含まれています。 Flinkの観点からは、データが外部システムから来ているか、ファイルから読み込まれているか、または生成されているかどうかは関係ありません。
Flinkユーザーは、Flinkランタイムで使用されるデータソースを実装できます。これを行うには、RichSourceFunction
クラスを拡張し、run
メソッドを実装する必要があります。例を単純化し、その単純なデータソースを使用することにしましたどのようなデータソースのチュートリアルの作成者を使用するために重要ではありませんので
public class DummySource extends RichParallelSourceFunction<Integer> {
public void run(SourceContext<Integer> sourceContext) throws Exception {
// You can specify custom termination conditions
// the source should not be inifite
int i = 0;
while (true) {
// provide an event for Flink processing
sourceContext.collect(i);
i++;
}
}
}
:たとえば、このデータソースは、0から始まる番号の無限のストリームを生成します実際にあなたは例が意図的にCEPライブラリの要点を示すために単純化されカフカやキネシスなどの外部システムからのイベントデータを読み取るだろうが
MonitoringEvent monitoringEvent;
int rackId = random.nextInt(shard) + offset;
if (random.nextDouble() >= temperatureRatio) {
double power = random.nextGaussian() * powerStd + powerMean;
monitoringEvent = new PowerEvent(rackId, power);
} else {
double temperature = random.nextGaussian() * temperatureStd + temperatureMean;
monitoringEvent = new TemperatureEvent(rackId, temperature);
}
sourceContext.collect(monitoringEvent);
:乱数ジェネレータを使用してデータを生成します。ストリーミングが必要な
とき&? 「ストリーミング」によって
もしあなたがいないバッチを意味し、それはイベントが常に受信されているときに使用すると、あなたは近いツーリアルタイム処理時間を必要とすべきであると言うことは安全です。
カフカを使用する必要がある場合は、イベントのストリームの処理に使用したり、メッセージブローカーとして使用したり、ログ集計などに使用したりできます。 HereはApache Kafkaを使用できるユースケースのリストです。
FLINK CEPの例を参照すると、私はどのように&ストリーミング層は(カフカ/キネシスのように)遊びに来る場所を知りたいですか?
カフカ/キネシスのようなストリーミングレイヤーが入ってくると、どのようなメリットとデメリットがありますか?
は、実際のアプリケーションでは、カフカ/キネシスデータ・ソースまたは外部システムからデータを読み取り、異なるデータソースを使用します。
Kafkaは、RabbitMQのような既存のメッセージブローカーの代替品で、優れたパフォーマンス特性を備えていますが、Flinkで他のデータソースを使用することも、自分で作成することもできます。
Kafkaはメッセージキューですが、Flinkのようなストリーミング技術のためのメッセージのソース/シンクかもしれませんが、Flinkはストリーム処理を行っています。 –
私はストリーミングをいつ行うべきかを知りたいですか?いつストリーミングは本当に必要ではない?? – Akki