当前位置: 首页 > 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;该操作符指定要计算一个表…...

不用机器学习不用大数据,给你讲通ChatGPT的深层原理

ChatGPT现在看来已经异常火爆了&#xff0c;很多人已经熟知&#xff0c;并且开始练习使用或者开始利用他开始实践了。但仍然有很多人在观望&#xff0c;在疑惑&#xff0c;今天狗哥不用那些高端大气的机器学习亦或是大数据还给你讲通ChatGPT深层到底是个啥逻辑。 目录 1. 聊家…...

JavaScript中的循环类型

JavaScript 中有三种主要的循环类型: for、while 和 do...while。 for: 循环指定次数。 例如&#xff1a; for (let i 0; i < 5; i) {console.log(i); } while: 当条件为真时循环。 例如&#xff1a; let i 0; while (i < 5) {console.log(i);i; } do...while: 先执…...

Spring Boot+Vue前后端分离项目练习02之网盘项目利用token进行登陆验证

1.添加依赖 首先需要添加jwt对应的依赖。 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>2.添加配置 JWT由三部分构成&#xff0c;分别是 header, pa…...

springcloud常见面试题(2023最新)

目录前言一.微服务1.微服务是什么&#xff1f;2.你知道哪些RPC框架3.springCloud和Dubbo有什么区别4. SpringCloud由什么组成二.Spring Cloud Eureka1.Eureka包含几个组件2.Eureka的工作原理3.说一下什么是Eureka的自我保护机制4.什么是CAP原则5.都是服务注册中心&#xff0c;E…...

用户态驱动的两种方式-ixy学习

介绍在Linux下有两种启用用户态驱动的子系统&#xff1a;一个是UIO&#xff0c;另一个是VFIO&#xff0c;ixy这两种都支持。 UIO通过虚拟文件系统sysfs下的内存映射文件来暴露所有必要的接口以完成用户态的驱动。这些基于文件的系统调用接口给了我们充足的权限来获取设备资源而…...

机器学习 | 线性回归(单变量)

前文回顾&#xff1a;机器学习概述&#x1f4da;线性回归概念我们要使用一个数据集&#xff0c;数据集包含俄勒冈州波特兰市的住房价格。在这里&#xff0c;我要根据不同房屋尺寸所售出的价格&#xff0c;画出我的数据集。比方说&#xff0c;如果你朋友的房子是 1250 平方尺大小…...

C++基础知识【3】控制语句

目录 前言 一、条件语句 1.1、if 语句 1.2、if-else 语句 1.3、switch 语句 二、循环语句 2.1、while 循环 2.2、do-while 循环 2.3、for 循环 三、跳转语句 3.1、break语句 3.2、continue语句 3.3、goto语句 四、一些新特性 4.1、if 语句和 switch 语句…...

ImportError: Can not find the shared library: libhdfs3.so解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...

Qt插件开发总结5--主界面嵌入插件UI

文章目录一、前言二、效果展示三、嵌入插件UI1、插件接口文件添加UI指针2、插件子项目工程建立UI类3、插件类中创建UI类、使UI指针指向创建的UI类4、插件元信息中添加widget键值对&#xff0c;指示插件UI嵌入主界面中的位置5、主界面中预留接入点tabWidget6、插件管理器中元数据…...

一些关于linux process 和python process的记录

python mulprocess 主要用来生成另一个进程并运行 def func(i):print(helloworld)from multiprocessing import Process p Process(targetfunc,args(i, )) p.start()如果想要调用shell命令&#xff0c;可以采用os.popen 或者是 subprocess.run 但是前者只能执行命令并获取输…...

专做程序员招聘的网站/软文平台发布

1.第一个Bug的故事 有人把软件产品和药品并称为世界上两种无法根除自身的缺陷却被允许公开合法销售的产品&#xff01; 随着软件各种Bug的增多&#xff0c;严重的质量事故也随之增多&#xff0c;人们对抗Bug的态度日益强硬。 1945年9月某天&#xff0c;Hopper 正在埋头工作在一…...

长沙广告网络公司/怎么进行seo

2019独角兽企业重金招聘Python工程师标准>>> 1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN&#xff0c;我们可以分析出以下结果&…...

广西网站/2022真实新闻作文400字

前些天&#xff0c;测试人员向我反映有一家企业的通讯录同步接口不返回数据&#xff0c;我查日志nginx的相应access.log状态码是499&#xff0c;请求超时&#xff0c;从网上查找资料分析有两种可能&#xff1a;1.客户端主动断开连接2.服务端响应超时造成客户端连接中断问了客户…...

外网如何访问群晖wordpress/搜狗广告联盟

latex常见错误&#xff01;missing $ inserted.和! File ended while scanning use of \newlbel. Latex常见的错误1 &#xff01;missing $ inserted. &#xff01;missing $ inserted.<inserted text>$ …………… 这种错误主要在使用 公式包裹的时候&#xff0c;可以忘…...

网站栏目规划注意事项/sem是什么工作

let t[[1,3,5],[1,2,4],[2,6,5],[1,3,5]]; let x []; let q []; let k0,w0;//转换为一维数组 for(let i0;i<t.length;i){for(let j 0;j<t[i].length;j){x[k] t[i][j];} } console.log(x); //删除重复元素&#xff0c;将出现的重复元素加入数组 for(let i0;i<x.leng…...

90设计包图网/seo研究所

一、前期基础知识储备 首先看几个使用LayoutParams的实例&#xff1a; 1、《Android开发艺术探索》第8章&#xff0c;Java代码中动态设置按钮时 通过LayoutParams参数设置按钮位置x、y参数 及Gravity位置信息&#xff0c;从而动态的添加进一个随手势移动的按钮&#xff0c;类…...