美团为什么偏爱kafka?

       美团每天产生几亿条消息,这些消息是如何处理的?kakfa又有什么魔力协助美团完成这么大数据量的运转?

        据说去美团面试必定会被问到kafka的问题,有一道题是:kafka的存储机制是怎样的?

       一、 kafka介绍:kafka 是分布式的、基于发布/订阅的消息机制。

        特点:1、磁盘持久化

                   2、顺序写入,先进先出

                   3、支持流计算

     结构:kafka的数据单元由字节数组组成。消息由key+value构成,key可为空。如下图所示:

    消息模式: 数据格式json ,XML等

美团为什么偏爱kafka?_第1张图片

二、kafka的消息存储

    1、 kafka的消息存储的划分: 1)主题; 2)分区

美团为什么偏爱kafka?_第2张图片
(上面是根据个人的理解,不对的地方请指正)

      比如主题:消息可以根据美团电影票,外卖,团购,打车等主题进行分类分区;

      比如主题外卖:可以分为北京,深圳,上海,三个分区 

      然后每个分区可以放在不同服务器,所以吞吐量可以非常高,堆服务器轻轻松松到100万。

2、kafka的消息以Broker存储。

     1)一个独立的kafka服务器被称为broker

     2)多个broker组成一个集群

    3)多个broker,有一个当首领

   4)副本机制

    以下为一张kafka的经典集群图,来源网络。

美团为什么偏爱kafka?_第3张图片
其中生产者产生的消息只会给首领,同理,销售者也只会从首领消费消息。 如图:生产者产生消息0,发送给broker1的首领主题A的0分区上,首领会自动复制到broker2对应分区上。消费者同理。——(个人理解)

     三、kafka 与其它消息中间件比较

美团为什么偏爱kafka?_第4张图片
rabbitMQ可靠性高是因为有确认机制,kafka的可靠性是通过副本做确认的

        流计算的理解:

        比如:今年的天猫两小时定量单突破千万,应该是给予消息系统的实时统计,不可能从数据库层面统计。

        kafka的流计算:

美团为什么偏爱kafka?_第5张图片
每天消息都带有时间戳,通过SQL能实时统计出来订单量

        四、安装,配置

              略

        五、使用

        pom文件引用:

美团为什么偏爱kafka?_第6张图片

配置项:

美团为什么偏爱kafka?_第7张图片
最重要的两项:brokers 和 zk-nodes

生产者发送消息:

美团为什么偏爱kafka?_第8张图片

    消费者


美团为什么偏爱kafka?_第9张图片

你可能感兴趣的:(美团为什么偏爱kafka?)