kafka 架构_业务架构和系统架构

kafka 架构_业务架构和系统架构一、什么是Kafka? 数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输

【赵强老师】Kafka的体系架构

kafka 架构_业务架构和系统架构

一、什么是Kafka?

数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输和分析其他数据。有两种消息排队,对于上述目的,它们都是可靠的和异步的。点对点(Point to point)和发布者——订阅者(publisher-subscriber)。下图展示了一个典型的消息系统,其中:消息的生产者负责产生消息;消息的消费者负责处理消息。

kafka 架构_业务架构和系统架构

Kafka是一个分布式发布——订阅消息传递系统。Kafka快速、可扩展且耐用。它保留主题中的消息源。生产者将数据写入主题,消费者从主题中读取数据。
Zookeeper需要覆盖Kafka生态系统,因此有必要下载它,更改其属性并最终设置环境。在运行Zookeeper之后,应该下载Kafka,然后开发人员可以借助一些指令创建代理,集群和主题。

二、消息队列的分类

  • 点对点(Queue)

在点对点或一对一中,有一个发件人和正在监听发件人的多个消费者。当一个消费者从队列收到消息时,该特定消息将从队列中消失,而其他消费者无法获得该消息。

  • 发布和订阅系统(Topic)

在发布者——订阅者中,发布者向同时收听发布者的多个消费者或订阅者发送消息,并且每个订阅者可以获得相同的消息。数据应通过数据管道传输,数据管道负责整合来自数据源的数据。

三、Kafka的体系架构

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

代码100分

 

由于我们部署的是单节点的ZooKeeper,所以ZooKeeper的状态将是Standalone。

  • 部署Kafka
代码100分修改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 架构_业务架构和系统架构

五、测试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 架构_业务架构和系统架构

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8263.html

(0)
上一篇 2023-03-04
下一篇 2023-03-04

相关推荐

  • 使用正则表达式提高文本处理效率

    使用正则表达式提高文本处理效率文本处理是我们在开发中非常常见的一个问题,不论是从文本中提取信息、替换特定字符或者格式化文本,都需要我们耗费大量时间和精力。但是,使用正则表达式可以帮助我们快速、准确地完成这些操作,提高我们的文本处理效率。本文从多个方面介绍正则表达式在文本处理中的使用方法和技巧,以期帮助读者更好地利用正则表达式提高自己的文本处理能力。

    2024-02-18
    43
  • Python开发人员必知:如何操作索引列表

    Python开发人员必知:如何操作索引列表列表是Python中最常用的数据结构之一,可能是因为我们在编程过程中必须经常处理列表数据,比如操作列表的索引。在这篇文章中,我们将学习如何操作索引列表。

    2024-03-13
    29
  • MySQL学习笔记(1):安装[亲测有效]

    MySQL学习笔记(1):安装[亲测有效]本文更新于2020-05-04。 安装 在Windows下可以采用noinstall包或图形化安装,在Linux下可以采用apt-get/dpkg、yum/rpm、二进制包、源码包安装。 使用apt-

    2023-03-12
    119
  • Redis学习笔记:基础知识

    Redis学习笔记:基础知识一、NoSQL和关系型数据库区别 NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操作。 关系型数据库:Oracle、MySQL、DB2、SQL

    2023-02-01
    111
  • sql server事务是什么_spring的事务管理

    sql server事务是什么_spring的事务管理SQL Server 中的事务是什么? 事务是应该作为一个单元执行的一组 SQL 语句。这意味着事务确保所有命令都成功或都不成功。如果事务中的命令之一失败,则所有命令都失败,并且在数据库中修改的任何数

    2023-05-26
    95
  • 【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

    【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]导语: MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司、游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求…

    2023-03-30
    113
  • 字符串相似度处理函数[亲测有效]

    字符串相似度处理函数[亲测有效]oracle里面查比如存储过程里面与表SALES有关jobs: SELECT * FROM (SELECT a.name,upper(b.what)AS what,SYS.UTL_MATCH.edit

    2023-02-24
    105
  • Python随机打乱列表:解决shuffle函数报错问题

    Python随机打乱列表:解决shuffle函数报错问题在Python中,如果我们需要将列表中的元素顺序打乱,就可以使用shuffle函数。这个函数来自于Python内置的random模块,其作用是将一个序列中的元素随机打乱。下面是shuffle函数的基本语法:

    2023-12-19
    59

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注