大数据(072)Kafka【Kafka介绍】

一、什么是Kafka

        Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。其主要应用场景是:日志收集系统和消息系统。

二、Kafka架构

        • producer:消息生存者
        • consumer:消息消费者
        • broker:kafka集群的server,负责处理消息读、写请求,存储消息。多个borker组成kafka cluster,一个机器上可以部署一个或者多个Broker,这多个Broker连接到相同的ZooKeeper就组成了Kafka集群。
        • topic:消息队列/分类 。个Broker上可以创建一个或者多个Topic。同一个topic可以在同一集群下的多个Broker中分布。

三、kafka 的消息存储和生产消费模型

        kafka里面的消息是由topic来组织的,简单的我们可以想象为一个队列,一个队列就是一个topic,然后它把每个topic又分为很多个partition,这个是为了做并行的,在每个partition里面是有序的,相当于有序的队列,其中每个消息都有个序号,比如0到12,从前面读往后面写。

        一个partition对应一个broker,一个broker可以管多个partition,比如说,topic有6个partition,有两个broker,那每个broker就管3个partition。

         当数据发过来的时候就往这个partition上面append,kafka和很多消息系统不一样,很多消息系统是消费完了我就把它删掉,而kafka是根据时间策略删除,而不是消费完就删除,在kafka里面没有一个消费完这么个概念,只有过期这样一个概念。

        这里producer自己决定往哪个partition里面去写,这里有一些的策略,譬如如果hash就不用多个partition之间去join数据了。

        • consumer自己维护消费到哪个offset
        • 每个consumer都有对应的group
        • group内是queue消费模型
                – 各个consumer消费不同的partition
                – 因此一个消息在group内只消费一次
        • group间是publish-subscribe消费模型
                – 各个group各自独立消费,互不影响
                – 因此一个消息在被每个group消费一次

四、Kafka特点

        • 消息系统的特点:生存者消费者模型,FIFO
        • 高性能:单节点支持上千个客户端,百MB/s吞吐
        • 持久性:消息直接持久化在普通磁盘上且性能好
        • 分布式:数据副本冗余、流量负载均衡、可扩展
        • 很灵活:消息长时间持久化+Client维护消费状态 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值