有很多流媒体处理的困扰之谈
杂记
近年,我有种感觉,关于”开源×流媒体处理”的实现正在大量涌现出来。仅凭想象,我能够列举以下几个例子。
-
- Storm
-
- Samza
-
- Spark Streaming
-
- Flink
-
- Apex
- Kafka Streams
考虑到这股潮流的源头,不仅仅是由于大数据和物联网等背景下需求的增加,还有分布式处理平台以Hadoop为首的成熟化趋势可能也是原因之一吧。
这些产品的目标方向大体相同,通常伴随着以下关键词。
-
- at least onceなセマンティクス
-
- 分散処理 (主にHadoop/YARN上で動作する)
-
- 耐障害性
-
- ステートフルな処理 (Window処理)
-
- (ある程度の)順序性の担保
- 機械学習
人们想要比较已经实施的东西是人的本性,如果试着去寻找的话,可以发现Samza的官方文档(http://samza.apache.org/learn/documentation/0.10/comparisons/introduction.html)以一个合理的标准来比较产品。比较的标准包括Durability/Ordering/StateManagement/Parallelism/Buffering等等。在日语文档中,我觉得昨天的Kafka Meetup#1中@kimutansk的资料总结得非常好。http://kafka-apache-jp.connpass.com/event/32293/presentation/
就我所知(或者说我只有接触过Spark Streaming和Kafka Streams这些较为正式的),大致上有以下的挑战感。
-
- プログラミングの前に抽象化された概念(KTable とかDStreamとか)を理解しなければいけない
-
- 基盤の特徴を理解したうえでの実装が必要(例: Idemponentにして exactly onceを実現する)
- 基盤側の都合もプログラムでケアしなければならない(チェックポイントとか)
日本的SI行业里很难找到那样的人才,我真心觉得。如果身边有的话,那就会非常重要。嗯,不要寄望于SI供应商,自己培养人才吧。
考虑到有很多产品可供选择时,如果想到最推荐的一个,一般会考虑到它是“后发优势”、“与数据源的协作性极高”以及“具备稳定的开发结构”。
卡夫卡流处理
我认为这样可能不错。哦,对了,我听说了LinkedIn被微软收购的消息。可能没事吧,但我还是开始担心起来了,哈哈。
在那个雨季的夜晚,我会产生这种想法。