【赵渝强老师】Kafka的体系架构
一、什么是Kafka?
数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输和分析其他数据。有两种消息排队,对于上述目的,它们都是可靠的和异步的。点对点(Point to point)和发布者——订阅者(publisher-subscriber)。下图展示了一个典型的消息系统,其中:消息的生产者负责产生消息;消息的消费者负责处理消息。
Kafka是一个分布式发布——订阅消息传递系统。Kafka快速、可扩展且耐用。它保留主题中的消息源。生产者将数据写入主题,消费者从主题中读取数据。
Zookeeper需要覆盖Kafka生态系统,因此有必要下载它,更改其属性并最终设置环境。在运行Zookeeper之后,应该下载Kafka,然后开发人员可以借助一些指令创建代理,集群和主题。
二、消息队列的分类
- 点对点(Queue)
在点对点或一对一中,有一个发件人和正在监听发件人的多个消费者。当一个消费者从队列收到消息时,该特定消息将从队列中消失,而其他消费者无法获得该消息。
- 发布和订阅系统(Topic)
在发布者——订阅者中,发布者向同时收听发布者的多个消费者或订阅者发送消息,并且每个订阅者可以获得相同的消息。数据应通过数据管道传输,数据管道负责整合来自数据源的数据。
三、Kafka的体系架构
- 主题和发布者
有一个发布者发送消息。消息根据主题进行分类,每个主题都有一个或多个分区,并有自己的偏移地址。例如,如果我们为一个主题分配复制因子= 2,那么Kafka将为每个分区创建两个相同的副本并在群集中找到它。
- 集群和Brokers
Kafka集群包括代理——服务器或节点,每个代理可以位于不同的机器中,并允许订户选择消息。因此,复制就像备份分区一样,这意味着Kafka是持久的,这有助于容错。
- Zookeeper
Kafka集群不保留其自身生态系统的元数据,因为它是无状态的。因此,Kafka依赖于Zookeeper来跟踪元数据。Zookeeper应该首先启动。实际上,Zookeeper是brokers和consumers之间的接口,它的存在是容错的必要条件。Kafka代理负责负载平衡,假设该主题有一个主题和多个分区,每个分区都有一个领导者,定期确认其与Zookeeper的偏移量。因此,如果一个节点或代理失败,Kafka可以从Zookeeper请求的最后一个偏移地址继续操作,因此Zookeeper在崩溃情况下在Kafka恢复中起着至关重要的作用。
四、Kafka单机单Broker的部署
- 部署ZooKeeper
配置/root/training/zookeeper-3.4.6/conf/zoo.cfg文件
dataDir=/root/training/zookeeper-3.4.6/tmp
server.1=hadoop112:2888:3888 在/root/training/zookeeper-3.4.6/tmp目录下创建一个myid的空文件
echo 1 > /root/training/zookeeper-3.4.6/tmp/myid 启动ZooKeeper
zkServer.sh start 查看ZooKeeper的状态
zkServer.sh status
由于我们部署的是单节点的ZooKeeper,所以ZooKeeper的状态将是Standalone。
- 部署Kafka
修改server.conf文件
broker.id=0
port=9092
log.dirs=/root/training/kafka_2.11-2.4.0/logs/broker0
zookeeper.connect=localhost:2181 启动Kafka
bin/kafka-server-start.sh config/server.properties &
- 使用JPS查看后台进程
五、测试Kafka
创建Topic
bin/kafka-topics.sh --create --zookeeper bigdata111:2181 --replication-factor 1 --partitions 3 --topic mytopic1 发送消息
bin/kafka-console-producer.sh --broker-list bigdata111:9092 --topic mytopic1 接收消息
消息消费
bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --topic mytopic1 从开始位置消费
bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --from-beginning --topic topicName 显示key消费
bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --property print.key=true --topic mytopic1
【赵渝强老师】Kafka的体系架构的更多相关文章
- Kafka主题体系架构-复制、故障转移和并行处理
本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理. Kafka主题,日志和分区 Kafka将主题存储在日志中.主题日志分为多个分区.Kafka将日志的分区分布在多个服务器或磁 ...
- Kafka体系架构详细分解
我的个人博客排版更舒服: https://www.luozhiyun.com/archives/260 基本概念 Kafka 体系架构 Kafka 体系架构包括若干 Producer.若干 Broke ...
- Kafka体系架构、命令、Go案例
原文地址:https://github.com/WilburXu/blog/blob/master/kafka/Kafka基本架构和命令.md Kafka体系架构 Broker服务代理节点 服务代理节 ...
- 《BI那点儿事》SQL Server 2008体系架构
Microsoft SQL Server是一个提供了联机事务处理.数据仓库.电子商务应用的数据库和数据分析的平台.体系架构是描述系统组成要素和要素之间关系的方式.Microsoft SQL Serve ...
- SaaS系列介绍之十三: SaaS系统体系架构
1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...
- SOA——面向服务的体系架构
上一篇博文中提到了"紧耦合"的现象.怎样解决?SOA.採用面向服务的体系架构. 一.What? SOA=Service-oriented Architecture面向服务的体系结构 ...
- kafka原理和架构
转载自: https://blog.csdn.net/lp284558195/article/details/80297208 参考: https://blog.csdn.net/qq_2059 ...
- InnoDB体系架构
MySQL支持插件式存储引擎,常用的存储引擎则是MyISAM和InnoDB,通常在OLTP(Online Transaction Processing 在线事务处理)中,我们选择使用InnoDB,所以 ...
- UBer面向领域的微服务体系架构实践
介绍 最近,人们对面向服务的系统架构和微服务系统架构的缺点进行了大量的讨论.尽管仅仅在几年前,由于微服务体系架构提供了许多好处,如独立部署的灵活性.明确的所有权.提高系统稳定性以及更好地分离关注点等, ...
- 2020再见&新的计划(建立Android体系架构)
2020,再见 关于2020,我心中有四个关键词: 疫情 年初突如其来的疫情,打破了原本生活的节奏,也没想到会笼罩全世界整整一年,希望这个世界早点好起来吧. 科比 初三的早晨,噩耗传来,我一度不敢相信 ...
随机推荐
- Django 实现文件上传下载API
Django 实现文件上传下载API by:授客 QQ:1033553122 欢迎加入全国软件测试交流QQ群7156436 开发环境 Win 10 Python 3.5.4 Django- ...
- 搭建lnmp环境-nginx关联php-fpm (第三步)
永久关闭防火墙sudo systemctl stop firewalldsudo systemctl disable firewall 有两个防火墙!如果上面那个关闭还不行,就继续关这个后重启. ...
- php使用jwt作登录验证
JWT官网 https://jwt.io/ 选择第一个 composer require firebase/php-jwt use Firebase\JWT\ExpiredException;use ...
- 矩阵的奇异值分解(SVD)及其应用
奇异值分解(Singular Value Decomposition, SVD)是矩阵的一种分解方法,与特征值分解不同,它可以应用于长方矩阵中,并将其分解成三个特殊矩阵的乘积.此外SVD分解还具有许多 ...
- java一些位运算的方法
记录一些java位运算的方法 Integer.bitCount:用于记录一个int输转化成二进制之后里面包含了多少个1. 使用例题为leetcode2859 切记下面规则要先转二进制 &相同位 ...
- XCode 编译 PAG 源码
最近工作中要使用PAG替换Lottie,为了方便阅读源码,使用XCode对其源码进行了编译. 1 下载源码 编译源码首先要下载源码,有关PAG源码可直接到github上下载. 2 添加相关依赖 下载源 ...
- RPC接口测试(六)RPC协议解析(重要!重要!重要!)
RPC协议解析 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.简言之,RPC使得程 ...
- Jmeter函数助手8-counter
counter函数用于线程计数,类似计数器. TRUE每个用户有自己的计数器:FALSE使用全局计数器:即线程之间是否需要共享累加计数器,TRUE否,FALSE是 存储结果的变量名(可选) 1.线程之 ...
- 【Git】Gitlab仓库访问拒绝,SSL校验影响
更新代码失败,不可访问[XX]仓库 fatal: unable to access 'https://gitcyx.yycsy.com/dmscloud/dcs/dcs-vue-coordinate. ...
- 【Vue】Re21 VueX 第二部分(Mutations)
一.Mutations携带参数处理 Store状态的更新唯一方式:提交Mutations Mutations包含两部分: 1.字符串的事件类型[TYPE] 2.一个回调函数[HANDLER] 该函数的 ...