第六部分 构建高可用的系统

单点现象:指系统部署在单个机器上,一旦这个机器出现问题(硬件损坏、网络不通等),系统就不可用。

避免单点现象的方法:
负载均衡、热备、使用多机房

热备,也可以理解为高可用
keepalived +lvs(linux虚拟机)+ngnix

使用多机房的难题
1.跨机房的状态同步(保证多master数据的一致性)

2.两阶段提交(2PC)保持一致性

3.三阶段提交(3PC)保持一致性

4.基于Paxos保持一致性(只要大多数master反馈成功即可,不必所以)

第七部分 构建可伸缩的系统

垂直伸缩,指通过升级或者增加单台机器的硬件来支撑访问量及数据量增长的方式。
水平伸缩,指通过增加机器来支撑访问量以及数据量增长的方式。

垂直伸缩

增加CPU、增加内存

水平伸缩

缓存状态的水平伸缩方法
1.广播同步:实现集群中节点内存信息的一致性,具有一定的延迟。
2.分布式缓存:如实现免密登录,常用的memcached、redis

文件的水平伸缩方法
1.直连式存储(性能差,成本高)
2.网络存储(读写速度慢)
3.分布式文件系统(hdfs 、Fastdfs)

应用的水平伸缩方法
1.缓存:页面静态化、页面片段缓存、数据缓存
2.分库:根据业务分成不同的数据库
3.异步数据库访问:使用Netty可以提升数据库访问性能 (使用非阻塞或异步IO 能较快的反馈结果)
4.使用DAL作为服务器和数据库的中间件从而降低连接数
5.分布式数据库,复制slave库 达到读写分离 (Mysql replication or Oracle standby,Mysql支持对称复制和非对称复制(生产特定子表))

Java分布式应用:构建高可用系统与构建可伸缩系统_高可用系统