Kafka的概念

Kafka的设计思想及基本使

1、Kafka基本概念
    特性:
        高吞吐,低延迟,只有主题:主题下面包括多个分片
        可拓展性,支持集群和热扩展
        持久性:消息被持久化到本地磁盘,保证数据的稳定
        容错性:可以支持N-1个节点失败,服务仍然可以使用
        高并发:支持数千用户同时读写
    四个组成部分:
        生产者Producer,消费者(组),kafka节点(集群),zookeeper节点(集群)
        消费者Consumer(组):
            同一个分区的数据只能被消费者组里面一个用户消费
            同一消费者组内的消费者可以消费同一个topic下面不同分区的数据
        kafka集群:
            broker:kafka实例(kafka服务节点,broker id区分)
            Topic:消息主题(业务分类)比如:订单,支付
            Partition:topic分区,比如订单分为已支付,未支付,已发货,待发货
            Replication:分区备份,比如订单备份已支付,备份未支付分区
                        副本的数量不能大于Broker数量,可以小于
                        而且要保证主分区(leader)和备份分区(follower)不在同一台机器上
            Message:生产者发送的消息主体
            

2、Kafka核心概念
        Producers,消息生产者向kafka的topic发送消息发过程
                    通过一定的算法将不同的消息保存到不同的分区片
                    同步,get获取response
                    异步,callback接口监听消息保存结果返回
        Broker:没有副本机制(没有主备主从节点说法,只有分区才有主备说法)
                消息没有状态,导致删除问题
                消息的删除:时间7天,容量1G            
        Message:offset(偏移量),messagesize,data    
        Consumers:订阅者处理消息的过程,跟rabbitmq需要区分的是订阅者是一个组的概念
                    

3、kafka安装部署
        kafka元数据是保存在zookeeper服务器节点上的(znode),包括topic,分区属性

        先启动zookeeper,不然kafka读取不到元数据,会启动失败

4、Kafka API操作
        生产者:生产者对象,生产者记录,发送消息可以通过分区算法来实现
        消费者:消费者对象,消费者返回记录,消费消息可以通过poll拉取topic中的信息

5、工作流程分析
        发送数据:生产者发送消息找leader,不能发送给follower
                1、先从集群获取leader(其实是从zookeeper元数据中去获取)
                2、生产者将消息发送给leader分区
                3、leader分区将消息写入本地文件
                4、follower分区从leader分区 pull消息
                5、follower分区将消息写入本地并且ack发送给leader分区
                6、leader分区根据配置来决定什么时候向producer发送写入ack

                
        保存数据:
            保存三个文件:index(配合topic等信息路由到具体的消息),log(存储消息),timeindex(备份还原)
            
            存储策略:
                基于时间:默认是保存7天 ----》----log.retention.hours=168
                基于大小:默认是1G   》----》log.segment.bytes=1073741824
    
        消费数据:
            1、一般建议消费者数量和分区数据保持一致(可以达到最高吞吐)        
            
            2、消费的原理:segment(topic+分区) + index(offset)+二分查找+顺序查找
            
            0000000000000.log
            
            0000000000009.log
            
            0000000000018.log    

6、核心组件
        发送类型:同步发送,异步发送
        
        序列化器:可以自定义,只需要实现了kafka的Serializer接口
        
        分区器:
            给定分区号,直接将数据发送到指定的分区
            没有给定分区号,给定数据的key值,通过key取hashcode%numpartition取模
            没有分区号,也没给key值。直接轮询
            自定义分区器
        
        拦截器:可以自定义拦截器,对消息类容进行过滤,比如敏感词过滤


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值