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

字节直播leader面

设计评论系统(缓存怎么做)

mysql是否有主从延迟,如何解决

mysql有主从延迟

主从延迟主要因为mysql主从同步的机制,mysql有三种同步机制

  • 同步复制:事务线程等待所有从库复制成功响应
  • 异步复制:事务不等待从库直接响应
  • 半同步复制:事务线程不用等待所有从库复制完成,只要一部分复制成功响应即可

分布式事务解决方案

(142条消息) 分布式事务 (秒懂)_40岁资深老架构师尼恩的博客-CSDN博客_分布式事务尼恩

rokectmq事务消息实现原理

rocketmq采用了2PC的思想,事务消息的提交分为两个阶段。阶段一,Producer发送half消息到broker,broker储存消息bing并进行响应,此时消息是Consumer不可见的。阶段二,Producer根据half消息发送结果进行处理,如果half消息发送成功,则执行本地事务并提交事务状态给broker。

事务状态有三种

  • COMMIT_MESSAGE:事务提交,消息对consumer可见
  • ROLLBACK_MESSAGE:事务回滚,丢弃消息
  • UNKNOWN_MESSAGE:事务未知,暂不处理,稍后处理

Broker如何实现事务half消息Consumer不可见:改写topic并将原参数保存

half消息回查是由broker发起的,broker会定期对UNKNOWN_MESSAGE执行任务回查防止producer提交状态失败,为避免无限回查默认回查次数为15

rocketmq如何保住消息不丢失

rocketmq消息主要有三个步骤:

  • producer发送消息到broker
  • broker持久化消息
  • consumer消费消息

下面分别从三个角度讨论rocketmq是如何保住消息不丢失的

Producer

对于producer来说消息发出去之后,如果消息未能正确存储则算消息丢失

消息发送后返回四种状态码,发送失败时producer会进行重发(默认重发2次)

  • SEND_OK:消息发送成功(并不代表消息一定会发送成功,还取决于broker的刷盘方式)
  • FLUSH_DISK_TIMEOUT:如果broker配置的刷盘方式为同步刷盘, broker接到消息并且未能在配置的时间内落盘,则返回该状态
  • FLUSH_SLAVE_TIMEOUT:如果broker配置的主从同步方式为SYNC_MASTER,并且未能在配置时间内完成同步,则返回该状态
  • SLAVE_NOT_AVALIBLE:如果broker是主节点并且配置的同步方式为SYNC_MASTER,在没有可靠的slave节点时返回该状态

异步消息需要设置回调函数

事务消息可能会出现ack发送失败的情况,严格意义来讲消息不算丢失(可以在commit log中看到)

Broker

对于broker来说消息默认存储到broker的内存,异步保存到磁盘,磁盘崩溃则算消息丢失

broker有两种刷盘机制:同步刷盘、异步刷盘

  • 同步刷盘:broker接到消息后,立即通知刷盘线程将消息刷到磁盘,成功后返回ack
  • 异步刷盘(默认):broker接到消息后,保存到缓存中(pagecache),直接返回ack,当内存中消息累计到一定程度统一触发写入程序。

broker有两种同步机制:异步复制、同步双写

  • 同步双写:broker-master接到消息后将消息复制给slave复制成功后返回ack
  • 异步复制:broker-master接到消息后直接返回ack,异步复制slave

rocketmq不是百分之百保证消息不丢失的(异步刷盘、异步复制都不能百分百保证),但是rocketmq可以通过调整配置(同步刷盘、同步双写)实现消息不丢失。

Consumer

消息完成持久化后,consumer拉取之后未能成功消费且未反馈broker,算作消息丢失

consumer会在本地持久化保存消费offset,consumer消费消息之后会向broker提交ack。

相关文章:

字节直播leader面

设计评论系统(缓存怎么做) mysql是否有主从延迟,如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制,mysql有三种同步机制 同步复制:事务线程等待所有从库复制成功响应异步复制:事务不等待…...

PIC 单片机的时钟

注意:本文的内容无法保证绝对精确,后续可能会做改动,只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源:Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树(可以跳过 目录跳转) 2.特殊的二叉树(满二叉树/完全二叉树) 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘(主体) 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...

哈希表题目:猜数字游戏

文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:猜数字游戏 出处:299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字(Bulls…...

项目请求地址自动加上了本地ip的解决方式

一般情况下来说都是一些粗心大意的问题导致的 场景一:少加了/ 场景二:前后多加了空格 场景三:拼接地址错误![...

Vue3 企业级项目实战:项目须知与课程约定

本节内容很重要,希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.ju…...

传导EMI抑制-Π型滤波器设计

1 传导电磁干扰简介 在开关电源中,开关管周期性的通断会产生周期性的电流突变(di/dt)和电压突变(dv/dt),周期性的电流变化和电压变化则会导致电磁干扰的产生。 图1所示为Buck电路的电流变化,在Buck电路中上管电流和下…...

如何在excel中创建斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:…...

遮挡检测--基于角度的遮挡检测方法

文章目录1基于角度的遮挡检测方法2遮挡检测遍历方法2.1方法1--自适应径向扫描方法2.2方法2--螺旋扫描法参考1基于角度的遮挡检测方法 在基于角度的方法中,通过依次分析DSM中沿径向方向的投影光线的角度来识别遮挡。定义α\alphaα角:DSM三维点与相机中心…...

【luogu CF1098D】Eels(结论)

Eels 题目链接:luogu CF1098D 题目大意 有一个可重集,每次操作会放进去一个数或者取出一个数。 然后每次操作完之后,问你对这个集合进行操作,每次选出两个数 a,b 加起来合并回去,直到集合中只剩一个数,要…...

【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境

【java】遍历文件夹输出所有文件的文件名与绝对路径,在windows环境 String filepath "D:\\CloudMusic\\";//D盘下的file文件夹的目录File file new File(filepath);//File类型可以是文件也可以是文件夹File[] fileList file.listFiles();//将该目录下的…...

Window问题详解(下)

建议先看一下 Window问题详解(上) 思路② 既然会超时,那该怎么办呢? 显然需要一个更快速的方法来解决这个问题! 我们先来观察一下图片: 我们发现,每一次选中的数都会增加下一个。 !!!!! 因此,我们可以根据此特性优化时间!! 第一次先求出前 k − 1 k-1 k−...

Kafka部署与SpringBoot集成

Kafka与ZooKeeper Apache ZooKeeper是一个基于观察者模式的分布式服务管理框架,即服务注册中心。同时ZooKeeper还具有存储数据的能力。Kafka的每台服务器作为一个broker注册到ZooKeeper,多个broker借助ZooKeeper形成了Kafka集群。同时ZooKeeper会保存一…...

c++11 标准模板(STL)(std::unordered_set)(十三)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

【2023】DevOps、SRE、运维开发面试宝典之ELKStack相关面试题

文章目录 1、elasticsearch的应用场景2、elasticsearch的特点3、Elasticsearch集群三种状态分别是什么?代表什么?4、Elasticsearch集群的优化方面5、Elasticsearch集群防止脑裂的配置参数?6、ELK日志采集平台架构组件介绍?7、Logstash组件的作用?8、收集Kubernetes集群程序…...

Hive中的高阶函数(二)

1、UDTF之explode函数 explode(array)将array列表里的每个元素生成一行&#xff1b; explode(map)将map里的每一对元素作为一行&#xff0c;其中key为一列&#xff0c;value为一列&#xff1b; 一般情况下&#xff0c;explode函数可以直接使用即可&#xff0c;也可以根据需要结…...

Java集合知识点总结

ArrayListLinkedListLinkedHashSetHashSetTreeSetHashTableHashMapTreeMap是否有序有序有序有序无序自然排序&#xff08;Comparator&#xff09;进行排序&#xff0c;默认升序使用的是重写comparTo方法无序无序自动排序元素是否为空可为null可为null不允许可为null不允许键允许…...

培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告

目录 1 不少培训班候选人的简历中&#xff0c;缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员&#xff0c;公司一般会如何选择&#xff1f; 4 经过培训班突击后&#xff0c;可以先面试小公司 5 面试官怎么面试有培训班经历…...

Hive3.1.3安装部署_最小化部署_元数据MySQL部署_Hiveserver2部署_metastore部署---大数据之Hive工作笔记0012

hbase 实时分析 hive 离线分析 这里是新版本的hive3.1.3的安装 关于hive的原理之前的博客已经详细说了 可以看到上面是hive运行的原理图 词法分析 语法分析...

javascript:void(0) 含义

我们经常会使用到 javascript:void(0) 这样的代码&#xff0c;那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢&#xff1f;javascript:void(0) 中最关键的是 void 关键字&#xff0c; void 是 JavaScript 中非常重要的关键字&#xff0c;该操作符指定要计算一个表…...

【花雕学编程】Arduino BLDC 之 AI 迷你小龙虾 MimiClaw 自主闭环控制机器人(带传感器反馈)

从工程视角来看&#xff0c;基于Arduino、使用互补滤波进行姿态控制的BLDC&#xff08;无刷直流电机&#xff09;机器人&#xff0c;是一个典型的嵌入式实时闭环控制系统。它集成了传感器数据融合、控制算法和电机驱动&#xff0c;广泛应用于对姿态稳定性有要求的场景。关于 Mi…...

从百兆到千兆:RJ45网口背后的技术演进与协议优化全解析

从百兆到千兆&#xff1a;RJ45网口背后的技术演进与协议优化全解析 当你拿起一根普通的网线连接电脑时&#xff0c;可能不会想到这根看似简单的线缆背后隐藏着怎样的技术革命。从最初的10Mbps到如今的千兆以太网&#xff0c;RJ45接口承载了网络通信技术的巨大飞跃。本文将带你深…...

旧设备优化指南:iPhone 6s系统降级与性能提升全攻略

旧设备优化指南&#xff1a;iPhone 6s系统降级与性能提升全攻略 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 当你的iP…...

Unity序列化为何拒绝多态

一个让无数开发者抓狂的"bug",其实是一个深思熟虑的设计决策 一、开篇:一个周五下午的惨案 故事从一个看似完美的设计开始。 你正在开发一个RPG游戏的技能系统。你学过面向对象,你知道继承和多态是好东西。于是你写出了这样优雅的代码: [System.Serializable]…...

MySQL 数据恢复利器:my2sql 实战解析与应用场景

1. my2sql 是什么&#xff1f;为什么你需要它&#xff1f; 如果你负责过MySQL数据库运维&#xff0c;肯定遇到过这样的场景&#xff1a;开发同事不小心执行了DELETE FROM users WHERE id1&#xff0c;然后慌慌张张跑过来问你能不能恢复数据。这时候如果只有全量备份binlog的传统…...

终极指南:Windows免费倒计时神器Hourglass,5分钟从新手到高手

终极指南&#xff1a;Windows免费倒计时神器Hourglass&#xff0c;5分钟从新手到高手 【免费下载链接】hourglass The simple countdown timer for Windows. 项目地址: https://gitcode.com/gh_mirrors/ho/hourglass 还在为Windows系统找不到好用的倒计时工具而烦恼吗&a…...

终极指南:ZoneMinder开源监控系统的架构设计与核心组件解析

终极指南&#xff1a;ZoneMinder开源监控系统的架构设计与核心组件解析 【免费下载链接】zoneminder ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras. 项目地址: https…...

实测!用DeepSeek R1和通义千问Max分别写代码、解数学题,结果有点意外

DeepSeek R1与通义千问Max实战对比&#xff1a;当代码遇上数学题 上周我在开发一个需要同时处理算法优化和复杂数学计算的个人项目时&#xff0c;突然萌生了一个想法&#xff1a;为什么不把市面上最火的两个AI编程助手——DeepSeek R1和通义千问Max拉出来比一比&#xff1f;作…...

告别原生组件坑!微信小程序里让Canvas乖乖跟着ScrollView滚动的3种实战方案

微信小程序Canvas与ScrollView滚动冲突的深度解决方案 在开发微信小程序时&#xff0c;遇到Canvas等原生组件不跟随ScrollView滚动的问题&#xff0c;确实让不少开发者头疼。这种层级限制源于微信小程序的底层设计&#xff0c;原生组件如Canvas、Video等被渲染在WebView之上&am…...

终极LrcHelper歌词下载指南:5分钟学会网易云音乐双语歌词获取与设备适配

终极LrcHelper歌词下载指南&#xff1a;5分钟学会网易云音乐双语歌词获取与设备适配 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 还在为找不到高质量双语歌词而烦恼吗&#xff1f;想…...