读写分离(Read/Write Splitting)是提升数据库系统性能、扩展性和可用性的常用架构方案。下面从设计目标、总体架构、关键设计点、常见方案、注意事项、典型示例几个方面系统说明。
读写分离的核心目的是:
应用层
|
读写分离中间件 / 客户端逻辑
|
-------------------
| |
主库(写) 从库(读)
(Master) (Slave / Replica)
常见方式:
| 数据库 | 同步方式 |
|---|---|
| MySQL | 主从复制(binlog) |
| PostgreSQL | WAL 复制 |
| Oracle | Data Guard |
| SQL Server | AlwaysOn / 复制 |
同步模式:
✅ 大多数互联网系统选择 异步复制 + 容忍短暂延迟
SELECT → 从库INSERT / UPDATE / DELETE → 主库⚠️ 注意:
例如:
/* FORCE_MASTER */ SELECT * FROM orders;
用于:
✅ 解决方案:
如:
✅ 优点:
❌ 缺点:
✅ 优点:
❌ 缺点:
application.yml
dataSources:
master:
slave1:
slave2:
@Transactional
public void createOrder() {
// 主库
}
@ReadOnly
public Order getOrder() {
// 从库
}
一个成熟的读写分离设计应包含:
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。