kakfa系统架构

消息队列Kafka系统架构
Q:什么是Kafka?

A:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息引擎、消息队列服务,它可以处理消费者规模的网站中的所有动作流数据。

Q:Kafka有哪些特性?

A:作为一种高吞吐量的分布式发布订阅消息系统,有如下特性:

通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
支持通过Kafka服务器和消费机集群来分区消息。
支持Hadoop并行数据加载
Q:kafka的总体数据流是什么样的?

A:

screenshot.png

Q:kafka的使用场景有些?

消息队列Kafka版具有丰富的应用生态,主要包括三个方面:

大数据领域:如网站行为分析、日志聚合、应用监控、流式数据处理、在线和离线数据分析等领域。
数据集成:将消息导入MaxCompute、OSS、RDS、Hadoop、HBase等离线数据仓库。
流计算集成:与StreamCompute、E-MapReduce、Spark、Storm等流计算引擎集成。
ecosystem

Q:主要功能有哪些?

A:根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因;以容错的方式记录消息流,kafka以文件的方式来存储消息流;可以再消息发布的时候进行处理。

消息队列Kafka系统架构
一个典型的消息队列Kafka版集群包括四个部分:

Producer

通过push模式向消息队列Kafka版的Kafka Broker发送消息。发送的消息可以是网站的页面访问、服务器日志,也可以是CPU和内存相关的系统资源信息。

Kafka Broker

用于存储消息的服务器。Kafka Broker支持水平扩展。Kafka Broker节点的数量越多,Kafka集群的吞吐率越高。

Consumer Group

通过pull模式从消息队列Kafka版 Broker订阅并消费消息。

Zookeeper

管理集群的配置、选举leader分区,并且在Consumer Group发生变化时,进行负载均衡。

kafka_架构_3

消息队列Kafka版的发布/订阅模型
消息队列Kafka版采用发布/订阅模型:

Consumer Group和Topic的对应关系是N : N,即一个Consumer Group可以同时订阅多个Topic,一个Topic也可以被多个Consumer Group同时订阅。
某个Topic的一条消息可以被多个Consumer Group同时订阅,但只能被同一个Consumer Group内的任意一个Consumer消费。
在这里插入图片描述

本文主要介绍消息队列Kafka版的经典应用场景。

网站活动跟踪
成功的网站运营都会非常关注站点的用户行为并进行分析。通过消息队列Kafka版,您可以实时收集网站活动数据(包括用户浏览页面、搜索及其他行为等),并通过“发布/订阅”模型实现:

根据不同的业务数据类型,将消息发布到不同的Topic。
通过订阅消息的实时投递,将消息流用于实时监控与业务分析或者加载到Hadoop、ODPS等离线数据仓库系统进行离线处理与业务报告。
能够实现:

高吞吐:网站所有用户产生的行为信息极为庞大,需要非常高的吞吐量来支持。
弹性扩容:网站活动导致行为数据激增,云平台可以快速按需扩容。
大数据分析:可对接Storm/Spark实时流计算引擎,亦可对接Hadoop/ODPS等离线数据仓库系统。
web tracking

日志聚合
公司的不同平台每天都会产生大量的日志(一般为流式数据,如搜索引擎pv、查询等),相较于日志为中心的系统,例如Scribe或者Flume来说,消息队列Kafka版在提供同样高效的性能时,可以实现更强的数据持久化以及更低的端到端响应时间。消息队列Kafka版的这种特性决定它非常适合作为日志收集中心:

消息队列Kafka版忽略掉文件的细节,可以将多台主机或应用的日志数据抽象成一个个日志或事件的消息流,异步发送到消息队列Kafka版集群,从而做到非常低的RT时间。
消息队列Kafka版客户端可批量提交消息和压缩消息,对生产者而言几乎感觉不到性能的开支。
消费者可以使用Hadoop、ODPS等离线仓库存储和Strom、Spark等实时在线分析系统对日志进行统计分析。
能够实现:

应用与分析解耦:构建应用系统和分析系统的桥梁,并将它们之间的关联解耦。
高可扩展性:具有非常高的可扩展性,即当数据量增加时可通过增加节点快速水平扩展。
在线/离线分析系统:支持实时在线分析系统和类似于Hadoop的离线分析系统。
日志聚合

流计算处理
在很多领域,如股市走向分析、气象数据测控、网站用户行为分析,由于数据产生快、实时性强且量大,您很难统一采集这些数据并将其入库存储后再做处理,这便导致传统的数据处理架构不能满足需求。

与传统架构不同,消息队列Kafka版以及Storm/Samza/Spark等流计算引擎的出现,就是为了更好地解决这类数据在处理过程中遇到的问题,流计算模型能实现在数据流动的过程中对数据进行实时地捕捉和处理,并根据业务需求进行计算分析,最终把结果保存或者分发给需要的组件。

能够实现:

流动的数据:构建应用系统和分析系统的桥梁,并将它们之间的关联解耦。
高可扩展性:由于数据产生非常快且数据量大,需要非常高的可扩展性。
流计算引擎:可对接开源Storm/Samza/Spark以及EMR、Blink、StreamCompute等产品。
流计算处理

数据中转枢纽
近10多年来,诸如KV存储(HBase)、搜索(ElasticSearch)、流式处理(Storm/Spark Streaming/Samza)、时序数据库(OpenTSDB)等专用系统应运而生。这些系统是因为单一的目标而产生,也因其简单性使得在商业硬件上构建分布式系统变得更加容易且性价比更高。

通常,同一份数据集需要被注入到多个专用系统内。例如,当应用日志用于离线日志分析,搜索单个日志记录同样不可或缺,而构建各自独立的工作流来采集每种类型的数据再导入到各自的专用系统显然不切实际,利用消息队列Kafka版作为数据中转枢纽,同份数据可以被导入到不同专用系统中。

能够实现:

高容量存储:能在商业硬件上存储高容量的数据,实现可横向扩展的分布式系统。
一对多消费模型:“发布/订阅”模型,支持同份数据集能同时被消费多次。
同时支持实时和批处理:支持本地数据持久化和Page Cache,在无性能损耗的情况下能同时传送消息到实时和批处理的消费者。
数据中转枢纽

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【GameFramework框架】三、快速启动

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

python常用pandas函数nlargest / nsmallest及其手动实现

目录 pandas库 Series和DataFrame nlargest和nsmallest 用法示例 代替方法 手动实现 模拟代码 pandas库 是Python中一个非常强大的数据处理库,提供了高效的数据分析方法和数据结构。它特别适用于处理具有关系型数据或带标签数据的情况,同时在时间…

动态库是怎么被加载的?

目录 1.动态库是如何被加载的? 2.那么虚拟地址和物理地址是如何映射的呢? 3.那么动态库的地址怎么来? 1.动态库是如何被加载的? 下面这个就是正常的进程是如何从磁盘中读取信息编译的: 而动态库就存储在共享区段&am…

Android简单支持项目符号的EditText

一、背景及样式效果 因项目需要,需要文本编辑时,支持项目符号(无序列表)尝试了BulletSpan,但不是很理想,并且考虑到影响老版本回显等因素,最终决定自定义一个BulletEditText。 先看效果&…

新春营销不间断,AI 整活更省心

新年、春节历来都是营销的大热节点,各种好物集、年货节、送礼清单比比皆是。这些新鲜玩法的背后是大量的品牌内容「弹药库」。 然而,品牌想在竞争激烈的新春季刷满存在感,并非易事。一方面,节日期间,消费者对于内容的审…

交叉验证之KFold和StratifiedKFold的使用(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

云计算、Docker、K8S问题

1 云计算 云计算作为一种新兴技术,已经在现代社会中得到了广泛应用。它以其高效、灵活和可扩展特性,成为了许多企业和组织在数据处理和存储方面的首选方案。 1.1 什么是云计算?它有哪些特点? 云计算是一种通过网络提供计算资源…

项目02《游戏-06-开发》Unity3D

基于 项目02《游戏-05-开发》Unity3D , 接下来做 背包系统的 存储框架 , 首先了解静态数据 与 动态数据,静态代表不变的数据,比如下图武器Icon, 其中,武器的名称,描述&#xff…

全网第一篇把Nacos配置中心客户端讲明白的

入口 我们依旧拿ConfigExample作为入口 public class ConfigExample {public static void main(String[] args) throws NacosException, InterruptedException {String serverAddr "localhost";String dataId "test";String group "DEFAULT_GROU…

搭建frp

1.frp 是什么? frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网…

解决nvrtc: error: invalid value for --gpu-architecture (-arch)

问题描述 在使用pytorch3d的时候,可以正常的import,但是在执行错误的使用就会报,nvrtc: error: invalid value for --gpu-architecture (-arch),的错误,图片如下: 我的环境是: 显卡&#xff1…

精细管理药厂设备,制药机械设备管理平台系统助力生产提效

制药行业的复杂性要求对药品的品质和安全性进行严格控制,而这离不开高效管理各类机械设备。然而,随着制药企业规模的不断扩大和技术的迅猛进步,如何有效管理这些设备成为一个亟待解决的问题。在这一挑战面前,PreMaint制药机械设备…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types/react-resizable": "^…

前端面试题——Vue的双向绑定

前言 双向绑定机制是Vue中最重要的机制之一,甚至可以说是Vue框架的根基,它将数据与视图模板相分离,使得数据处理和页面渲染更为高效,同时它也是前端面试题中的常客,接下来让我们来了解什么是双向绑定以及其实现原理。…

Python的包安装工具——pip命令大全

对于大多数使用Python的人来说,一定知道pip这个包安装工具,但是对pip可能还不是很了解,今天作者给大家介绍一下pip的命令,以方便灵活使用pip。 一、pip工具使用方法 pip的语法如下: pip [options] 式中&#xff1a…

InverseMatrix3D

InverseMatrixVT3D: An Efficient Projection Matrix-Based Approach for 3D Occupancy Prediction https://github.com/DanielMing123/InverseMatrixVT3D InverseMatrix3D过程总结如下: 1. 用2D backbone提取N个视角的多尺度图像特征,表示如下&#xf…

机器学习聚类算法

聚类算法是一种无监督学习方法,用于将数据集中的样本划分为多个簇,使得同一簇内的样本相似度较高,而不同簇之间的样本相似度较低。在数据分析中,聚类算法可以帮助我们发现数据的内在结构和规律,从而为进一步的数据分析…

Centos 内存和硬盘占用情况以及top作用

目录 只查看内存使用情况: 内存使用排序取前5个: 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

Python 潮流周刊#38:Django + Next.js 构建全栈项目

△△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯,…

protoc结合go完成protocol buffers协议的序列化与反序列化

下载protoc编译器 下载 https://github.com/protocolbuffers/protobuf/releases ps: 根据平台选择需要的编译器,这里选择windows 解压 加入环境变量 安装go专用protoc生成器 https://blog.csdn.net/qq_36940806/article/details/135017748?spm1001.2014.3001.…