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 ...
随机推荐
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- angr初使用(1)
angr是早在几年前就出来了的一款很好用的工具,如今也出了docker,所以想直接安个docker来跑一跑. docker pull angr/angr .下载下来以后,进入docker ,这时并没有 ...
- Markdown 语法详尽笔记大全 2019
目录 0.介绍 1.快捷键 2.基本语法 2.1 分级标题 # 写法1 # 写法2 上下文标题 2.2 字体设置斜体.粗体.删除线 _*~ 2.3 分割线 --- 或 *** 2.4 引 ...
- React-router杂记
HashRouter: 即对应url中的hash值,如xx.com/#/a.xx.com/#/a/b, 服务器对任务url都返回同一个url,具体的路径由浏览器区分,因为浏览器不会发送hash后面的值 ...
- Vs Code 插件配置教程
1 Vs Code 下载地址:https://code.visualstudio.com/ 2 安装好Vs Code,点击启动,点击File-> Open Folder 打开项目 3 点击E ...
- MySQL 笔记整理(4) --深入浅出索引(上)
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 4) --深入浅出索引(上) 一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样. 索引的常见模型 哈希表: ...
- C# 爬虫----Cookies处理(Set-Cookie)
/// <summary> /// Cookie 助手 /// </summary> public class CookieHelper { /// <summary&g ...
- C# 跨进程 设置窗口owner
窗口间跨进程通信 1. 发送方 public const int WM_InsertChart_Completed = 0x00AA; //查找窗口 [DllImport("User32.d ...
- Java消息中间件----ActiveMQ入门①
一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...
- 总结Linux下的软件安装
安装软件的最佳实践 虽然我们知道Linux下安装软件有三种方式,分别是源代码安装,rpm包安装和yum安装,但是从可控性和结合自己目前的水平来说,优先选择以下两种方式安装程序. 1,使用rpm包安装 ...