14
copyright Fringe81 Co.,Ltd. LT: Akka Stream x Kinesis 2Reactive System Meetup in 西新宿 2016/02/02 @mtoyoshi

Akka Stream x Kinesis at Shinjuku reactive meetup vol2

Embed Size (px)

Citation preview

copyright Fringe81 Co.,Ltd.

LT: Akka Stream x Kinesis第2回Reactive System Meetup in 西新宿

2016/02/02

@mtoyoshi

copyright Fringe81 Co.,Ltd.

@mtoyoshi

Fringe81で働くScalaエンジニア

以前、関数型ストリーム処理勉強会でAkka Streamについて話しましたhttp://www.slideshare.net/MasakiToyoshima/akka-stream-54843336

copyright Fringe81 Co.,Ltd.

OutOfMemoryの危険

Actor Actor

Akka StreamといえばBack-Pressure(?)

各ステージはBufferを持つのでした

copyright Fringe81 Co.,Ltd.

EC2 EC2

... ...

ex.広告配信サーバー ex.集計用サーバー

copyright Fringe81 Co.,Ltd.

EC2 EC2Kinesis

... ...

自分のペースで

copyright Fringe81 Co.,Ltd.

EC2 EC2

... ...

自分のペースで

自分のペースで

自分のペースで

Kinesis

copyright Fringe81 Co.,Ltd.

Akka Streamと違ってbuffer(=Kinesis)は数ではなく時間(=24H)

EC2 EC2Kinesis

... ...

copyright Fringe81 Co.,Ltd.

● Write: 秒間1000records/shard, 1MB● Read: 秒間5req/shard, 2MB● Shard数増減はカジュアルに出来る● 24Hデータ保持● アプリ側で読み込み済み箇所を記録● 類似サービスにKafkaがある

Kinesis

copyright Fringe81 Co.,Ltd.

EC2 Kinesis

... ...

● fluent-plugin-kinesisを使用した○ EC2→S3で利用していた○ 仮にshardの処理量を超えて書き込むとエラー

となるがリトライしてくれる

EC2

copyright Fringe81 Co.,Ltd.

EC2 Kinesis

... ...

● KCL(Kinesis Client Library)を使用した○ 以下実装済みでAppコードに集中できる○ 読み込み箇所の記録(Dynamo)○ Shard増減対応○ CloudWatchメトリクス記録

EC2Kinesis

copyright Fringe81 Co.,Ltd.

EC2 Kinesis

... ...

override def processRecords(pri: ProcessRecordsInput) = {

val records: List[Record] = pri.getRecords().asScala.toList

Source(records) .map{ record => new String(record.getData().array(), CHARSET) } ….

EC2Kinesis

usingAkka Stream

copyright Fringe81 Co.,Ltd.

余談:Spark StreamingでもKCLが

copyright Fringe81 Co.,Ltd.

Spark1.6でKCLを使ったCheckpoint関連のbugが取り除かれ、晴れて(?)コード上のコメントから制約を伝える部分が消える

https://github.com/apache/spark/pull/9421

copyright Fringe81 Co.,Ltd.

おわり