Kafka的学习——消息队列和kafka简介

一、消息队列

1.1 消息队列理解

        消息队列,英文全称:Messsage Queue,简称MQ,是将数据从队列的一端进入,从另一端流出的过程。

1.2 消息队列使用场景

  •  引用耦合

        多应用通过消息队列对同一消息进行处理,避免调用接口失败,导致整个过程失败。

  • 异步处理

        多应用对消息队列中同一消息进行处理,并发处理,比串行效率更高。

        主要针对串行处理,比如一个业务:对于注册信息,需要有两个处理过程,发送注册邮件和发送注册短信通知,串行业务如下:                 并发处理,发送注册邮件和发送注册短信可以理解为两个消费者,同时订阅注册信息的写入队列,可以并发处理两个发送通知业务,流程如下:

  • 限流削峰

        广泛应用于秒杀或者抢购活动,避免流量过大导致应用挂掉的情况。

        对于秒杀和抢购业务,瞬间请求数量会很大,可以将请求先存储到消息队列,后端应用程序从消息队列中取消息处理。

        

  • 消息驱动的系统

        消息生产者生产消息,发送到消息队列,消费者订阅消息队列,有消息通知到,开始工作,处理队列中的消息。

        应用程序等待订阅的消息队列有消息进入队列,开始处理业务。

1.3 消息队列的两种方式

         点对点模式

        点对点模式下包括三个角色:

  • 消息队列
  • 发送者(生产者)
  • 接收者(消费者)

        消息发送者生产消息发送到queue中,消息接受者从queue中取出并且消费消息。消息被消费后,queue中不在存储消息。所以这种点对点模式有如下特点:

  • 每个消息只有一个接收者(Consumer),即一旦队列中的消息被消费,消息将不存在队列中。
  •  发送者和接收者之间没有依赖性
  • 接收者成功接收消息后,需要向队列应答成功,以便队列删除当前接收的消息。

        发布/订阅模式

        发布/订阅模式包括三个角色:

  • 角色主题(Topic)
  • 发布者(Publisher)
  • 订阅者(Subscriber)

        发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。发布/订阅模式特点:

  • 每个消息可以有多个订阅者
  • 发布者和订阅者之间有时间上的依赖。
  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线。

二、Kafka简介

         kafka的官方介绍,不多少,可以去看下官网。

2.1 kafka的特点

  • 可靠性:分布式、分区、复制和容错等
  • 可扩展性:kafka消息传递系统轻松缩放,无需停机
  • 耐用性:kafka使用分布式提交日志,意味着消息会尽可能快速的保存到磁盘,因此它是持久的。
  • 性能:高吞吐量

2.2 kafka适用场景

        kafka是一个分布式发布-订阅消息系统、一个强大的队列,可以处理大量的数据,适合离线和在线信息消费。kafka消息保存在磁盘上,并在集群内复制以防止数据丢失。kafka与flink和spark非常好的集成,应用于实时流数据分析

  • 指标分析

        kafka通常用作操作监控数据,设计聚合来自分布式应用程序的统计信息,产生操作的数据集中反馈。

  • 日志聚合解决方法

        kafka可以跨组织从多个服务器搜集日志

  • 流式处理

        流式的处理框架(spark、storm、flink)

2.3 kafka基本结构

Kafka的基础架构

  • Producer:消息生产者,向kafka发布消息的角色
  • Consumer:消息消费者,从kafka中拉取消息消费的客户端
  • Consumer Group:消费者组,组中可以存在多个消费者,消费者消费Broker中当前topic的不同分区中的消息,消费者组之间护不影响。所有消费者都属于某个消费者组,消费者组其实是一个订阅者,某个分区中的消息只能被消费组中的一个消费者消费。
  • Broker:经纪人,一台kafka服务器就是一个broker,一个kafka集群有多个broker,一个broker可以有多个topic。
  • Topic:主题,可以理解为一个队列,生产者和消费者都是面向一个topic。
  • Partition:分区,为了实现可扩展性,一个非常大的topic可以分布到多个broker上,一个topic可以分为多个Partition,每个Partition是有序队列,但不能保证全局有序。
  • Replica:副本,副本机制,保证在一个broker发生故障时,节点上Partition数据不丢失,一个Topic的每个分区有若干个副本,一个Leader和多个Follower.
  • Leader:每个分区多个副本的主角色,生产者发送数据的对象,以及消费者消费数据的对象都是Leader
  • Follower:每个分区多个副本的从角色,实时从Leader中同步数据,保持和Leader数据的同步,Leader发生故障时,某个Follower会成为新的Leader。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值