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.apachecn.org/
《Kafka 权威指南》
Kafka 详解(一)------简介的更多相关文章
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)
执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...
- 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统
http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...
- Kafka详解一:Kafka简介
问题导读 1.Kafka有何特性?2.Kafka有哪些组件? 背景: 当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: ...
- [转]kafka详解
一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设 ...
- (转)kafka 详解
kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的 ...
- Kafka 详解(二)------集群搭建
这里通过 VMware ,我们安装了三台虚拟机,用来搭建 kafka集群,虚拟机网络地址如下: hostname ipaddress ...
- 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装
一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...
- kafka详解
一.基本概念 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafk ...
随机推荐
- LEMP平台全编译搭建
1.安装nginx1.13 1.1解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Librar ...
- [十一]基础数据类型之Character
Character与Unicode Character 基本数据类型char 的包装类 Character 类型的对象包含一个 char 类型的字段 该类提供了几种方法来确定字符的类别(小写字母 ...
- Java的几个基本类型之间的相互转换
前言: 转载申明: 作者:王蒙 链接:http://matt33.com/2015/10/27/TheTransformOfJava/ 之前在写java程序的时候,经常会遇到很多的需要需要转换基础数据 ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- 杭电ACM2013--蟠桃记
蟠桃记 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- 设计模式-建造者模式(Builder)
简介: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程创建出不同的表示. 结构图: 优点: 使得创建代码和表示代码分离,建造者隐藏了该产品是如何组装的,所以若需要改变一个产品内部的表示,只需 ...
- web中的——作者也不知道这里面写的啥
1.使用超链接<a href="/Default/Index">添加</a><a href="#">返回显示信息</a ...
- python之字符串反转
def main(): a = "abcdefg" a = a[::-1] print(a) if __name__ == '__main__': main()
- 用JS编写一个函数,返回数组中重复出现过的元素
用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...
- 23 , CSS 构造列表与导航
1. 列表图片 2. 背景列表 3. 翻转列表 4. 水平导航 1. 内边距与外边距 Ul { Margin: 0; Padding: 0; } 2. 使用图片作为列表图标 Ul { Margin: ...