数据库读写分离
以前单体架构里读写都是在一个库上操作,数据强一致性,但一个业务出现问题,将会导致整个数据库崩溃,影响其他业务正常使用。
分布式架构解决单体架构的问题,多个业务对数据库的操作大部分读多写少,把数据库拆分成读库和写库,把业务隔离开,避免一个业务故障导致整个系统挂掉。
CQRS命令与查询职责分离
命令指的是增,删,改,查询指的是查。命令不会返回数据,只会返回执行结果。查询返回数据结果,不会修改数据。
好处:
- 分工明确
- 高度灵活性,防止出现CRUD问题
- 知道哪些操作导致系统状态变化
- 从数据驱动转到任务驱动,记录不可修改事件,通过回溯得到数据的状态
分库分表
数据库操作
我们做业务操作,减少数据库的做关联查询,搜索操作可以用ElasticSearch查询,做数据报表可以用Hadoop。
数据库数据大小
数据太多我们要对数据库做分库分表,有一些规则可以帮助我们,按地理位置,日期,范围,哈希散列。
数据分片
水平分片
垂直分片
把重要的字段和不重要的字段分成两张表,不重要字段表查询速度快,重要字段表需要经常修改。