接入层架构演变
1、单体架构
- 请求过程
浏览器的请求通过 DNS Server 解析到指定的 IP 地址,浏览器通过 IP 地址访问 Web Server
- 缺点
当到达 Web Server 的性能瓶颈时(瓶颈受到CPU,内存,io,带宽影响),无法进行扩容,并且单体架构容易宕机
2、多机部署,DNS轮询
为解决单机架构的瓶颈问题,使用DNS轮询便于横向扩展
- 请求过程
浏览器的每次请求通过 DNS Server 会解析到不同的 IP 地址,浏览器通过不同的 IP 地址访问不同的 Web Server
- 缺点
DNS轮询只解析出对应的IP地址,但无法保证IP地址对应的服务是否是健康的;同样没解决单机的性能瓶颈问提
3、Nginx反向代理
中间加了一层反向代理层,以 Nginx 为例,对整个系统性能的提升是很明显的,只需要暴露一个外网 IP 地址,相比于DNS轮询方式,如果有一台 Web Server 宕了,此时 Nginx 就不会将请求转发给这台服务器
- 请求过程
浏览器的请求通过 DNS Server 解析到指定的 IP 地址,该 IP 地址对应的是反向代理层,此时将请求转发到身后的 Web Server 集群中
- 缺点
如果Nginx挂了,会倒是整个服务不可用,无法做到高可用
4、keepalive技术
对反向代理层进行改造,新部署一台 Nginx 服务,并使用 keepalive 技术提供相同的虚拟 IP (VIP),此时保障了 Nginx 的高可用。增加了 Nginx 的高可用性,其实 Nginx 此时还是单点使用,资源占用率只有 50%,存在资源浪费的现象
5、 Lvs/F5 + DNS 轮询
这种方法其实并不是解决 Nginx 的单点问题的,而是解决 Nginx 的性能问题的,因为 Nginx 只是软件层面的反向代理,而使用 Lvs 技术,或者 F5,它是实施在硬件层面的,性能相较于软件层面的 Nginx,抗压能力又上了一个新的台阶。并且几乎已经满足了所有公司的需求。
总结
(1)单体架构,要解决性能扩展问题,早期,使用DNS轮询架构;
(2)现在,可以使用nginx反向代理架构;
(3)反向代理,不高可用,需要进一步升级为高可用反向代理架构;
(4)高可用反向代理,扩充性能,可以使用多级(LVS&F5)反向代理架构;
(5)多级反向代理架构,扩充到无限性能,使用DNS轮询架构;
(6) DNS轮询,解决性能扩展问题;VIP+keepalived,解决高可用问题;