大型网站技术架构_核心原理与案例分析笔记(二)

网站的高可用性架构:

网站的可用性不但要考虑实际的硬件故障引起的宕机,还要考虑网站升级发布引起的宕机,而后置更加频繁,不能因为系统可以接手偶尔的停机故障就降低可用性设计的标准。

高可用的应用:

负载均衡中或者集群中,session管理解决方法: 1. session复制; 2. session绑定(建立在http协议上,一单一台机器宕机则无法恢复,所以比较少用); 3. 利用cookie记录session(大小受限制,加大网络数据传输); 4. session服务器

高可用的服务:

1. 负载均衡; 2. 分级管理,超时设置,异步,服务降级,幂等性设计。

高可用的数据:

1. CAP原理(数据一致性consistency 数据可用性availablity 分区耐受性 patition tolerance); 2. 数据备份; 3. 失效转移。

高可用网站的软件质量保证:

1. 通过脚本发布网站,(负责均衡关闭一部分路由-》关闭应用-》更新代码=》启动服务=》复杂均衡开启这次机器的路由=》按次步骤循环完成发版); 2. 自动化测试; 3. 预发布测试; 4. 自动化发布; 5. 灰度发布。

网站运行监控:

1. 监控数据采集(日志监控,性能监控); 2. 监控管理;

网站的伸缩性架构:

 

应用服务器伸缩型设计:

1. http重定向负载均衡(302跳转,比较少用);
2. DNS域名解析负载均衡(区域性,通常dns下依然有负载均衡服务器);
3. 反向代理负载均衡(nginx);
4. IP负载均衡(均衡服务器网络带宽占用大 );
5. 数据链路层负载均衡(LVS,直接路由方式);

负载均衡算法:

1. 轮询;
2. 加权轮询;
3. 随机(和轮询有区别么)
4. 最少连接;
5. 源地址散列

分布式缓存服务器伸缩型设计:

1. memcached访问模型
2. memcached伸缩性问题(分配算法)
3. 一致性hash算法:环路设计,hash值寻找最近的节点(计算机领域有句话:计算机的任何问题都可以通过增加一个虚拟层来解决)

分布式存储服务器伸缩型设计:

1. 关系数据库集群的伸缩性设计(分库,主从复制,少用join);
2. 非关系型数据库的伸缩性设计(海量数据导致,放弃SQL和ACID,重视高可用性和可伸缩性)。

 

q1 q2