美团每天产生几亿条消息,这些消息是如何处理的?kakfa又有什么魔力协助美团完成这么大数据量的运转?
据说去美团面试必定会被问到kafka的问题,有一道题是:kafka的存储机制是怎样的?
一、 kafka介绍:kafka 是分布式的、基于发布/订阅的消息机制。
特点:1、磁盘持久化
2、顺序写入,先进先出
3、支持流计算
结构:kafka的数据单元由字节数组组成。消息由key+value构成,key可为空。如下图所示:
消息模式: 数据格式json ,XML等
二、kafka的消息存储
1、 kafka的消息存储的划分: 1)主题; 2)分区
比如主题:消息可以根据美团电影票,外卖,团购,打车等主题进行分类分区;
比如主题外卖:可以分为北京,深圳,上海,三个分区
然后每个分区可以放在不同服务器,所以吞吐量可以非常高,堆服务器轻轻松松到100万。
2、kafka的消息以Broker存储。
1)一个独立的kafka服务器被称为broker
2)多个broker组成一个集群
3)多个broker,有一个当首领
4)副本机制
以下为一张kafka的经典集群图,来源网络。
三、kafka 与其它消息中间件比较
流计算的理解:
比如:今年的天猫两小时定量单突破千万,应该是给予消息系统的实时统计,不可能从数据库层面统计。
kafka的流计算:
四、安装,配置
略
五、使用
pom文件引用:
配置项:
生产者发送消息:
消费者