Kafka(一)初步介绍

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中。并实时监控,或者离线统计分析等。

          (3)Log Aggregation

         kafka的特性决定它非常适合作为"日志收集中心";application可以将操作日志"批量""异步"的发送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/压缩消息等,这对producer端而言,几乎感觉不到性能的开支.此时consumer端可以使hadoop等其他系统化的存储和分析系统.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值