关系型数据库RDBMS | 字节青训营笔记

news2024/11/23 2:51:46

一、经典案例

1、红包雨案例

每年春节,抖音都会有红包雨获得

2、事务

事务(Transaction): 是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性

BEGIN;
UPDATE account table SET balance = balance - '小目标 WHERE name =“抖音';
UPDATE account_table SET balance = balance +'小目标' WHERE name =杨洋';
COMMIT;

ACID

  • 原子性(Atomicity): 事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生
  • 一致性(Consistengy): 数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
  • 隔离性(solation): 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果
  •  持久性(Durability): 在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚

3、红包雨与ACID

原子性:当抖音已经已经扣除一个亿,但是羊老师还没有加上,服务器挂了,那么就抖音亏一个亿,羊老师也没加上,所以必须保证同时成功或同时失败。

一致性:假设抖音只剩0.5亿,但又扣除一个亿,那么就为负了。这样是不合法的,所以必须要保证每个操作都是合法的,从一个有效的状态变到另一个有效状态。

隔离性:如果羊老师从抖音和头条同时强了1个亿,那么他们同时给老师转1个亿,结果老师却只加了1个亿,因为两个操作互相影响了。两个操作在同个账户并发进行,应该是互不影响的,表现是串行操作。

持久性:如果你已经成功拿到抖音一个亿了,抖音也扣了一个亿。但是服务器挂机了,没持久化数据,那么最后还是没有拿到。所以必须保证在操作成功之后,更新的结果被永久保留下来,不会因为宕机而丢失。

高并发:全国14亿人抢红包,如果1秒只执行1个请求,那么要31年才能完成。所以必须得支持高并发,每秒执行1000w请求,只需要1分多钟

高可靠:假设除夕晚上大家正在愉快的从抖音身上“羊毛”,这时候服务器挂了,程序员花了一个小时,头发都掉光了,终于修好了。"抖音宕机"秒上热搜,所以,必须保证高可靠。

二、企业实践

1、红包雨挑战

这种获得一般流量大,流量是短暂时间突增的,这段时间很大,过段时间就冷了,而且要保证系统的稳定性。

2、大流量问题-Sharding 

问题背景:

  • 单节点写容易成为瓶颈
  • 单机数据容量上限

解决方案:

  • 业务数据进行水平拆分,比如一个业务拆分成几个数据库来存储
  • 代理层进行分片路由,多一个代理层来转发请求,所有请求都发到代理层,让代理层来转发到各个服务器,起到一个中转站的作用,用户是不用管存到哪台服务器的,只需要发请求给代理层。

实施效果

  • 数据库写入性能线性扩展
  • 数据库容量线性扩展

3、浏览突增-扩容

问题背景

  • 获得流量上涨,活动持续一段时间,不可能一年365都扩容
  • 集群性能不满足要求

解决方案

  • 扩容DB物理节点数量
  • 利用影子表进行压测、

实施效果

  • 数据库集群提供更高的吞吐
  • 保证集群可以承担预期流量

4、流量突增-代理连接池

问题背景

  • 流量突增导致大量建立连接
  • 大量建立连接导致负载变大,延时上升

解决方案

  • 业务侧预热连接池
  • 代理侧预热连接池,代理层会提前缓存100个连接,当用户来的时候就不用重新简历连接,用已经建立好的连接。
  • 代理侧支持连接队列

实施效果

  • 避免DB被突增流量打死
  • 避免代理和DB被大量建连打死

5、稳定性&可靠性-3AZ高可靠

当员工删库跑路,或者硬件事故。我们怎么保证数据稳定和可靠?

字节跳动采用3AZ高可靠的解决方案

在3个不同城市分别部署数据库,三机房部署,机房级别容灾,机房级别流量调度。

proxy读写分离,分库分表限流,流量调度

监控报警,实时监控集群运行状态,提前上报集群风险

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指数加权平均、动量梯度下降法

目录1.指数加权平均(exponentially weighted averages)这里有一年的温度数据。如果想计算温度的趋势,也就是局部平均值(local average),或者说移动平均值(moving average),怎么做?:当天的温度,:…

交换机的基本原理(特别是动态ARP、静态ARP、代理ARP)

第六章:交换机的基本配置 二层交换设备工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的。二层交换设备不同的接口发送和接收数据独立,各接口属于不…

esxi宿主机进入维护模式虚拟机不会自动释放【不会自动迁移出去】解决方法、查看辨别宿主机本地空间和存储池、esxi进入存储内部清理空间

文章目录说明虚拟机不自动释放处理过程报错说明宿主机进入维护模式说明手动迁移报错说明直接启动虚拟机报错说明解决方法报错原因分析解决方法查看辨别宿主机本地空间esxi进入存储内部清理空间进入存储池内存储内部空间清理及原则存储空间说明说明 我当前的esxi主机版本为5.5 …

7亿人养活的眼镜行业,容不下一家县城小店

文|螳螂观察 作者| 青月 如果要盘点那些被暴利眷顾的行业,眼镜零售肯定榜上有名。 从上市企业的财报数据来看,国内眼镜零售行业的首家上市公司——博士眼镜,2021年前三季度的平均毛利率超过60%;国内镜片第一股明月眼镜在2021年…

【C进阶】文件操作

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C语言进阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们…

小程序应用生命周期

小程序应用生命周期生命周期介绍应用生命周期钩子函数参数对象页面生命周期页面生命周期-页面参数组件生命周期生命周期介绍 定义 一个组件或者页面生老病死的过程一堆会在特定时期触发的函数 分类 应用生命周期页面生命周期组件生命周期 应用生命周期钩子函数 属性说明onL…

Xpath Helper 在新版Edge中的安装及解决快捷键冲突问题

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

vue2源码分析-keep-alive组件

简介 keep-alive是Vue.js的一个内置组件。它能够将指定的组件实例保存在内存中,而不是直接将其销毁,它是一个抽象组件,不会被渲染到真实DOM中,也不会出现在父组件链中。 具体用法咱们这里就不再细说了,今天主要是探讨…

JavaEE day2 初识web与HTML

初步了解相关知识 关于端口(port):一个端口同一时间只能被一个进程监听,但是一个进程可以监听多个端口 URL的标准格式:协议名称://主机/资源路径?查询字符串#文档片段 一般协议最常见的为htt…

Java基础之《netty(25)—handler链调用机制》

一、netty的handler的调用机制 1、使用自定义的编码器和解码器来说明netty的handler调用机制。 客户端发送long -> 服务器 服务端发送long -> 客户端 2、案例 二、客户端发送给服务端 1、服务端 NettyServer.java package netty.inboundhandlerAndOutboundhandler;i…

【C++】从0到1入门C++编程学习笔记 - 基础入门篇:程序流程结构

文章目录一、选择结构1.1 if 语句1.2 三目运算符1.3 switch语句二、循环结构2.1 while 循环语句2.2 do...while 循环语句2.3 for 循环语句2.4 嵌套循环三、跳转语句3.1 break 语句3.2 continue 语句3.3 goto 语句C/C支持最基本的三种程序运行结构:顺序结构、选择结构…

MySQL进阶——优化

1、选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快。因此,在创建表的时候,为了获得更好的性能,我们…

腾讯云HiFlow场景连接器 联动对象存储企业网盘,打通数据分发“最后一公里”

对云厂商和企业用户来说,随着数据规模的快速增长,企业除了对存储功能和性能的要求不断增加,也越来越注重数据分发的效率。在传统数据分发的过程中,数据管理员往往需要先在存储桶下载对应的客户方案/交付资料,再使用微信…

LINUX软中断-softirq

前言 关于linux的软中断的文章,在网上可以找到很多,但总觉着讲的都不够深入,打算自己写一下 软中断的感性认识 中断一旦被触发,本地cpu正在运行的不管是什么程序都要让路,让中断程序执行并且执行过程中不能被打断。…

分布式事务问题

4.2 分布式事务问题 4.2.1 什么是分布式事务 一次课程发布操作需要向数据库、redis、elasticsearch、MinIO写四份数据,这里存在分布式事务问题。 什么是分布式事务? 首先理解什么是本地事务? 平常我们在程序中通过spring去控制事务是利用…

Linux---进程优先级

目录 基本概念 查看系统进程 PRI and NI 用top命令更改已存在进程的nice: 其他概念 基本概念 cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很…

JNPF 3.4.5 快速开发框架源码目录截图 Gitee代码托管和研发协作平台

Gitee Gitee 除了提供最基础的 Git 代码托管之外,还提供代码在线查看、历史版本查看、Fork、Pull Request、打包下载任意版本、Issue、Wiki 、保护分支、代码质量检测、PaaS项目演示等方便管理、开发、协作、共享的功能。 作为一个应用项目,一般会有一…

flink环境参数引起的错误

环境参数:flink使用的版本是1.13.5、CentOS Linux 8一,默认环境引起本地与集群的jar包冲突遇到的情况是在idea执行的时候是没有问题的,然后打成jar包用集群执行的时候就会遇到问题。报错的时候会不太一,总之顺着错误去找的话会找到…

【力学性能预测】基于人工神经网络的钢板力学性能预测(附完整代码和数据集,系列3)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 Hello,大家好,我是augustqi。今天手把手带大家做一个机器学习实战项目:基于人工神经网络的钢板力学性能预测,或者称…

文本生成视频、AI临床知识理解、大模型有趣案例、智源社区《预训练周刊》第70期...

No.70智源社区预训练组预训练研究观点资源活动周刊订阅《预训练周刊》已经开启“订阅功能”,扫描下面二维码,进入《预训练周刊》主页,选择“关注TA”,即可收到推送消息。关于周刊本期周刊,我们选择了12篇来自国内外知名…