架构师-第二阶段:接入层架构
1、反向代理与接入层扩容
- 用什么做反向代理?
- 软件层面:nginx/apache
- 操作系统层面:LVS
- 硬件:F5
- 反向代理解决什么问题?
- 子 web系统的性能,不再受到单台机器资源限制,可以扩展
- 子 web系统,实现了高可用(由原来的伪集群,变成了高可用的真集群)
- 反向代理,如何实施负载均衡
- 负载均衡方法:随机、轮询、静态权重轮询、动态权重轮询、一致性哈希
- 负载均衡抓手:四层(转发/交换),七层(转发/交换)
- 反向代理如何包装高可用
2、DNS轮询,接入层架构演进
- 什么是 dns 轮询(每次解析到不同的 ip)
- DNS轮询的不足
- 非高可用
- 扩容不是实时的,因为解析需要时间
- 暴露太多外网 ip,安全性受到影响
- 多层高可用反向代理
多层高可用反向代理+DNS 轮询,可以达到更大的处理能力
3、session一致性,N种架构方案
- 反向代理架构,保证高可用的同时,如何保证 session路由的一致性呢?
- 方案一:session 同步法,每个 webserver 之间同步 session,但是这个方法会急剧影响性能
- 客户端存储法:webserver 不需要存储 session,每次请求会携带 session,存在 cookie 限制和安全风险
- 反向代理 hash 一致性
- 后端统一存储法,放在 redis 里是最好的方法,可以提高吞吐量
4、CDN如何实现就近访问
- 什么是 CDN(Content Delivery Network)?请访问CDN
- 就近访问,是通过“智能DNS”来实现的
如何解决数据冗余版本不同的问题?使用版本号
5、TCP接入,架构设计
- 客户端+webserver(get-tcp-ip)+tcp集群,webserver 拉取 tcp 集群可用性,并返回可用的 ip 地址
- 总结