多台机器上的多个系统合作就是分布式系统。
完成相同任务的系统被部署在一台或者多台机器上组成集群。
分布式的目的是为了高并发,高可用,可以更好的地利用资源。
高并发靠水平扩展,异步解耦,消息堆积,缓存。
高可用靠冗余备份,自动故障转移。
数据库层面的高可用与高并发有以下要点:
1. 读写分离,常用一主多从,主库用于写数据,从库用于读数据,主从同步保证数据一致性。这种设计提高了数据库读数据的性能以及读库的高可用。写库依然是单点。
2. 写库冗余,双主库多从库设计,双主库进行双向同步,双主库会因为主键ID自增出现数据库数据不一致,可以自增时设置不同初始值,相同步长。也可以在业务层使用分布式ID的方案,用改ID作为数据库主键。另外一种双主的做法,双主库一个写,一个做冗余,实现高可用,策略是使用keepalived和虚IP漂移,会出现数据不一致。内网DNS探测,延时切换可以保证数据一致性。
3. 分库分表,数据库水平拆分。
分布式系统需要考虑数据一致性。
网友评论