文章目录
- 垂直分库架构/分布式数据库
- 什么是垂直分库架构
- 架构模型
- 优缺点
- 优点
- 缺点
- 技术案例
- 分布式数据库
- 架构模型
- 优缺点
- 优点
- 缺点
- 技术案例
垂直分库架构/分布式数据库
什么是垂直分库架构
根据业务的模块划分, 将不同业务的数据放到不同的数据库中。 比如一个电子商城有商品业务, 用户业务, 交易业务。 那么数据库对应的里面有商品表, 用户表, 交易表。 那么采用垂直分库架构, 就是将里面的每一个业务板块的表作为单独的一个库:商品库, 用户库, 交易库。
架构模型
整个的流程就是用户想要访问一下交易服务, 但是交易服务可能要用到商品服务, 所以就去访问了一下商品服务, 然后商品服务去检查热点数据, 找到了, 就返回结果然后把服务结果返回给交易服务。 交易服务拿到结果后, 再去热点数据进行查找, 没找到,就又去冷库里面读取,然后读取到数据返回给用户。
优缺点
优点
- 减少了不同业务之间的资源竞争, 增加了索引的效率。
- 显著分担了并发请求, 增加了应对高并发尤其是写并发的能力。
- 减少了业务代码之间的耦合, 业务出现问题更容易定位问题的位置。
缺点
- 跨库查询困难, 无法直接使用JOIN
- 数据一致性问题, 比如订单库增加, 商品库就要减少。
- 系统的复杂性上升, 运维成本增加
技术案例
分布式数据库
分布式数据库架构是垂直分库架构的进一步演进。 垂直分库架构通过业务模块纵向拆分数据库。 而分布式数据库属于根据数据分片横向拆分数据库。同时分布式数据库还有多副本、分布式事务、负载均衡、一致性模型、透明性等特性。
- 分片: 分片就是在按照业务模块拆分的基础上。 对每一个业务数据库再划分为一个一个的子集,即进行横向扩展。就比如原本用户表、商品表都是使用一个主数据,多个从数据库。 现在将每个表划分为多个子集, 每个子集又有自己的主库和从库。
- 多副本:将每一个分片都设计成一个主从集群, 分布式数据库应用了读写分离架构架构来提高冗余和提高并发处理能力。
- 分布式事务: 对于垂直分库架构来说, 跨库事务是难点。 分布式数据库支持跨库的事务处理。 保证多个节点的(分片之间或者主从之间)的ACID。 这也说明分布式数据库具有一致性的特性, 比如TiDB的强一致性。
- 透明访问: 提供统一接口, 底层设计对上层透明。
- 负载均衡: 请求自动被分发给流量少的分片, 分片之间能够流量均衡。
架构模型
优缺点
优点
- 性能高, 高性能计算。
- 处理高并发, 海量数据能力非常强。
- 分片结构扩展能力非常强。
缺点
- 系统复杂度非常高, 硬件成本, 运维成本高昂。
- 一致性协议性能开销大, 分布式事务性能开销大。
- 分布式事务管理复杂。