Skip to content

Commit b075e5c

Browse files
committed
improve
1 parent 22d526e commit b075e5c

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

201707/20170713_01.md

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,32 @@ PostgreSQL , MySQL , 三节点版 , 金融数据库 , Raft , 分布式共享存
7272
性能怎么样呢?
7373

7474
## 三节点 vs 2节点 vs 单节点
75-
阿里云RDS目前提供了单节点、双节点、三节点几种形态的产品。
76-
77-
1、单节点,主打经济实用,虽然是单节点,但是数据存储依旧是有多份的,备份和时间点恢复一个都不少。
78-
79-
2、双节点,相比单节点具备更高的可用性,主机故障带来的故障时间更短,但是采用的是异步(同步可降级模式)模式,可靠性在定义的SLA范围内(无法做到0丢失)。
80-
81-
3、三节点,具备可用性的同时,还具备可靠性(数据0丢失),是金融级的最佳选择。
82-
83-
下面分别对比三种形态的性能,给用户一个参考,用户有个直观的认识。
84-
75+
阿里云RDS目前提供了单节点、双节点、三节点几种形态的产品。
76+
77+
1、单节点,主打经济实用,虽然是单节点,但是数据存储依旧是有多份的,备份和时间点恢复一个都不少。
78+
79+
2、双节点,经典的一主一备架构,相比单节点可以做到更高的可用性和可靠性,但是两个节点的可用性和可靠性不可兼得(如果采用同步模式则失去了可用性,而采用异步模式则失去了可靠性。还好PostgreSQL提供了事务级可控的模式设置)。所以有了三节点。
80+
81+
3、三节点,具备可用性的同时,还具备可靠性(多副本强同步模式,数据0丢失),是企业核心数据库、金融级业务的最佳选择。
82+
83+
在PostgreSQL中,同步模式为事务级可控,目前包含:
84+
85+
异步(到达wal buffer)、本地fsync(持久化)、本地持久化+备库write(到达os buffer)、本地fsync(持久化)+备库fsync(持久化)、本地持久化+备库apply(WAL应用)。
86+
87+
在PostgreSQL中,副本数全局可控,目前包含:
88+
89+
```
90+
{FIRST | ANY } num {(standby_name1 , .... ) | (*) }
91+
```
92+
93+
FIRST为经典模式,排在前面的num个STANDBY为同步备,后面的为候选同步备。
94+
95+
ANY为quorum based模式,表示所有节点都是同步备,到达num指定的足够副本数即可。
96+
97+
根据不同的 "同步模式+副本数" 组合,可以根据业务需求,形成非常灵活的数据库HA架构。
98+
99+
下面分别对比三种形态的性能,给用户一个参考,用户有个直观的认识。
100+
85101
## 测试环境
86102
87103
1、双节点配置:
@@ -439,7 +455,7 @@ PostgreSQL,通过WAL的物理式复制同步备库。产生多少WAL就复制
439455
MySQL,通过binlog进行复制同步备库。主库上没有结束的事务,binlog不会发给备库,因此备库的延迟和事务大小直接相关。事务越大(指产生影响的ROW越多的事务),产生的BINLOG越多,事务提交的RT越高,延迟越严重。MySQL业务应尽量避免大事务。
440456

441457
## 小结
442-
从测试结果不难发现,三节点与双节点的读性能几乎一致,而三节点写事务性能相比双节点略低一丁点(5%左右),换来的是鱼与熊掌兼得(高可用和高可靠)。阿里云RDS(三节点版)已成为金融用户的最佳选择
458+
从测试结果不难发现,三节点与双节点的读性能几乎一致,而三节点写事务性能相比双节点略低一丁点(5%左右),换来的是鱼与熊掌兼得(高可用和高可靠)。阿里云RDS(三节点版)已成为金融级用户的最佳选择
443459

444460
三节点的性能影响主要来自事务提交后,等待WAL或binlog发送给备库,收到ACK需要多久。PostgreSQL和MySQL的差异如上所述。
445461

0 commit comments

Comments
 (0)