摘要: 原文链接:DMA 与零拷贝技术 注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。 1. 数据的四次拷贝与四次上下文切换 很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用: File.read(file, buf, len); Sock 阅读全文
posted @ 2021-09-11 21:59 JMCui 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 我们介绍一种基于数据库维护自增 ID 区间,结合内存分配的策略,这也是淘宝的 TDDL 等数据库中间件使用的主键生成策略。 使用这种方式首先在数据库中创建 sequence 表,其中的每一行,用于记录某个业务主键当前已经被占用的 ID 区间的最大值。sequence 表的主要字段是 name 和 v 阅读全文
posted @ 2021-08-16 21:25 JMCui 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。 expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。-- 常用 refreshAfterWrite:当缓存项上一次更新操作之后的多久会被 阅读全文
posted @ 2021-08-12 12:55 JMCui 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 一、加锁发生了什么 //System.out.println都加了锁 public void println(String x) { synchronized (this) { print(x); newLine(); } } 简单加锁发生了什么? 要弄清楚加锁之后到底发生了什么需要看一下对象创建之 阅读全文
posted @ 2021-07-01 18:21 JMCui 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一、TCP TCP(Transmission Control Protocol),传输控制协议,对“传输、发送、通信”进行“控制”的协议,它充分地实现了数据传输时的各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。此外,TCP 是面向有连接的协议,只有在确认通信端存在时才会 阅读全文
posted @ 2021-04-14 19:07 JMCui 阅读(388) 评论(1) 推荐(0) 编辑
摘要: 1、在大型集群中每日宕机发生的概率为千分之一左右;在实践中,一台宕机的机器恢复时间通常认为是 24 小时。 2、由于网络数据丢失的异常存在,直接决定了分布式系统的协议必须能处理网络数据丢失的情况。 3、如果某些节点的直接的网络通信正常或丢包率在合理范围内,而某些节点之间始终无法正常通信,则称这种特殊 阅读全文
posted @ 2021-04-10 11:25 JMCui 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 一、简介 Paxos 协议是少数在工程实践中证实的强一致性、高可用的去中心化分布式协议。Google 的很多大型分布式系统都采用了 Paxos 算法来解决分布式一致性问题,如 Chubby、Megastore 以及 Spanner 等。开源的 ZooKeeper 以及 MySQL 5.7 推出的用来 阅读全文
posted @ 2021-04-10 10:23 JMCui 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 一、Lease 机制 Lease 机制是最重要的分布式协议,广泛应用于各种实际的分布式系统中。即使在某些系统中相似的设计不被称为 Lease,但我们可以分析发现其本质就是一种 Lease 的实现。 Lease 机制的定义如下:lease 是由颁发者授予的在某一有效期内的承诺。颁发者一旦发出 leas 阅读全文
posted @ 2021-04-07 15:37 JMCui 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 一、Rowkey 优化 Rowkey 是行的主键,它是以字典顺序排序的。所以 Rowkey 的设计是至关重要的, 关系到你应用层的查询效率。 整规化 Rowkey 有时作为 Rowkey 的字段长度不一样,比如 user_id, 而通过对 Rowkey 进行规整化,能够避免 Rowkey 长度不一致 阅读全文
posted @ 2021-04-02 18:15 JMCui 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 一、HBase 是什么? HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统” 。就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样 阅读全文
posted @ 2021-04-01 16:24 JMCui 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 一、简介 接着上篇 数据库事务简介,来聊聊 Spring 事务。 Spring 本身并不实现事务,Spring 事务的本质还是底层数据库对事务的支持,没有数据库事务的支持,Spring 事务就不会生效。 Spring 事务提供了一套抽象的事务管理,并且结合 Spring IOC 和 Spring A 阅读全文
posted @ 2021-03-31 18:15 JMCui 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 一、MySQL 体系架构和存储引擎 1、MySQL 被设计成一个单进程多线程架构的数据库,MySQL 数据库实例在系统上的表现就是一个进程。 2、MySQL 的体系架构,需要特别注意的是,存储引擎是基于表的,而不是数据库。 3、InnoDB 存储引擎是面向在线事务处理(OLTP)应用的首选,其特点是 阅读全文
posted @ 2021-02-25 20:25 JMCui 阅读(96) 评论(1) 推荐(0) 编辑
摘要: 一、事务分类 事务是访问并更新数据库中各种数据项的一个程序执行单元,事务会把数据库从一种一致状态转换为另一种一致状态,这就是事务的目的,也是事务模型区别与文件系统的重要特性之一。 InnoDB 存储引擎中的事务(READ REPEATABLE 隔离级别)完全符合 ACID 的特性。ACID 是以下 阅读全文
posted @ 2021-02-24 20:05 JMCui 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 一、概述 分布式 ID 生成算法的有很多种,Twitter 的 SnowFlake 就是其中经典的一种。 SnowFlake 算法生成 ID 的结果是一个 64bit 大小的整数,它的结构如下图: 1 位,不用。二进制中最高位为 1 的都是负数,但是我们生成的 id 一般都使用整数,所以这个最高位固 阅读全文
posted @ 2021-01-21 09:47 JMCui 阅读(754) 评论(1) 推荐(2) 编辑
摘要: 一、锁的类型 InnoDB 存储引擎 lock 的对象是事务,用来锁定的是数据库中的对象,如表、页、行,并且一般 lock 的对象仅在事务 commit 或 rollback 后进行释放(不同事务隔离级别释放的时间可能不同)。 InnoDB 存储引擎实现了如下两种标准的行级锁,其中,X 锁与任何的锁 阅读全文
posted @ 2021-01-05 10:55 JMCui 阅读(350) 评论(0) 推荐(0) 编辑