分库分表

1. 为什么需要分库分表 不管是 IO 瓶颈,还是 CPU 瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务 Service 来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1.1 IO 瓶颈 磁盘读 IO 瓶颈

Mysql 

redis 热点 key 和 大 key

参考文档: 【原创】谈谈redis的热key问题如何解决 JAVA秘籍之Redis BigKey 1. hot key 1.1 什么是热点 key 问题 其实 热 key 问题说来也很简单,就是瞬间有几十万的请求去访问 redis 上某个固定的 key,从而压垮缓存服务的情况。其实生活中也是有不少这

Redis 

redis 常见问题

参考文档:一文读懂Redis 1. 数据一致性 链接:数据一致性问题 在分布式环境下,缓存和数据库很容易出现数据一致性问题,如果项目对缓存的要求是强一致性,那就不要使用缓存。 我们只能在项目中使用策略降低缓存与数据库一致性的概率,是无法保障两者的强一致性,一般策略包括缓存更新机制,更新数据库后及时更

Redis 

redis 实现分布式锁

参考文档: Redis实现分布式锁 在单体应用中,如果我们对共享数据不进行加锁操作,会出现数据一致性问题,我们的解决办法通常是加锁。 在分布式架构中,我们同样会遇到数据共享操作问题,本文章使用 Redis 来解决分布式架构中的数据一致性问题。 1. 单机数据一致性 单机数据一致性架构如下图所示:多个

数据一致性问题

参考文档: 缓存和数据库到底先写哪个? 1. 引出问题 在数据库和缓存一致性问题上,有以下几个操作 先删缓存,再更新数据库 先更新数据库,再更新缓存 先更新数据库,再删缓存 第一种方式 这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存

redis 过期策略和内存淘汰策略

参考文档: redis 的过期策略都有哪些?内存淘汰机制都有哪些? Redis的数据过期清除策略 与 内存淘汰策略 Redis的LFU算法源码实现解析 1. 过期策略 Redis 是 key-value 数据库,我们可以设置 Redis 中缓存的 key 的过期时间。Redis 的过期策略就是指当

Redis 

binlog 和 redo log

参考文档:Sharding-Jdbc实现读写分离、分库分表,妙! 1. binlog binlog(归档日志) MySQL 整体来看就有两块:一块是 Server 层,主要做的是 MySQL 功能层面的事情;还有一块是引擎层,负责存储相关的具体事宜。redo log 是 InnoDB 引擎特有的日志

Mysql 

druid 教程

参考文献: [druid 常见问题](https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98) [池化技术(一)Druid是如何管理数据库连接的? ](https://www.cnblogs.com/ham

Druid 

druid 类图 属性表

参考文献:Druid-类图-属性表 本篇为「工具人」文章,建议直接用「ctrl+f」进行查找属性、方法、类名,快速了解其含义和所属类。 1. 类图 主要流程里主要涉及到的类名称、类属性、类方法如下图(淡黄色表示属性,淡蓝色表示方法): 2. DruidAbstractDataSource 抽象类 这

Druid 

druid 回收连接

// DruidPooledConnection 类的 close 方法 public void close() throws SQLException { //检查,因为该连接对象是抛出去给别的业务线程使用,也就是说并不受连接池本身管控,所以很可能存在多线程同时 close 的操作,因此这

Druid