码迷,mamicode.com
首页 > 其他好文 > 详细

kafka基本介绍

时间:2015-09-02 11:58:48      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:kafka

1 卡夫卡消息队列简介

1.1 消息队列

1.1.1 基本特性

  1. 可扩展
    • 在不需要下线的情况下进行扩容
    • 数据流分区(partition)存储在多个机器上
  2. 高性能
    • 单个broker就能服务上千客户端
    • 单个broker每秒种读/写可达每秒几百兆字节
    • 多个brokers组成的集群将达到非常强的吞吐能力
    • 性能稳定,无论数据多大
  3. 持久存储
    • 存储在磁盘上
    • 冗余备份到其他服务器上以防止丢失

1.1.2 消息格式

  1. 一个topic对应一种消息格式,因此消息用topic分类
  2. 一个topic代表的消息有1个或者多个patition(s)组成
  3. 一个partition中
    • 一个partition应该存放在一到多个server上
      • 如果只有一个server,就没有冗余备份,是单机而不是集群
      • 如果有多个server
        • 一个server为leader
        • 其他servers为followers
        • leader需要接受读写请求
        • followers仅作冗余备份
        • leader出现故障,会自动选举一个follower作为leader,保证服务不中断
        • 每个server都可能扮演一些partitions的leader和其它partitions的follower角色,这样整个集群就会达到负载均衡的效果
    • 消息按顺序存放
    • 消息顺序不可变
    • 只能追加消息,不能插入
    • 每个消息都有一个offset,用作消息ID, 在一个partition中唯一
    • offset有consumer保存和管理,因此读取顺序实际上是完全有consumer决定的,不一定时线性的
    • 消息有超时日期,过期则删除

1.1.3 生产者 producer

  • producer将消息写入kafka
  • 写入要指定topic和partition
  • 消息如何分到不同的partition,算法由producer指定

1.1.4 消费者 consumer

  • consumer读取消息并作处理
  • consumer group
    • 这个概念的引入为了支持两种场景:每条消息分发一个消费者,每条消息广播给所有消费者
    • 多个consumer group订阅一个topic,该topci的消息广播给所有consumer group
    • 一条消息发送到一个consumer group后,只能由该group的一个consumer接收和使用
    • 一个group中的每个consumer对应一个partition可以带来如下好处
      • 可以按照partition的数目进行并发处理
      • 每个partition都只有一个consumer读取,因而保证了消息被处理的顺序是按照partition的存放顺序进行,注意这个顺序受到producer存放消息的算法影响

版权声明:本文为博主原创文章,未经博主允许不得转载。

kafka基本介绍

标签:kafka

原文地址:http://blog.csdn.net/csfreebird/article/details/48175983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!