You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
4.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 分布式数据库
## 1. 基础
### 1.1 什么是分布式数据库?
- 由表及里、由外到内是人们认识事物的普遍规律,所以我们让也从内外部两个视角来观察。
- 外部视角:外部特性
- 外部视角,就是看看分布式数据库具备哪些特性,能解决什么问题。
- 业务应用系统可以按照交易类型分为联机交易OLTP场景和联机分析OLAP场景两大类。OLTP 是面向交易的处理过程,单笔交易的数据量小,但是要在很短的时间内
给出结果,典型场景包括购物、缴费、转账等;而 OLAP 场景通常是基于大数据集的运算,典型场景包括生成个人年度账单和企业财务报表等。
- 定义 1.0 OLTP 关系型数据库
- OLTP 场景的通常有三个特点:
- **写多读少**,而且读操作的复杂度较低,一般不涉及大数据集的汇总计算;
- **低延时**,用户对于延时的容忍度较低,通常在 500 毫秒以内,稍微放大一些也就是秒级,超过 5 秒的延时通常是无法接受的;
- **高并发**,并发量随着业务量而增长,没有理论上限。
- **分布式数据库是服务于写多读少、低延时、高并发的 OLTP 场景的数据库。**
- 定义 2.0 + 海量并发
- 这个“海量并发”的下限大致是 10,000TPS
- 基于这些理解,我们可以再得到一个 2.0 版本的定义:**分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的关系型数据库**。
- 定义 3.0 + 高可靠
- 可靠性还要更复杂一点包括两个度量指标恢复时间目标Recovery Time Objective, RTO和恢复点目标Recovery Point Objective,
RPO。RTO 是指故障恢复所花费的时间可以等同于可靠性RPO 则是指恢复服务后丢失数据的数量。
- 数据库高可靠意味着 RPO 等于 0RTO 小于 5 分钟。
- 3.0 版本的定义,**分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,高可靠的关系型数据库**。
- 定义 4.0 + 海量存储
- 最后,我们终于得到一个 4.0 终极版本的定义,**分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,具备海量数据存储能力和高可靠性的关系型数据库**。
- 内部视角:内部构成
- 4.0 版本的定义很相似。但是,它们向用户暴露了太多的内部复杂性。在我看来,对用户约束太多、使用过程太复杂、不够内聚的方案,不能称为成熟的产品。
- 客户端组件 + 单体数据库
- 通过独立的逻辑层建立数据分片和路由规则,实现单体数据库的初步管理,使应用能够对接多个单体数据库,实现并发、存储能力的扩展。其作为应用系统的一部分,对业务侵入
较为深。
- 这种客户端组件的典型产品是 Sharding-JDBC。
- ![分布式数据库ShardingJDBC](pic/分布式数据库ShardingJDBC.png)
- 代理中间件 + 单体数据库
- 以独立中间件的方式,管理数据规则和路由规则,以独立进程存在,与业务应用层和单体数据库相隔离,减少了对应用的影响。随着代理中间件的发展,还会衍生出部分分布式事
务处理能力。这种中间件的典型产品是 MyCat。
- ![分布式数据库MyCAT](pic/分布式数据库MyCAT.png
- 单元化架构 + 单体数据库
- 单元化架构是对业务应用系统的彻底重构,应用系统被拆分成若干实例,配置独立的单体数据库,让每个实例管理一定范围的数据。例如对于银行贷款系统,可以为每个支行搭建
独立的应用实例,管理支行各自的用户,当出现跨支行业务时,由应用层代码通过分布式事务组件保证事务的 ACID 特性。
- ![分布式数据库单元化架构](pic/分布式数据库单元化架构.png)
- 根据不同的分布式事务模型,应用系统要配合改造,复杂性也相应增加。例如 TCC 模型下,应用必须能够提供幂等操作。
- 在分布式数据库出现前,一些头部互联网公司使用过这种架构风格,该方案的应用系统的改造量最大,实施难度也最高。
- **分布式数据库则是将技术细节收敛到产品内部,以一个整体面对业务应用**。