前提
1、必须保证数据一致的(要做好主从)
写操作——》主库
读操作——》从库
2、而数据库的主从有多种方案
- 双主
- 双主+多从(每个主下挂多个从)
- 一主多从+MHA(一个主库挂掉后,MHA会帮你从所有从库里选举出一个新主,自动帮你从库都指向新主)
读写分离+负载均衡
做好主从之后,下一件事就是要做:读写分离+负载均衡
案例1:LVS—-》代理数据库
1、做负载均衡
负载多个主库—-》提供一个写地址(lvs机器的地址)
负载多个从库—-》提供一个读地址(lvs机器的地址)
2、应用软件
代码需要支持两个地址(读写操作要分开用不同的地址)
案例2: 数据库中间件—-》代理数据库
1、中间件
中间件会帮我们做好读写分离,即中间件对外只提供一个地址
2、应用软件
代码只需支持一个地址就行(读写操作都用这一个地址)
总结
解决架构问题的一种重要的思想:分离(把问题细分出来,抽离成单独的层)