avatar
文章
162
标签
107
分类
5

首页
分类
友链
说说
Doraemon's Blog
搜索
首页
分类
友链
说说

Doraemon's Blog

分布式 ID 的生成方案
发表于2025-09-20|记录|分布式 ID•雪花算法•UUID•数据库
为什么需要分布式 ID?拿MySQL数据库举个栗子: 在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。 但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求,例如 user0 和 user1 两张表生成的 userid 如果采用自增 ID,会导致重复;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。 那么分布式ID需要满足那些条件? 全局唯一:必须保证ID是全局性唯一的,基本要求。 高性能:高可用低延时,ID生成响应要块,否则反倒会成为业务瓶颈。 高可用:100%的可用性是骗人的,但是也要无限接近于100%的可用性。 好接入:要秉着拿来即用的设计原则,在系统设计和实现上要尽可能的简单。 趋势递增:最好趋势递增,这个要求就得看具体业务场景了,一般不严格要求。 分布式 ID 的生成方案 UUID 数据库自增ID 数据库多主模式 号段模式 Redis ...
分布式事务
发表于2025-09-19|记录|分布式事务•数据一致性
解决什么问题?我们都知道数据库可以通过事务来保证原子性操作,但实际场景中存在多个 DB实例或者微服务,例如扣减余额和扣减库存,如果余额和库存不在同一个 DB 实例中我们又该如何保证原子性操作?这就是分布式事务的概念。 首先需要铺垫一些理论: CAP 理论CAP 定理是分布式系统中的一个重要定理,它指出在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个特性不能同时满足,最多只能满足其中两个。以下是对这三个特性的详细解释: 一致性(Consistency):在分布式系统中,一致性指的是所有节点在同一时间具有相同的数据。也就是说,当一个数据在某个节点上被更新后,这个更新能够迅速传播到其他节点,使得所有节点都能看到最新的数据,就好像整个系统只有一个数据副本一样。例如,在一个分布式数据库中,如果一个用户在节点 A 上修改了一条记录,那么其他节点在查询该记录时,应该能够立即看到修改后的结果。 可用性(Availability):可用性意味着系统中的每个请求都能得到响应,而不会出现长时间的等待或系统崩 ...
秋招-操作系统篇
发表于2025-09-17|记录|操作系统•内核•进程与线程
Unix什么叫一切皆文件这个是 Unix 的一个核心哲学,我给你拆开讲: “一切皆文件”是什么意思 在 Unix 系统里,几乎所有东西都用“文件”这种统一接口来访问: 普通文件:磁盘上的文本、二进制文件 目录:其实是存储文件名到 inode 的映射表 设备:键盘、显示器、硬盘、网卡都被抽象成“特殊文件”,放在 /dev 下 管道、FIFO、Socket:进程间通信对象,也以文件描述符的方式访问 甚至内核接口:比如 /proc、/sys 里的伪文件,用来读取系统信息 所以用户态只需要 open() / read() / write() / close() 这一套 API,就能操作各种资源,而不用关心底层差异。 为什么要这样设计 核心是抽象统一性: 简化接口:程序员不需要学习 N 套 API,读写磁盘和读写串口本质上没区别。 提高可移植性:应用只依赖标准文件 API,不管硬件怎么变,内核保证兼容。 增强组合性:因为统一成“文件”,就能用管道把命令组合起来(ls | grep txt | wc -l),这就是 Unix 强大的“工具拼装哲学”。 一个例子 🌰 打开一个磁盘 ...
利用云服务器搭建 vpn
发表于2025-09-14
Java的线程池
发表于2025-03-03|记录|线程池
讲解了java中常见的线程池区别和使用方法
JAVA的三种IO模型
发表于2025-03-02|记录|AIO•NIO•BIO
本文介绍了JAVA中的三种IO模型原理,以及优缺点
事务隔离级别及实现方式
发表于2025-02-27|记录|事务隔离•MVCC
前置知识按锁的粒度分类 记录锁(Record Lock):属于单个行记录上的锁。 间隙锁(Gap Lock):锁定一个范围,不包括记录本身,间隙锁之间不冲突,不分排他和共享。 临键锁(Next-Key Lock):Record Lock+Gap Lock,锁定一个范围,包含记录本身,主要目的是为了解决幻读问题(MySQL 事务部分提到过)。记录锁只能锁住已经存在的记录,为了避免插入新记录,需要依赖间隙锁,左开右闭。 在 InnoDB 默认的隔离级别 REPEATABLE-READ 下,行锁默认使用的是 Next-Key Lock。但是,如果操作的索引是唯一索引或主键,InnoDB 会对 Next-Key Lock 进行优化,将其降级为 Record Lock,即仅锁住索引本身,而不是范围。 表级锁:锁定整张表。 这里只提一点,行级锁锁住的是索引字段,而表级锁才是在物理存储上锁住了表,没有命中唯一索引或者索引失效的话,就会导致扫描全表对表中的所有行记录进行加锁。不过,很多时候即使用了索引也有可能会走全表扫描,这是因为 MySQL 优化器的原因,一些情况下全表扫描更快,比如索引碎 ...
类的加载
发表于2025-02-27|记录|类的加载过程
讲解了Class的文件结构、OOP-KLASS模型、类的生命周期、类的加载器、双亲委派模型
sql语法
发表于2025-02-25|记录|sql语法
记录了与sql相关的语法
动态代理:灵活控制方法调用的艺术
发表于2025-02-25|记录|动态代理
动态代理相较于静态代理不需要创建代理类,代码更加灵活
12…17
avatar
Doraemon
记录成长经历
文章
162
标签
107
分类
5
Follow Me
公告
纵岁月在笔尖洇开深浅,初心始终是砚台上那方不涸的墨。
最新文章
分布式 ID 的生成方案
分布式 ID 的生成方案2025-09-20
分布式事务
分布式事务2025-09-19
秋招-操作系统篇
秋招-操作系统篇2025-09-17
利用云服务器搭建 vpn
利用云服务器搭建 vpn2025-09-14
Java的线程池
Java的线程池2025-03-03
最新评论
正在加载中...
分类
  • 技术8
  • 生活5
  • 算法88
  • 记录21
  • 题目36
标签
线段树+欧拉函数 AIO kmeans 强化学习 hexo 笔试 凸包 雪花算法 高精 背包 状压+前缀异或和 动态规划 分布式 ID 信息安全 操作系统 ACM冷知识 题目 文件读写 类的加载过程 STL 全排列 Leetcode BIO A*算法 miniob dfs 可持久化系列 异或题 单调栈 二进制 win10 三分 事务隔离 数据一致性 算法 图论 BFS 考研 div3 随笔
归档
  • 九月 20254
  • 三月 20252
  • 二月 20255
  • 一月 20251
  • 九月 20243
  • 八月 20242
  • 七月 20242
  • 二月 20242
网站资讯
文章数目 :
162
已运行时间 :
本站总字数 :
251.9k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Doraemon
框架 Hexo|主题 Butterfly
Hi, welcome to my blog!
搜索
数据库加载中