您的位置:首页 > 其它

Kafka(一)初步介绍

2016-04-18 14:46 344 查看
Part 1 Kafka简介

Kafka是一种分布式的,基于发布/订阅的消息系统。它具有以下的特性:

以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。

高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。

支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。

同时支持离线数据处理和实时数据处理。

Scale out:支持在线水平扩展。

Part 2 为何要使用kafka作为消息中间件:

(1)解耦:

在项目启动之初来预测将来项目遇到什么需求,是极其困难的。kafka处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程要集成kafka都要实现这一接口。这就允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。例如flume和storm或者hadoop,处理任务不同,只需要相应的修改两边的处理过程,而不需要大量修改kafka内部的代码。

(2)顺序保证

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka保证一个Partition内的消息的有序性。

(3)缓冲

由于数据传入的速度和数据处理的速度不一定同步,因此需要添加一个消息中间件来作为缓冲,比如kafka。

(4)异步通信

很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

Part 3 应用场景:


(1)Messaging



对于一些常规的消息系统,kafka是个不错的选择;partitions/replication和容错,可以使kafka具有良好的扩展性和性能优势。不过到目前为止,我们应该很清楚认识到,kafka并没有提供JMS中的“事务性"“消息传输担保(消息确认机制)""消息分组"等企业级特性;kafka只能使用作为"常规"的消息系统,在一定程度上,尚未确保消息的发送与接收绝对可靠(比如,消息重发,消息发送丢失等)


(2)Websit activity tracking


kafka可以作为”网站活性跟踪“的最佳工具;可以将网页/用户操作等信息发送到kafka中。并实时监控,或者离线统计分析等。

[b]
(3)Log Aggregation


[/b]

kafka的特性决定它非常适合作为"日志收集中心";application可以将操作日志"批量""异步"的发送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/压缩消息等,这对producer端而言,几乎感觉不到性能的开支.此时consumer端可以使hadoop等其他系统化的存储和分析系统.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: