zoukankan      html  css  js  c++  java
  • Kafka基本介绍

    一、背景

    1、Why Kafka

    以ActiveMQ为例,和Kafka同属于Apache,发展前景都十分被看好。但两种的设计目标却各有侧重。ActiveMQ可以支持多种协议、事务等,但在吞吐量上,他的Forwarding Bridge机制一直被很多人吐槽。但Kafka侧重点在大数据、分布式应用,他可以支持动态扩容(通过zk)。

    Kafka是为分布式而生的,他主要来应对庞大的活动流数据。因此,强大的吞吐量是更重要的,为此,砍掉了很多复杂特性:如事务、分发策略等。

    2、是什么

    Kafka是一个高吞吐量的分布式发布订阅消息系统,也可以叫做分布式消息中间件。

    这里写图片描述


    二、相关概念

    1、AMQP

    Advanced Message Queuing Protocol 高级消息协议,是一种应用层协议的开放标准。

    作为一种协议,他提供的是一种标准、规范或者叫模型。为的是提供一种全行业广泛使用的标准中间件技术,来降低企业应用的开销。

    2、Topic & Partition

    Topic可以看作消息的分类,我们可以将一类业务划分为一个Topic。每个Topic中由一个或多个Partition。Partition是最小单位,类似一个FIFO队列。

    如图:每个broker类似一个Server。

    这里写图片描述

    3、Consumer Group

    传统的消息中间件至少提供两种消息模型:点对点、发布订阅模型。但Kafka提出了消费者组的概念,来实现这两种模型。

    规则是:一个消息可以被多个消费者消费,但只能被一个消费者组里的一个消费者消费。

    听起来有点绕,直接上图。比如Server1中的P0消息,他可以被C1、C3消费,因为他们分属不同的Consumer Group。其他的消息也是如此。

    在同一个Consumer Group中,Kafka实现了点对点模型。
    在不同的Group中,又实现了发布订阅模型。

    这里写图片描述

    三、特性

    1、push vs pull

    在消息系统中,发送消息的方式主要有push和pull两种。push是指直接将消息推送到用户,pull正好相反,需要消费者自己获取。

    pull方法,消费者比较麻烦,需要自己拿,通常会定时拉取,可能消息推送不及时。push方法对于消费者(用户)来说,就便利很多了,他不需要你实时关注变化。

    2、Replication

    Kafka的副本设计是一大亮点,目的是为了保持更强的持久性和高可用性。自动的副本管理可以保证即使在某台服务器发生故障后,也不会造成数据丢失和服务不可用。

  • 相关阅读:
    PHP脚本如何正确启用sg11安全组件?
    android修改系统时系统黑屏时不进入休眠状态
    计算机自考视频汇总【福利资料】[转]
    解决MySql报错:1130
    “领导想提拔你,看的从不是努力
    interTbale ___AlterTable
    MySQL数据库管理系统概述
    《分布式任务调度平台XXL-JOB》
    mysql 在线文档
    Oracle19c 数据库在线文档
  • 原文地址:https://www.cnblogs.com/saixing/p/6730203.html
Copyright © 2011-2022 走看看