A New Start

接入层进化史的一些思考

2019年的第一天,写点啥呢?其实满脑子的idea,那就花一年时间慢慢写吧,第一篇就先阐述下自己对接入层架构演变的一些个人思考吧。

一、演进过程的思考

1、单体架构

过程
1)浏览器的请求通过 DNS Server 解析到指定的 IP 地址
2)浏览器通过 IP 地址访问 Web Server

缺点
1)当到达 Web Server 的性能瓶颈时,无法扩容
2)当 Web Server 宕机后整个系统就挂了

2、DNS 轮询

说明
为了解决 Web Server 的性能瓶颈问题,于是进行了横向扩展,于是最简单的 DNS 轮询便派上了用场。

过程
1)浏览器的每次请求通过 DNS Server 会解析到不同的 IP 地址
2)浏览器通过不同的 IP 地址访问不同的 Web Server

优点
1)简单并且零成本,只需要增加 DNS Server 的 IP 解析地址即可
2)解决了 Web Server 性能瓶颈的问题

缺点
1)暴露了太多的外网 IP
2)DNS 的解析需要一定的生效时间
3)如果有一台 Web Server 宕了,但是此时的 DNS Server 并不知道,所以会对部分功能模块产生影响

3、反向代理

说明
中间加了一层反向代理层,以 Nginx 为例,对整个系统性能的提升是很明显的。

过程
1) 浏览器的请求通过 DNS Server 解析到指定的 IP 地址
2)该 IP 地址对应的是反向代理层,此时将请求转发到身后的 Web Server 集群中

优点
1)只需要暴露一个外网 IP 地址即可
2)如果有一台 Web Server 宕了,此时 Nginx 就不会将请求转发给这台服务器
3)Web Server 扩展变得更加简单

缺点
1)Nginx 变成了单点,如果出故障,则整个服务变得不可用
2)因为多了一个请求转发的过程,请求时间略微增大

4、keepalive

说明
对反向代理层进行改造,新部署一台 Nginx 服务,并使用 keepalive 技术提供相同的虚拟 IP (VIP),此时保障了 Nginx 的高可用。

优点
1)增加了 Nginx 的高可用性

缺点
1)其实 Nginx 此时还是单点使用,资源占用率只有 50%,存在资源浪费的现象

5、Lvs/F5

说明
这种方法其实并不是解决 Nginx 的单点问题的,而是解决 Nginx 的性能问题的,因为 Nginx 只是软件层面的反向代理,而使用 Lvs 技术,或者 F5,它是实施在硬件层面的,性能相较于软件层面的 Nginx,抗压能力又上了一个新的台阶。并且几乎已经满足了所有公司的需求。

缺点
1)成本变高,F5 需要进行购买
2)比如百度、Google 等日PV超级大的系统,瓶颈还是会出现在反向代理层

6、 Lvs/F5 + DNS 轮询

说明
其实不管是 Nginx 也好,F5 也好,最终都是有性能瓶颈的,最好的解决办法仍然是水平扩展,一台不行我上两台不就好了,两台不行我就上三台,所以最终的方案还是使用 DNS 轮询来解决。

二、总结

1、谈一谈反向代理层:方向代理层是服务端的统一入口,屏蔽了服务端的所有细节,性能很重要
2、关于负载均衡:负载均衡的算法多种多样,比如 IP 哈希、轮询、增加权重等
3、所有所有的一切,都围绕着很重要的一个点:高可用
4、很多时候问题的解决,还是需要使用到最最基本的技术,所有的轮子都是建立在基础之上的
5、技术永远没有最好,只有更高,更新迭代的速度是很快的,所以我们都需要永远保持一颗对新技术的探索的好奇心

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注