当前位置: 首页 > news >正文

中文博客网站模板/网页设计个人网站

中文博客网站模板,网页设计个人网站,服务器网站 都被做跳转,网站要注册为什么Kafka快速实战以及基本原理详解 基本概念 Kafka是一个分布式、支持分区、多副本,基于ZK的分布式消息系统,最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如Hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎、日…

Kafka快速实战以及基本原理详解

基本概念

  • Kafka是一个分布式、支持分区、多副本,基于ZK的分布式消息系统,最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如Hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎、日志等
  • 使用场景
    • 日志收集
      • 可以用Kafka收集各种服务的日志,通过Kafka以统一接口服务的方式开放给各种Consumer,比如Hadoop、Hbase、Solr等
    • 消息系统
      • 解耦、消息等
    • 用户活动跟踪
      • 记录用户的各种活动。如浏览网页、搜索、点击等,按照不同类型放到不同的Topic中,然后订阅者通过这些topic来做实时的监控分析,或者装载到Hadoop、数仓中做离线分析和挖掘
    • 运营指标
      • 记录运营监控数据,包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如告警和报告

组成部分

image.png

  • Broker
    • 消息中间件处理节点,一个Kafka节点就是一个Broker,一个或者多个Broker可以组成一个Kafka集群
  • Topic
    • Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个Topic
  • Producer
    • 生产者,向Broker发送消息的客户端
  • Consumer
    • 消费者,从Broker读取消息的客户端
  • ConsumerGroup
    • 每个Consumer属于一个特定的ConsumerGroup,一条消息可以被多个不同的ConsumerGroup消费,但是一个ConsumerGroup中只能有一个Consumer能够消费该消息
  • Partition
    • 物理上的概念,一个Topic可以分为多个Partition,每个Partition内部消息是有序的(类似于RocketMQ中的MessageQueue)

消息模式

  • 单播消息
    • 一条消息只能被某一个消费者消费,类似Queue模式,只需让所有消费者在同一个消费组里
  • 多播消息
    • 一条消息能被多个消费者消费,类似于发布/订阅模式,针对Kafka同一条消息只能被同一个消费组的一个消费者消费的特性,要实现多播只要保证消费者属于不同消费组即可

消息传递机制

image.png

  • 基本概念
    • Kafka的消息发送者和消费者通过Topic的逻辑概念进行业务沟通,但是实际上所有的消息是存在服务端的Partition这样的一个数据结构当中的
    • 客户端: 包括消息生产者和消息消费者
    • 消费者组: 每个消费者可以指定一个所属的消费者组,相同消费者组的消费者共同构成一个逻辑消费者组,每一个消息可以被多个消费组的其中一个消费者消费一次
    • 服务端Broker: 一个Kafka服务就是一个Broker
    • 主题Topic: Topic只是一个逻辑概念,一个Topic被认为是业务含义相同的一组消息,客户端通过绑定Topic来生产或者消费消息
    • 分区Partition: Partition是实际存储消息的组件,每个Partition就是一个Queue队列结构,所有消息满足先进先出的顺序保存在Partition中
  • Topic、Partition和Broker的关系
    • Kafka设计需要支持海量数据,通过将数据拆分成多个Partition,每个Broker只存储部分数据用来提升集群吞吐量,对于每个Topic下的多个Partition只有一个leader来负责客户端请求,并且遵循主备模式来应对单点故障,并且提升了读取并行度
    • Topic可以有多个Partition,每个Partition是一个有序的MessageQueue,,Message会被按顺序存入commitlog中,对应的每个Message会存在一个唯一的标识offset,对于这些消息默认保留最近一周的消息,也可以通过配置进行更改,存储消息的数据量也不会影响Kafka的性能
      • 问题: 为什么要对Topic的数据进行分区存储
        • commitlog会受到所在机器的文件系统大小的限制,分区之后可以将不同的分区放在不同的机器上,相当于分布式存储,理论上一个Topic可以处理任意数量的数据,并且能提升并行度
    • 每个Consumer基于自己维护在commitlog中的offset进行消费,实际业务中,我们可以通过指定offset进行消息重复消费、顺序逐条消费、跳过等操作,并且不会影响到集群以及其它Consumer
    • 支持增加Topic的Partition数量,但不支持减少

集群消费

  • 多个Partition分布在Kafka集群中不同的Broker上,每个Broker可以请求备份其它Broker上Partition的数据,Kafka集群支持配置Partition备份的数量,针对每个Partition都会有一个Broker起到leader的作用来进行读写请求,其它作为follower进行备份来保证多副本数据与消费的一致性,如果leader宕了,followe中会选举一个新leader
  • 生产者
    • 生产者将消息发送到Topic中,同时负责指定某个Partition进行存放,可以通过轮询进行负载均衡或关键字key进行指定,通常情况下选择关键字key较多,主要是为了保证具有相同key的消息能够被发送到同一个Partition,从而保证消息的有序性
      • 备注
        • 在日志系统中,可能会将日志的某个字段(如user_id)作为key,以确保同一个用户的日志消息能够被发送到同一个Partition,并按照发送的顺序进行消费
        • 如果不关心消息的有序性,或者消息本身就没有key,那么也可以不指定key,让分区采用轮询的方式来选择Partition
  • 消费者
    • 队列模式
      • 同一个消费组下有多个消费者,但是消息只会分配给其中一个
    • 发布/订阅模式
      • 多个消费组下的其中一个消费者可以收到广播消息
  • 消息有序
    • 一个Partition同一时刻在一个消费者组下只有一个消费者进行消费,从而保证消息有序
    • 消费者组下的消费者不能比一个Topic下的Partition数量多,否则多出来的消费者就消费不到消息,Kafka只能保证在Partition的范围内保证消息消费的局部有序性,不能保证在同一个Topic下多个Partition的全局消费有序性(和RocketMQ一样,只能保证局部有序,不能保证全局有序)
    • 问题: 如何保证消息顺序消费
      • 如果要保证全局有序,可以将Topic的Partition数量置1,将消费者组下的消费者数量也置为1,但是这样影响了消费性能,所以Kafka全局消费有序很少用

相关文章:

Kafka快速实战以及基本原理详解

Kafka快速实战以及基本原理详解 基本概念 Kafka是一个分布式、支持分区、多副本,基于ZK的分布式消息系统,最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如Hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎、日…...

微信小程序(4)- 事件系统和模板语法

1. 事件系统 1.1 事件绑定和事件对象 小程序中绑定事件与在网页开发中绑定事件几乎一致,只不过在小程序不能通过 on 的方式绑定事件,也没有 click 等事件,小程序中绑定事件使用 bind 方法,click 事件也需要使用 tap 事件来进行代…...

【Java多线程】对线程池的理解并模拟实现线程池

目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多,例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是:(提高效率) 1…...

python连接mysql数据库

连接MySQL数据库,通常我们会使用Python的mysql-connector-python库。下面是一个基本的示例来展示如何使用Python连接到MySQL数据库。 首先,确保你已经安装了mysql-connector-python库。如果没有,你可以使用pip来安装它: pip ins…...

docker用法

首先需要去docker官网注册你的账号,记住账号名称和密码; 然后在本地执行: docker login登录OK。 把ubuntu下载到本地: sudo docker pull ubuntusudo docker images输出: REPOSITORY TAG …...

DIcom调试Planar configuration

最近和CBCT组同事调dicom图像 这边得图像模块老不兼容对方得dicom文件。 vtk兼容,自己写得原生解析不兼容。 给对方调好了格式,下次生成文件还会有错。 简单记录下,日后备查。 今天对方又加了 个字段:Planar configuration 查…...

C#与VisionPro联合开发——跳转页面

1、跳转页面并打开相机 From1 所有代码展示 using System; using System.IO; using System.Windows.Forms; //引入VisionPro命名空间 using Cognex.VisionPro;namespace ConnectCamera {public partial class Form1 : Form {public Form1() {InitializeComponent();}CogAcqFif…...

服务端测试开发必备技能:Mock测试

什么是mock测试 Mock 测试就是在测试活动中,对于某些不容易构造或者不容易获取的数据/场景,用一个Mock对象来创建以便测试的测试方法。 Mock测试常见场景 无法控制第三方系统接口的返回,返回的数据不满足要求依赖的接口还未开发完成&#…...

vue3中ref创建变量取值时自动补充 .value 插件 volar

插件 TypeScript Vue Plugin (Volar) 设置中配置...

clickhouse的docker部署与springboot整合

注意:镜像bitnami/clickhouse包含服务端和客户端,yandex版本需要使用yandex/clickhouse-server,yandex/clickhouse-server docker启动命令(允许空密码 -e ALLOW_EMPTY_PASSWORD=yes),clickhouse版本不同,配置文件在的位置也会不一样/etc/clickhouse-server/config.xml d…...

Node.js_基础知识(计算机硬件基础)

主机的基本组成 CPU:Central Processing Unit,即中央处理器,是计算机的核心部件。是一块集成电路芯片,能够执行计算机指令并控制计算机的各种操作,负责运算和处理数据内存:是电脑硬件中的一块电路板,用于暂时存储CPU中的运算数据,是计算机与CPU进行沟通的桥梁,负责存储…...

git bash :download.sh: line 1: wget: command not found(已解决)

Windows中git bash完全可以替代原生的cmd,但是对于git bash会有一些Linux下广泛使用的命令的缺失,比如wget命令。 1、下载wget.exe,地址:https://eternallybored.org/misc/wget/ 2、将wget.exe 拷贝到C:\Program Files\Git\ming…...

BlackberryQ10 是可以安装 Android 4.3 应用的,Web UserAgent 版本信息

BlackberryQ10 是可以安装 Android 4.3 应用的 最近淘了个 Q10 手机,非常稀罕它,拿着手感一流。这么好的东西,就想给它装点东西,但目前所有的应用都已经抛弃这个安卓版本了。 一、开发环境介绍 BlackBerry Q10 的 安卓版本是 4.…...

JS前端高频面试

JS数据类型有哪些,区别是什么 js数据类型分为原始数据类型和引用数据类型。 原始数据类型包括:number,string,boolean,null,undefined,和es6新增的两种类型:bigint 和 symbol。&am…...

Flask数据库操作-Flask-SQLAlchemy

Flask中一般使用flask-sqlalchemy来操作数据库。flask-sqlalchemy的使用介绍如下: 一、SQLAlchemy SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销…...

H5获取手机相机或相册图片两种方式-Android通过webview传递多张照片给H5

需求目的: 手机机通过webView展示H5网页,在特殊场景下,需要使用相机拍照或者从相册获取照片,上传后台。 完整流程效果: 如下图 一、H5界面样例代码 使用html文件格式,文件直接打开就可以展示布局&#…...

mysql进阶学习 | DAY 14

存储引擎 体系结构 连接层 服务层 引擎层 存储层 存储引擎 表类型 查看引擎 查看建表语句 指定存储引擎 ENGINE SHOW engins InnoDB 默认存储引擎 遵循ACID模型 支持事务 行级锁 提高并发访问性能 支持外键 FOREIGN KEY约束 保证数据完整性和正确性 对应文件 xx…...

使用GPT生成python图表

首先,生成一脚本,读取到所需的excel表格 import xlrddata xlrd.open_workbook(xxxx.xls) # 打开xls文件 table data.sheet_by_index(0) # 通过索引获取表格# 初始化奖项字典 awards_dict {"一等奖": 0,"二等奖": 0,"三等…...

[深度学习]yolov9+deepsort+pyqt5实现目标追踪

【YOLOv9DeepSORTPyQt5追踪介绍】 随着人工智能技术的飞速发展,目标追踪在视频监控、自动驾驶等领域的应用日益广泛。其中,YOLOv9作为先进的目标检测算法,结合DeepSORT多目标追踪算法和PyQt5图形界面库,能够为用户提供高效、直观…...

C#_WaitAll、WhenAll、async及await

Task.WhenAll、Task.WaitAll Task.WhenAll 和 Task.WaitAll 都是用于等待多个任务完成的方法,但它们之间有一些重要的区别。 返回类型: Task.WhenAll: 返回一个 Task 对象,该对象表示所有输入任务的联合任务。 Task.WaitAll: 没有返回值。它是一个同步方…...

leetcode hot100零钱兑换Ⅱ

本题可以看出也是背包问题,但区别于之前的01背包问题,这个是完全背包问题的变形形式。 下面介绍01背包和完全背包的区别与联系: 01背包是背包中的物品只能用一次,不可以重复使用,而完全背包则是可以重复使用。01/完全…...

路由器配置DMZ主机映射

路由器配置DMZ主机映射 光猫路由模式配置方法 光猫路由模式是用光猫进行拨号连接,所有设备通过光猫访问互联网,只需要设置光猫的DMZ主机映射地址为局域网主机即可 光猫桥接模式配置方法 光猫桥接模式,是穿透光猫,通过路由器拨…...

ubuntu22.04@Jetson Orin Nano之CSI IMX219安装

ubuntu22.04Jetson Orin Nano之CSI IMX219安装 1. 源由2. 安装2.1 硬件安装2.2 软件配置2.3 新增摄像头 3. 效果4. 参考资料 1. 源由 折腾半天时间,捣鼓这个套装摄像头(IMX219)的安装,死活就是没有这个设备。世界总是这么小,看看遇到问题的大…...

Kettle下载地址

kettle是一款基于java开发的洗数工具,可以通过图像化的操作界面,拖拉拽的操作方式,实现数据导入导出清洗等功能,还支持编写脚本进行数据处理,功能十分强大。 kettle本身是开源免费的,但它的下载地址非常难…...

密码学基本概念

1、信息安全的属性:机密性、认证(消息认证、身份认证)、完整性、不可否认性、可靠性、可用性、可控性、审计。 2、密码学是研究解决机密性、认证(消息认证、身份认证)、完整性、不可否认性这些安全问题的手段&#xf…...

9个最受欢迎的开源自动化测试框架盘点!

自动化测试框架可以帮助测试人员评估多个Web和移动应用程序的功能,安全性,可用性和可访问性。尽管团队可以自己构建复杂的自动化测试框架,但是当他们可以使用现有的开源工具,库和测试框架获得相同甚至更好的结果时,通常…...

高速稳定、网络隔离,解析“向日葵控控”远控方案在医疗行业应用

在医疗大健康领域,依托高速发展的信息化技术加速布局智能化,通过远程手段提高医疗服务质量、促进医疗资源共享、提升医疗工作效率,已成为医院和各类社区诊所等提供关键医疗服务部门近年来的发展目标之一。 同时,根据医疗领域的特殊…...

抖音视频提取软件使用功能|抖音视频下载工具

我们的抖音视频提取软件是一款功能强大、易于操作的工具,旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们的软件支持通过关键词搜索和分享链接两种方式获取抖音视频,方便用户快速找到自己感兴趣的内容。 主要功能模块:…...

Django入门指南:从环境搭建到模型管理系统的完整教程

环境安装: ​ 由于我的C的Anaconda 是安装在C盘的,但是没内存了,所有我将环境转在e盘,下面的命令是创建环境到指定目录中. conda create --prefixE:\envs\dj42 python3.9进入环境中: conda activate E:\envs\dj42…...

Elasticsearch从入门到精通-01认识Elasticsearch

Elasticsearch从入门到精通-01认识Elasticsearch 👏作者简介:大家好,我是程序员行走的鱼 🍂博主从本篇正式开始ES学习,希望小伙伴可以一起探讨 📖 本篇主要介绍和大家一块简单认识下ES并了解ES中的主要角色…...