Kafka简介

1. Kafka简介

1.1 开发中遇到的问题

  • 非必要的业务逻辑以同步(串行)的方式运行,太耗费时间

请添加图片描述

  • 系统间耦合性太强

请添加图片描述

  • 流量激增导致宕机

请添加图片描述

1.2 消息队列Message Queue

1.2.1 消息队列是什么

消息队列,即MQ,Message Queue。

不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;

不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了事实上的消息队列;

消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

结合前面所说的问题:

  • 注册服务对保存注册信息以后,无需去发送邮件、短信,只是发送一条消息,不用关心消息被谁接收。
  • 邮件、短信服务接收消息,去处理各自的业务。
  • 如果以后有其它系统(如日志系统)也依赖注册服务的数据,同样监听消息即可,注册服务无需任何代码修改。

1.2.2 消息队列的作用

请添加图片描述

异步处理

用户注册后,需要发注册邮件和注册短信。传统的串行方式会等所有业务执行完成后再返回结果。并行方式将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信,可以加快响应速度。

应用解耦

利用消息队列存储消息,需要消费消息的系统只需要订阅消息队列即可,有新的业务加入时无需修改原本的代码。

流量削锋

高并发请求同时对数据库执行写操作,可能会导致数据库卡死导致宕机。将请求消息保存到消息队列,系统可以按照自己的能力来消费消息。

1.2.3 消息队列主流产品概述

1、Apache Kafka:

Apache Kafka是一个分布式流处理平台,具有高吞吐量、低延迟和可靠性等特点。它广泛应用于实时数据处理、日志收集、消息队列等场景。

2、基于JMS的产品:

​ JMS: Java Message Service API(Java消息服务)只能在java中使用

  • Apache ActiveMQ:比较成熟的产品
  • RocketMQ:阿里巴巴产品,目前交由Apache基金会

3、基于AMQP的产品

​ AMQP:Advanced Message Queuing Protocol(高级消息队列协议) 基于协议的,可以跨语言使用

  • RabbitMQ:erlang语言开发,稳定性好,响应快。

主流消息队列对比表:

特性ActiveMQRabbitMQRocketMQKafka
开发语言javaerlangjavascala
单机吞吐量万级万级10万级100万级
时效性msusmsms级以内
可用性高(主从)高(主从)非常高(分布式)非常高(分布式)
功能特性成熟的产品、较全的文档、各种协议支持好并发能力强、性能好、延迟低,社区活跃度高,数据量没有那么大,优先选择功能比较完备的RabbitMQMQ功能比较完善,扩展性佳,可靠性要求高的金融互联网领域使用多,稳定性高,经历了多次阿里双11考验只支持主要的MQ功能,大数据领域使用多,追求高吞吐量,适合产生大量数据的互联网服务的数据收集业务

1.2.4 消息分类

请添加图片描述

推消息模型(Push)

消息生产者将消息发送给消息服务器后,消息服务器主动地将消息“推送”给消费者。

拉消息模型(Pull)

消息生产者将消息发送给消息服务器后,由消息消费者主动从消息服务器中拉取该消息。

Long-Polling

Long-Polling是Pull模式的变种。Pull模型中不管服务端数据有无更新,客户端每隔定长时间拉取一次数据,可能有更新数据返回,也可能什么都没有。Long Polling是指客户端发起Long Polling,此时如果服务端没有消息,会hold住请求,直到服务端有可消费的消息,或者到达超时时间才会返回请求。返回后,客户端又会立即再次发起下一次Long Polling。这种方式解决了Pull模式数据通知不及时的问题,且减少了大量的无效轮询次数。

1.3 Kafka起源和特点

1.3.1 Kafka是什么

Kafka是Apache开源的一款基于zookeeper协调的分布式消息系统,具有高吞吐率、高性能、实时、高可靠等特点,可实时处理流式数据。它最初由LinkedIn公司开发,使用Scala语言编写。

Kafka历经数年的发展,从最初纯粹的消息引擎,到近几年开始在流处理平台生态圈发力,多个组织或公司发布了各种不同特性的产品。常见产品如下:

  • Apache Kafka :最“正统”的Kafka也是开源版,它是后面其他所有发行版的基础
  • Cloudera/Hortonworks Kafka :集成了目前主流的大数据框架,能够帮助用户实现从分布式存储、集群调度、流处理到机器学习、实时数据库等全方位的数据处理。
  • Confluent Kafka :主要提供基于Kafka的企业级流处理解决方案。

Apache Kafka,它现在依然是开发人数最多、版本迭代速度最快的Kafka。我们使用此产品学习。Apache 目前为止总共演进了8个大版本,分别是0.7、0.8、0.9、0.11、1.0、2.0和3.0,我们选择3.6.0版本讲解。

1.3.2 Kafka能干嘛

Kafka特点

  • 高吞吐量、低延迟:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息,它的延迟最低只有几毫秒

  • 持久性:支持消息持久化,即使数TB级别的消息也能够保持长时间的稳定性能。

  • 可靠性:支持数据备份防止丢失

  • 容错性:支持通过Kafka服务器和消费机集群来分区消息,允许集群中的节点失败(若分区副本数量为n,则允许n-1个节点失败)

  • 高并发:单机可支持数千个客户端同时读写,支持在线水平扩展。可无缝对接hadoop、strom、spark等,支持Hadoop并行数据加载,

1.3.3 Kafka去哪下

kafka官网https://kafka.apache.org/
kafka下载https://kafka.apache.org/downloads

1.3.4 Kafka怎么玩

ID设计目标功能
1日志收集一个公司可以用Kafka可以收集各种服务的Log,通过Kafka以统一接口服务的方式开放给各种Consumer
2消息系统解耦生产者和消费者、缓存消息等
3用户活动跟踪用来记录web用户或者APP用户的各种活动,如网页搜索、搜索、点击,用户数据收集然后进行用户行为分析。
4运营指标Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告
5流式处理比如Spark Streaming和Storm
  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值