Kafka的设计⽬标及核⼼的概念

目录

一、消息队列

 二、消息队列的分类

三、p2p和发布订阅MQ的⽐较

 四、消息系统的使⽤场景

 五、常⻅的消息系统

 六、Kafka概述

 七、设计⽬标

八、kafka核⼼的概念


一、消息队列

为什么要⽤消息队列?

  • 消息 Message 
            ⽹络中的两台计算机或者两个通讯设备之间传递的数据。例如说:⽂本、⾳乐、视频等内容。
  • 队列 Queue
            ⼀种特殊的线性表(数据元素⾸尾相接),特殊之处在于只允许在⾸部删除元素和在尾部追加元素(FIFO)

     ⼊队、出队。
  • 消息队列 MQ
           消息+
    队列,保存消息的队列。消息的传输过程中的容器;主要提供⽣产、消费接⼝供外部调⽤做数据的存 储和获取

 二、消息队列的分类

MQ主要分为两类:点对点(p2p)、发布订阅(Publish/Subscribe)

  • Peer-to-Peer
     
            ⼀般基于Pull 或者 Polling 接收数据
             发送到队列中的消息被⼀个⽽且仅仅⼀个接收者所接受,即使有多个接收者在同⼀个队列中侦听同⼀消息 即⽀持异步“即发即收”的消息传递⽅式,也⽀持同步请求 / 应答传送⽅式

  •  发布订阅
    发布到同⼀个主题的消息,可被多个订阅者所接收
    发布 / 订阅即可基于 Push 消费数据,也可基于 Pull 或者 Polling 消费数据
    解耦能⼒⽐ P2P 模型更强

    三、p2p和发布订阅MQ的⽐较

  • 共同点:
           消息⽣产者⽣产消息发送到
    queue中,然后消息消费者从queue中读取并且消费消息。
  • 不同点:
     
            p2p模型包括:消息队列 (Queue) 、发送者 (Sender) 、接收者 (Receiver)
            ⼀个⽣产者⽣产的消息只有⼀个消费者(Consumer)( 即⼀旦被消费,消息就不在消息队列中 ) 。⽐如说打电 话。
    pub/Sub 包含:消息队列 (Queue) 、主题 (Topic) 、发布者 (Publisher) 、订阅者 (Subscriber)
    每个消息可以有多个消费者,彼此互不影响。⽐如我发布⼀个微博:关注我的⼈都能够看到。

 四、消息系统的使⽤场景

  • 解耦 各系统之间通过消息系统这个统⼀的接⼝交换数据,⽆须了解彼此的存在
  • 冗余 部分消息系统具有消息持久化能⼒,可规避消息处理前丢失的⻛险
  • 扩展 消息系统是统⼀的数据接⼝,各系统可独⽴扩展
  • 峰值处理能⼒ 消息系统可顶住峰值流量,业务系统可根据处理能⼒从消息系统中获取并处理对应量的请求
  • 可恢复性 系统中部分键失效并不会影响整个系统,它恢复会仍然可从消息系统中获取并处理数据
  • 异步通信 在不需要⽴即处理请求的场景下,可以将请求放⼊消息系统,合适的时候再处理

 五、常⻅的消息系统

  • RabbitMQ Erlang编写,⽀持多协议AMQPXMPPSMTPSTOMP。⽀持负载均衡、数据持久化。同时⽀
  • Peer-to-Peer和发布/订阅模式。
  • Redis 基于Key-Value对的NoSQL数据库,同时⽀持MQ功能,可做轻量级队列服务使⽤。就⼊队操作⽽⾔,
  • Redis对短消息(⼩于10kb)的性能⽐RabbitMQ好,⻓消息性能⽐RabbitMQ差。
  • ZeroMQ 轻量级,不需要单独的消息服务器或中间件,应⽤程序本身扮演该⻆⾊,Peer-to-Peer。它实质上是
  • ⼀个库,需要开发⼈员⾃⼰组合多种技术,使⽤复杂度⾼。
  • ActiveMQ JMS实现,Peer-to-Peer,⽀持持久化、XA(分布式)事务
  • Kafka/Jafka ⾼性能跨语⾔的分布式发布/订阅消息系统,数据持久化,全分布式,同时⽀持在线和离线处理
  • MetaQ/RocketMQ Java实现,发布/订阅消息系统,⽀持本地事务和XA分布式事务

 六、Kafka概述

        Kafka是分布式的发布 订阅消息系统。它最初由 LinkedIn( 领英 ) 公司发布,使⽤ Scala 语⾔编写,于 2010 12 ⽉份开源,成为Apache 的顶级项⽬。 Kafka 是⼀个⾼吞吐量的、持久性的、分布式发布订阅消息系统。它主要⽤于处理活跃live 的数据 ( 登录、浏览、点击、分享、喜欢等⽤户⾏为产⽣的数据 )

 三⼤特点:

  • ⾼吞吐量
            可以满⾜每秒百万级别消息的⽣产和消费——⽣产消费。
  • 持久性
            有⼀套完善的消息存储机制,确保数据的⾼效安全的持久化——中间存储。
  • 分布式
           基于分布式的扩展和容错机制;Kafka的数据都会复制到⼏台服务器上。当某⼀台故障失效时,⽣产者和消费者转⽽使⽤其它的机器——整体

 七、设计⽬标

  • ⾼吞吐率   在廉价的商⽤机器上单机可⽀持每秒100万条消息的读写
  • 消息持久化 所有消息均被持久化到磁盘,⽆消息丢失,⽀持消息重放
  • 完全分布式 ProducerBrokerConsumer均⽀持⽔平扩展
  • 同时适应在线流处理离线批处理

八、kafka核⼼的概念

        ⼀个MQ 需要哪些部分?⽣产、消费、消息类别、存储等等。
        对于kafka ⽽⾔, kafka 服务就像是⼀个⼤的⽔池。不断的⽣产、存储、消费着各种类别的消息。那么 kafka 由何组成呢?
 Kafka服务
        
  • Topic:主题,Kafka处理的消息的不同分类。
  • Broker:消息服务器代理,Kafka集群中的⼀个kafka服务节点称为⼀个broker,主要存储消息数据。存在硬盘中。每个topic都是有分区的。
  • PartitionTopic物理上的分组,⼀个topicbroker中被分为1个或者多个partition,分区在创建topic的时候指定。
  • Message:消息,是通信的基本单位,每个消息都属于⼀个partition

Kafka服务相关:

  • Producer:消息和数据的⽣产者,向Kafka的⼀个topic发布消息。
  • Consumer:消息和数据的消费者,定于topic并处理其发布的消息。
  • Zookeeper:协调kafka的正常运⾏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值