嘎里三分熟
  • 首页
  • JMusic
  • TSBay
  • 常用工具
  • About Me
  • 留言板
一行代码一世浮生
  1. 首页
  2. 技术分析集
  3. 正文

接入层进化史的一些思考

2019年01月02日 1513点热度 6人点赞 0条评论

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、技术永远没有最好,只有更高,更新迭代的速度是很快的,所以我们都需要永远保持一颗对新技术的探索的好奇心

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: DNS轮询 F5 keepalive nginx 反向代理 负载均衡 高可用
最后更新:2019年01月02日

GoldenJet

爱折腾技术的90后漫威小死忠程序员一枚

点赞
下一篇 >

文章评论

取消回复

通过电子邮件订阅博客

分类目录
  • BootStrap (2)
  • Bug集中营 (6)
  • Java web (3)
  • JavaScript (7)
  • Java基础 (17)
  • Java工具 (5)
  • Linux (3)
  • Python (3)
  • SpringBoot (14)
  • Spring基础 (8)
  • thymeleaf (1)
  • 娱乐 (3)
  • 小谈 (2)
  • 常用工具 (7)
  • 技术分析集 (5)
  • 技能 (10)
  • 源码 (4)
  • 科普类 (1)
  • 算法 (9)
  • 踩坑记 (5)
文章归档
  • 2020年11月 (1)
  • 2020年7月 (1)
  • 2020年4月 (2)
  • 2020年3月 (1)
  • 2020年1月 (1)
  • 2019年11月 (1)
  • 2019年10月 (1)
  • 2019年9月 (1)
  • 2019年8月 (1)
  • 2019年7月 (2)
  • 2019年5月 (2)
  • 2019年4月 (2)
  • 2019年3月 (3)
  • 2019年2月 (2)
  • 2019年1月 (2)
  • 2018年12月 (2)
  • 2018年11月 (3)
  • 2018年10月 (3)
  • 2018年9月 (2)
  • 2018年8月 (3)
  • 2018年7月 (2)
  • 2018年5月 (1)
  • 2018年4月 (3)
  • 2018年3月 (2)
  • 2018年2月 (3)
  • 2018年1月 (5)
  • 2017年12月 (2)
  • 2017年11月 (3)
  • 2017年10月 (1)
  • 2017年9月 (1)
  • 2017年8月 (1)
  • 2017年7月 (7)
  • 2017年6月 (5)
  • 2017年5月 (1)
  • 2017年4月 (2)
  • 2017年3月 (4)
  • 2017年2月 (2)
小伙伴友链
  • 前端驿站

COPYRIGHT © 2017-2020 嘎里三分熟. ALL RIGHTS RESERVED.

浙ICP备17005575号-1

浙公网安备 33010802009043号