概述 工作中用到了kafka ,本篇博文整理一下学习到的kafka相关知识,内容多来自网上(主要是官网doc,个人博客),侵删。 kafka 是Linkedin 使用Scala 编写的一个开源的分布式消息系统,当时开发的初衷是为了解决网站活动流数据(比如网页浏览,点击,驻留时间等等)的数据转发处理。因为活动流数据是实时且流量比较大,可想而知kafka 的最大特点就是高吞吐率且容易扩展。 kafka 的设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展。 使用场景 从不同的角度出发,kafka的作用也不同。 kafka作为一个消息系统,类比redis,rabbitmq等同类产品, kafka作为一个存储系统,因为进入kafak的消息都会被持久化所以可以作为一个存储系统, kafka作为一个流处理系统,对于流数据,可以在kafka里多次处理,多次流转。 相应的,kafka 的使用场景大致如下: 作为传统消息队列系统的替换。 做metric监控数据的收集处理。 做日志数据的收集处理。 流数据处理。 事件驱动架构的核心组件。 上图中可看出kafka的角色,相应的,kafka也提供了四种核心api: The Producer API allows an application to publish a stream of records to one or more Kafka topics. The Consumer API allows an application to subscribe to one or more topics and process the stream of records produced to them. The Streams API allows an application to act as a stream processor, consuming an input stream...
评论