第89篇
极客时间《从0开始学架构》课程笔记。
标准技术框架
负载均衡
1、DNS
- 最简单最常见的负载均衡方式,一般实现地理级别的均衡
- 一般不会使用 DNS 做机器级别的负载均衡,因为太耗费 IP 资源
- DNS 负载均衡的优点是通用(全球通用)、成本低(申请域名,注册 DNS 即可)
- 缺点是DNS 缓存的时间比较长,即使将某台业务机器从 DNS 服务器上删除,由于缓存的原因,还是有很多用户会继续访问已经被删除的机器
- 另外DNS 不够灵活。DNS 不能感知后端服务器的状态,只能根据配置策略进行负载均衡,无法做到更加灵活的负载均衡策略
- 对于时延和故障敏感的业务,可以尝试实现HTTP-DNS,即使用 HTTP 协议实现一个私有的 DNS 系统。HTTP-DNS 主要应用在通过 App 提供服务的业务
- HTTP-DNS的优点是灵活、可控、及时,但缺点是开发成本高、对APP有侵入性
2、Nginx、LVS、F5
- Nginx、LVS、F5 用于同一地点内机器级别的负载均衡
- Nginx 是软件的 7 层负载均衡,LVS 是内核的 4 层负载均衡,F5 是硬件的 4 层负载均衡
- 软件和硬件的区别就在于性能,硬件远远高于软件,F5>LVS>Nginx
- 4 层和 7 层的区别就在于协议和灵活性。Nginx 支持 HTTP、E-mail 协议,而 LVS 和 F5 是 4 层负载均衡,和协议无关
CDN
- CDN 是为了解决用户网络访问时的“最后一公里”效应,即将内容缓存在离用户最近的地方,用户访问的是缓存的内容
- CND目前包括很多内容,形成了很庞大的体系:分布式存储、全局负载均衡、网络重定向、流量控制等都属于 CDN 的范畴,尤其是在视频、直播等领域应用非常多
- CDN 作为网络的基础服务,独立搭建的成本巨大,不需要自行设计和搭建 CDN 系统,直接从 CDN 服务商购买 CDN 服务即可
- 常见CDN服务商:网宿、蓝汛、阿里云、腾讯云
多机房
- 单机房在全局来说,就是网络单点,在发生较大故障或灾害时无法保证业务高可用
- 常见多机房设计策略有3种,同城多机房、跨城多机房、跨国多机房
- 同城多机房对业务影响小,但投入较大,而且在极端情况下依然有风险
- 跨城多机房因为距离远存在网络时延,所以在业务上需要妥协,不能保证数据的实时强一致性,只是保证最终一致性
多中心
- 多中心必须以多机房为前提,是比多机房更复杂更难的设计策略
- 多机房的主要目标是灾备,在机房故障时,可以比较快地将业务切换对另外一个机房,切换允许一定时间的中断,且业务可能有损失
- 多中心的要求是每个中心都同时对外提供服务,且业务能够自动在多中心之间切换,故障后叶不需人工参与或很少人工参与就能自动恢复
- 多中心设计的关键就在于“数据一致性”和“数据事务性”如何保证,这两个难点都和业务紧密相关,需要基于业务的特性进行详细的分析和设计
- 因为多中心设计的复杂性,部分业务不能实现多中心,如银行、支付宝这类系统就没有完全实现多中心