kafka介绍及应用

Posted 鹰武部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka介绍及应用相关的知识,希望对你有一定的参考价值。

kafka是什么


Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

  • 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

  • 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。

  • 支持通过Kafka服务器和消费机集群来分区消息。

  • 支持Hadoop并行数据加载。



kafka应用场景


异步处理


场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式

  • 串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。

  • 并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间

  • kafka介绍及应用



假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。



因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100)。



小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢?



引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下:

kafka介绍及应用



应该解耦


场景说明:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。如下图:

kafka介绍及应用


传统模式的缺点:

1)  假如库存系统无法访问,则订单减库存将失败,从而导致订单失败;

2)  订单系统与库存系统耦合;

如何解决以上问题呢?引入应用消息队列后的方案,如下图:


kafka介绍及应用


  • 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。


  • 库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。

  • 假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。



日志处理


日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。架构简化如下:


  • 日志采集客户端,负责日志数据采集,定时写受写入Kafka队列;

  • Kafka消息队列,负责日志数据的接收,存储和转发;

  • 日志处理应用:订阅并消费kafka队列中的日志数据;


消息通讯


客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果。




kafka语术


  • Broker

        Kafka集群包含一个或多个服务器,这种服务器被称为broker[5]


  • Topic

        每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)


  • Partition

        Partition是物理上的概念,每个Topic包含一个或多个Partition.


  • Producer

        负责发布消息到Kafkabroker


  • Consumer

        消息消费者,向Kafkabroker读取消息的客户端。


  • Consumer Group

        每个Consumer属于一个特定的ConsumerGroup(可为每个Consumer指定groupname,若不指定groupname则属于默认的group)




使用kafka


以下使用nodejs作为例子介绍kafka的使用

使用kafka-node作为kafka的客户端


install

npm install kafka-node –save


以上是关于kafka介绍及应用的主要内容,如果未能解决你的问题,请参考以下文章

Kafka开发环境搭建及应用

Kafka架构及基本原理简析

一 Kafka介绍及常用命令行

kafka的安装部署及应用

kafka的安装部署及应用

《大数据流式计算介绍及应用》培训通知