Kafka 详解(一)------简介

  在前面几篇博客我们介绍过一种消息中间件——RabbitMQ,本篇博客我们介绍另外一个消息中间件——Kafka,Kafka是由LinkedIn开发的,使用Scala编写,是一种分布式,基于发布/订阅的消息系统,在介绍 kafka 之前,我们首先需要知道为什么会诞生 kafka 。

1、kafka的诞生

  假设 A 公司有一个购物网站,随着业务的扩大,网站的访问量越来越大,为了维持网站的运营,部署系统的服务器也越来越多,A 公司的运维人员为了更好的维护系统,不得不经常查看日志,但是问题来了,业务规模的增大,日志也越来越多,总是到服务器上查看日志,总归是不方便的,并且不光是运维人员,开发人员在解决问题时也需要查看日志,那么有没有一个专门的平台来收集日志呢?然后大家都通过此平台查看日志,进而分析日志。于是便构建了一个日志分析平台。

  ①、日志分析平台

  

  通过此平台,大家都能利用该平台收集到的日志进行相应的后续操作了。但是新的需求又来了,为了更好的提高用户的体验度,增加用户对网站的黏性,需要收集用户对页面的浏览、搜索等行为,然后根据这些信息给用户推送精准的商品信息,于是,便又构建了一个用户行为跟踪平台。

  ②、用户行为跟踪平台

  

  以上只是两个业务需求场景,后续如果还有新的业务需求,还会构建类似这样的系统,当系统增多以后,会发现公司维护这些系统都得花费很大的精力,而且我们总结一下,类似这样的系统,我们抽象一下,无非就是下图的场景:

  

  我们把各种模块产生的数据都收集起来放到一个平台中,然后相应的人员去该平台获取相应的数据即可,该平台可以用来收集通用类型的数据,规模可以随着公司的业务增长而增长。

  kafka 便是为了解决上述问题而设计的一款基于发布与订阅的消息系统。

2、Kafka的体系架构

  

  ①、Kafka Broker : 一个独立的kafka 服务器便是一个 Broker,多个 Broker 组成一个集群,Broker 接收来自生产者 Producer 的消息,为消费者 Consumer 提供服务。

  ②、Producer:消息生产者,向 Broker 提供消息。

  ③、Consumer:消息消费者,从 Broker 读取消息。

  ④、Zookeeper:为集群分布式一致性提供服务,以及在早期kafka版本保存消息相关元数据。

  后面会对这四个模块进行详细介绍,这里大家先了解一下。

3、Kafka的优势

  前面我们就介绍过一个消息队列RabbitMQ,在这个家族中还有诸如 ActiveMQ,ZeroMQ,甚至Redis等,那么我们为什么要选择 Kafka呢?

  ①、多个生产者

  kafka可以无缝的支持多个生产者,也就是它适合从多个消息生产系统收集数据,比如同时从前端系统,后端系统,数据库,服务器等收集数据,并以统一的格式对外提供数据,数据消费者根据订阅的消息队列获取相应的数据。

  ②、多个消费者

  除了支持多个生产者,kafka 也支持多个消费者,而且消费者之间互不影响,这与别的消息系统不同,别的消息系统消息一旦被一个消费者消费掉之后,别的消费者是无法在获取的。

  ③、消息持久化

  kafka 中的消息可以根据设置保存到磁盘中,消费者由于处理速度慢或者流量高峰等无法及时处理消息,那么持久化数据可以保证数据不会丢失,以备消费者接着读取。

  ④、伸缩性

  kafka 作为一个分布式消息系统,对在线集群做横向扩展丝毫不影响整体系统的可用性。

  ⑤、高性能

  上面的一些特性,使得 kafka 成为了一个高性能的发布与订阅消息系统,通过横向扩展消费者、生产者和 broker,kafka 可以轻松处理巨大流量的消息流,并且在处理大量数据的同时,还能保证亚秒级的消息延迟。

参考文档:

  官网:http://kafka.apache.org

  官网中文翻译:http://kafka.apachecn.org/

  《Kafka 权威指南》

  

原文地址:https://www.cnblogs.com/ysocean/p/9866983.html

时间: 2024-09-29 05:48:03

Kafka 详解(一)------简介的相关文章

kafka详解一、Kafka简介

背景: 当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统. 从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息. Kafka诞生:由 linked-in 开源 kafka-

Kafka详解之二、如何配置Kafka集群

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群 单节点:多个broker的集群 多节点:多broker集群 一.单节点单broker实例的配置 1.首先启动zookeeper服务 Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到): [[email protect

Kafka详解五、Kafka Consumer的底层API- SimpleConsumer

Kafka提供了两套API给Consumer The high-level Consumer API The SimpleConsumer API 第一种高度抽象的Consumer API,它使用起来简单.方便,但是对于某些特殊的需求我们可能要用到第二种更底层的API,那么先介绍下第二种API能够帮助我们做哪些事情 一个消息读取多次 在一个处理过程中只消费Partition其中的一部分消息 添加事务管理机制以保证消息被处理且仅被处理一次 使用SimpleConsumer有哪些弊端呢? 必须在程序

Kafka 详解(二)------集群搭建

这里通过 VMware ,我们安装了三台虚拟机,用来搭建 kafka集群,虚拟机网络地址如下: hostname                      ipaddress                subnet mask                          geteway 1. master 192.168.146.200 255.255.255.0 192.168.146.2 2. slave1 192.168.146.201 255.255.255.0 192.168.

ITEXT 使用详解-01 简介与安装

1pdf简介 2为什么使用itext 现在网页大多提供下载,自动生成pdf 表单的功能. itext 这个api 很好的解决对pdf处理的难题. 简化了对pdf的处理. itext 就是一个用于创建,修改,生成pdf的一个JAVA 组件.可以通过这个itext jar 用于显示报表,修改pdf 内容,通过java 代码自动填充报表等一系列功能. 3 安装 1,首先下载这个itext jar 文件.下载链接如下 http://sourceforge.net/projects/itext/files

Kafka详解

实际上kafka对机器的需求与Hadoop的类似. 原来,对于Linkin这样的互联网企业来说,用户和网站上产生的数据有三种: 需要实时响应的交易数据,用户提交一个表单,输入一段内容,这种数据最后是存放在关系数据库(Oracle, MySQL)中的,有些需要事务支持. 活动流数据,准实时的,例如页面访问量.用户行为.搜索情况,这些数据可以产生啥?广播.排序.个性化推荐.运营监控等.这种数据一般是前端服务器先写文件,然后通过批量的方式把文件倒到Hadoop这种大数据分析器里面慢慢整. 各个层面程序

大数据入门第十七天——storm上游数据源 之kafka详解(一)入门

一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro 的解释呢,是这样的: Apache Kafka® is a distributed streaming platform ApacheKafka®是一个分布式流媒体平台 l Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开发的一个开源消息系统项目. l K

大数据入门第十七天——storm上游数据源 之kafka详解(二)常用命令

一.kafka常用命令 1.创建topic bin/kafka-topics.sh --create --topic topic_1 --partitions 4 --replication-factor 2 --zookeeper mini1:2181 // 如果配置了PATH可以省略相关命令路径,相关命令参数暂不深入,字面意思也可以大概推断.后续给出完整参数参考. 2.查看所有topic bin/kafka-topics.sh --list --zookeeper mini1:2181 3.

Kafka 详解(三)------Producer生产者

在第一篇博客我们了解到一个kafka系统,通常是生产者Producer 将消息发送到 Broker,然后消费者 Consumer 去 Broker 获取,那么本篇博客我们来介绍什么是生产者Producer. 1.生产者概览 我们知道一个系统在运行过程中会有很多消息产生,比如前面说的对于一个购物网站,通常会记录用户的活动,网站的运行度量指标以及一些日志消息等等,那么产生这些消息的组件我们都可以称为生产者. 而对于生产者产生的消息重要程度又有不同,是否都很重要不允许丢失,是否允许丢失一部分?以及是否