大数据技术之 Kafka (第 1 章 Kafka 概述)

                                  第 1 章 Kafka 概述  

1.1 定义 

Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 

1.2 消息队列 

1.2.1 传统消息队列的应用场景 

MQ传统应用场景之异步处理

使用消息队列的好处 
1)解耦 
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 
2)可恢复性 
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。     

3)缓冲                                                                                                                                                                                            有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。 
4)灵活性 & 峰值处理能力 
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。 
5)异步通信 
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 

1.2.2 消息队列的两种模式 

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
 

(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息) 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。 

发布订阅:1,消息队列主动推送(消费者消费速度不一样,会造成有的资源浪费,有点处理不过来),2,主动拉取(维护着长轮询策略,如队列没有数据,也要取访问队列)

kafka又是基于发布订阅模式,主动拉取数据,维护着长轮询策略,缺点:如队列没有数据,也要取访问队列

1.3 Kafka 基础架构 

1)Producer :消息生产者,就是向 kafka broker 发消息的客户端; 
2)Consumer :消息消费者,向 kafka broker 取消息的客户端; 
3)Consumer Group (CG):消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。 
4)Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic。 
5)Topic :可以理解为一个队列,生产者和消费者面向的都是一个 topic; 
6)Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列; 
7)Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。 
8)leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。 
9)follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 leader。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

那些你无比崇拜的厉害人,是如何建构知识体系的

那些你无比崇拜的厉害人,是如何建构知识体系的? 2018-04-04 六合同风 文 | Lachel 高效思维达人,知识管理专家,深度思考践行者,领英、36氪特约作家 来源 | L先生说(ID:lxianshengmiao&#x…

大数据技术之 Kafka (第 2 章 Kafka快速入门)

第 2 章 Kafka 快速入门 下载安装kafka集群 1.需要jdk 2.需要zookeeper,这个东西在最新版的Kafka中内置。 3.下载Kafka安装包 (下载官网地址:Apache Kafka) 一,下载Kafka安装包 二,Kafka安装包上传li…

使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器

本文转载:http://www.cnblogs.com/lefay/archive/2010/07/25/1784919.html转载于:https://www.cnblogs.com/51net/archive/2012/04/21/2462431.html

文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法

文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法 原文链接 原创: 鲍捷 文因互联 前天 做成一件事儿不容易,而坑恒在。 鲍捷博士于5月10日在将门创投的线上 talk 中盘点了人工智能项目的大坑小坑,选出了看上去非常反常识的十…

启动kafka失败报内存不足(Cannot allocate memory)

原因分析,因为我的虚拟机内存一共才1G 查看一下我的虚拟机内存还剩余多少? 天呐,我的只有60M了 我们看下kafka的启动脚本 vim kafka-server-start.sh 看见下面的脚本文件内容没有,默认是1G,而我只有60M&#xff0…

Introduce Null Object(引入Null对象)

Introduce Null Object(引入Null对象)你需要再三检查某对象是否为null。将null值替换为null对象。if (customer null) plan BillingPlan.basic(); else plan customer.getPlan(); 动机多态的最根本好处在于:你不必再向对象询问"你是…

zookeeper Error contacting service. It is probably not running

通过命令zkServer.sh start之后,显示STARTED 通过client测试报错 无法连接 连接关闭 Connecting to localhost:2181 2020-03-29 12:44:31,855 [myid:] - INFO [main:Environment100] - Client environment:zookeeper.version3.4.13-2d71af4dbe22557fda74f9a9b430…

引言

推荐系统从0到1_引言什么是推荐?什么是推荐系统?推荐系统的应用什么是推荐? 说起推荐,就不得不说搜索。搜索这里指信息检索,在大量的信息中,我们需要找到自己需要的信息,就用到了搜索引擎&…

JNI的方式调用DLL(SO)(上)

最近有个项目要调用原有的DLL文件,本来准备使用JNA,可是客户不同意,非要使用JNI的方式。万般无奈之下,只能重新使用JNI,现将JAVA调用动态链接库的一般方法总结如下。 JNI是Java Native Interface(JAVA本地调…

搭建推荐系统所需要的材料

搭建推荐系统所需要的材料人力物力推荐系统的原材料物品流量最后人力物力 在上一小节中《推荐系统的必要性》里已经讨论过一个推荐业务团队需要哪些人员储备,需要什么核心技术等。这里在重点说下物力,即机器资源设备。 往往从头开始搭建这样一个团队&a…

kafka:topic为什么要进行分区?副本机制是如何做的?

kafka为什么要在topic里加入分区的概念?如果没有分区,topic中的segment消息写满后,直接给订阅者不是也可以吗? Kafka可以将主题划分为多个分区(Partition),会根据分区规则选择把消息存储到哪个分区中,只要如…

将某字符串切割成阵列并排序列出

老师布置的另外一道题是将字符串"a;b;d;z;y;u"切割成阵列并排序列出。老师出这题也许是让Insus.NET掌握或复习Array.Sort()函数,不管怎样,先按自己的想法实现,然后是等老师的意见。protected void Page_Load(object sender, EventA…

关于管理,这5大误区你越早知道越好

关于管理,这5大误区你越早知道越好 原创: 陈春花 管理的常识 绝大部分人都感觉自己已经非常努力地工作,但结果却不尽如人意,到底问题出在哪里? 就让北京大学国家发展研究院管理学教授、北大国发院BiMBA商学院院长陈春…

大数据技术之 Kafka (第 3 章 Kafka 架构深入 ) Log存储解析

Kafka 工作流程 Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log…

推荐系统整体框架概览

推荐系统整体框架概览推荐系统整体架构 推荐系统的核心组成部分离线核心节点服务UI总结推荐系统整体架构 先说点题外话,最近在看的书中讲到了怎么进行自学的方法,分了十个层级。第一个便是要了解所学内容的概况,也就是轮廓,大的东…

大数据技术之 Kafka (第 3 章 Kafka 架构深入 ) Kafka 生产者

3.2.1 分区策略 1)分区的原因 (1)方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了; &a…

MySQL定时备份实现

一、备份数据库 –all-databases 备份所有数据库 /opt/mysqlcopy/all_$(date “%Y-%m-%d %H:%M:%S”).sql 备份地址 docker exec -it 容器名称 sh -c "mysqldump -u root -ppassword --all-databases > /opt/mysqlcopy/all_$(date "%Y-%m-%d %H:%M:%S").sq…

程序员健身的重要性

程序员健身的重要性人的身体就是人的灵魂最好的写照! --- 路德维系.维特根斯坦 健身不仅是保持健康体魄的关键要素之一,也是灵活的、具有创造性的脑力活动的基础。 --- 约翰.肯尼迪 …

Java 8 中的哈希表

JDK 的代码是开源的,我们打开idea开发工具,引入jdk1.8 找到hashmap HashMap 是基于 HashTable 的一种数据结构,在普通哈希表的基础上,它支持多线程操作以及空的 key 和 value。 在 HashMap 中定义了几个常量: static final in…

NSJSONSerialization介绍

ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。详情见这里。既然apple为我们提供了这么良好的工具,我们没理由不用吧。 NSJSONSeriali…