我们先来谈谈Apache Kafka从而何来?我们为什么要开发Kafka?Kafka到底是什么?
目前500强里面有至少1/3的企业正在使用Kafka,它是管理和处理流式数据的利器。
Kafka最初是LinkedIn的一个内部基础设施系统,最初出现的原因是LinkedIn公司的架构图里刚好缺一个可以帮助处理持续数据流的组件。在开始创造Kakfa之前,这家公司实验了各种现有的解决方案,从消息系统到日志聚合系统,再到ETL工具,但是都无法满足需求。最后,LinkedIn公司决定从头开发一个系统,不仅仅只是开发一个能够存储数据的系统,比如传统的关系型数据库、键值存储引擎、搜索引擎或缓存系统,而是希望能够把数据看成是持续变化和不断增长的流,并基于这样的想法构建出一个数据系统,事实上,Apache Kafka是数据架构的重要一环。
Apache Kafka一开始被用在社交网络的实时应用和数据流当中,现在已经成为下一代数据架构的基础。大型零售商正在基于持续数据流改造他们的基础业务流程,汽车公司正在从互联网汽车那里收集和处理实时数据流,银行也在重新思考基于Apache Kafka改造他们的基础流程和系统。那么Apache Kafka在这当中充当了怎样的角色?它与现有的系统有什么区别?
我们认为Apache Kafka是一个流平台,在这个平台上可以发布和订阅数据流,并把它们保存起来、进行处理,这就是构建Kafka的初衷。以这种方式来看待数据确实与人们习惯的设计方案有所不同,但是它确实在构建应用和架构方面表现出了强大的抽象能力。Kafka经常会拿来与现有的技术作比较:企业级消息系统、大数据系统和数据集成或ETL工具。
Apache Kafka有点像消息系统,允许发布和订阅消息流。从这点来看,它类似于ActiveMQ、RabbitMQ或IBM的MQSeries等产品。尽管看上去有些相似,但Kafka与这些系统的消息系统仍然存在很多重要的不同点,这些差异使它完全不同于消息系统。首先,作为一个现代的分布式系统,Kafka以集群的方式运行,可以自由伸缩,处理公司的所有应用程序。Kafka集群并不是一组独立运行的broker,而是一个可以灵活伸缩的中心平台,可以处理整个公司所有的数据流。其次,Kafka可以按照你的要求存储数据,保存多久都可以。作为数据连接层,Kafka提供了数据传递保证,可复制、持久化,保留多长时间完全可以自己决定。最后,流式处理将数据处理的层次提升到了新高度。消息系统只会传递消息,而Kafka的流式处理能力让你只用很少的代码就能够动态地处理派生流和数据集。Kafka的这些独到之处证明,它不只是“另一个消息队列”。
从另一个角度来看Kafka,我们会把它看成实时版的Hadoop,这也是LinkedIn设计和构建Kakfa的原始动机之一。Hadoop可以存储和定期处理大量的数据文件,而Kafka可以存储和持续处理大型的数据流。从技术角度来看,它们有惊人的相似之处,很多人将新兴的流式处理看成批处理的超集。它们之间的最大不同体现在持续的低延迟处理和批处理之间的差异上。Hadoop和大数据主要应用在数据分析上,而Kafka因其低延迟的特点更适合用在核心的业务应用上。业务事件时刻在发生,Kakfa能够及时对这些事件作出响应,基于Kafka构建的服务直接为业务运营提供支撑,提升用户体验。
Kafka与ETL工具或其他数据集成工具之间也可以进行一番比较。Kafka和这些工具都擅长移动数据,但我想它们最大的不同在于Kafka颠覆了传统的思维。Kafka并非只是把数据从一个系统拆解出来再塞进另一个系统,其实是一个面向实时数据流的平台。也就是说,它不仅可以将现有的应用程序和数据系统连接起来,它还能用于加强这些触发相同数据流的应用。我们认为这种以数据流为中心的架构是非常重要的。在某种程度上说,这些数据流是现代数字科技公司的核心,与现金流一样重要。
将上述的三个领域聚合在一起,将所有的数据流整合到一起,流平台因此变得很有吸引力。
除了这些不同点之外,对于那些习惯了开发请求与响应风格应用和关系型数据库的人来说,要学会基于持续数据流构建应用程序也确实是一个巨大的思维转变。
发个小广告!!!走过路过,不要错过!新书来啦!!!
这里有你想买的书!
这里有你想要的购书地址!(附上当当店铺)
http://product.dangdang.com/23949549.html#ddclick_reco_reco_relate
注:本公众号与当当店铺并无从属关系,仅为大家提供一个便捷购物地址。若有所冲突,纯属巧合,立删。
每晚十点钟
我们不见不散
麦克叔叔每晚十点说
点击关注,有惊喜哦~
关注
领取专属 10元无门槛券
私享最新 技术干货