【Oceanus新用户首购1元享12CU,流式计算】基于Kafka的实时计算引擎如何选择?
老码农来回答这个问题 。Kafkakafka 是linkedin开源的一款开源的分布式mq消息中间件,现在已经捐献给apache软件基金会(ASF) 。具有吞吐量大,低延时,容错性高,扩展性好的特点 。在大型数据处理中常扮演数据管道的角色 。也就是数据在中转,传输中起到一个管道的作用,类似于水管但是还可以起到缓冲作用 。
数据流过大也能有效的对数据进行传输 。我们项目的日志管道就是Kafka 。实时计算聊完kafka再聊一下什么是实时计算 。实时计算是基于海量数据,进行秒级响应,实时入库,实时分析处理数据的一种大数据计算方式 。要求时效性高,常用于网站流量分析、股市分析、天气气候分析等需要实时处理的业务场景 。打个比方,就是有PB级别数据不断传递过来,需要立马处理入库分析 。
与此对应的是离线计算 。这些通常是不需要立即处理,我先存起来,慢慢进行分析,或者用到的时候我再分析 。说到实时计算,就不能不提流式计算,其实两者没有必然关系 。实时强调实时性,流式是一种模型,从一个方向流向其他方向,而且某个点的流处理一次就没了,而且设计是无界的,源源不断 。把数据想象成水管里的水就会很好理解这个概念,打开水龙头源源不断流出来 。
从技术选型来说目前 有Storm、 apache spark 和apache flink。storm 是一个专注实时处理的流式数据处理引擎 。推特开源 。但是因为对数据是行级别处理以及容错 。所以效率不高,适合对实时性要求高,数据集不算太大的情况下使用 。spark 是一个高效率、易用性强、通用性强,兼容性好的数据处理引擎 。
比Hadoop 要快很多,Spark支持Java、Python和Scala的API,还支持超过几十种高级算法,用户可以快速构建不同的应用。目前业界用的也最多 。方案成熟,资料也非常全 。基本一线大厂都有spark海量数据处理平台 。但是spark 默认走的是批处理 。数据是一批一批处理离线计算的 。但是通过 spark stream流式处理的扩展 。
使得spark也能进行实时的数据计算,但是底层还是批处理,通过固定的offset偏移量进行实时流式批处理 。flink是大数据处理的一颗新星 。核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能 。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务 。
实现FaaS(函数即服务)是真正意义上的实时计算引擎 。目前也是最先进的 。但是才火起来 。除了一线大厂,小厂是目前是很难玩转的 。而且目前资料比较少,还可能有一些坑要踩 。但是这些遮挡不了flink的光芒 。目前社区十分活跃,而且阿里有魔改版本Blink 。常远来看更有前途 。总结通过上面的介绍结合自己的业务场景以及团队技术层次应该心中有答案了 。
推荐阅读
- 新的职称评定条件来了,职称等级
- 包子没蒸熟能重新蒸吗
- 小米max如何开启root,新手Root必看
- lv新款手机包 新款手机腰带包
- 什么狗小的比较好养,新手宠主养什么狗好
- 新筷子第一次用要怎么处理
- 新款苹果手机12大概多少钱,苹果手机最新款多少钱
- 苹果新品一般在什么时候发布,苹果每年什么时候发布新品
- 更新中卡住一直不动
- 3.14大爆炸6到飞起