当前位置: 首页 > news >正文

接入层架构演变

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,解决高可用问题;
 

http://www.dtcms.com/a/164303.html

相关文章:

  • Android ProcessState init
  • 初中九年级学生体测准考证照片采集软件使用说明
  • Keras模型保存、加载介绍
  • JavaScript函数声明大比拼
  • 文献阅读(三)基于干旱强度和恢复时间的生态系统恢复力评估|《Agricultural and Forest Meteorology》
  • 极狐GitLab 如何使用文件导出迁移项目和群组?
  • 前端设置三行文本省略号,失效为什么?
  • 二叉树知识点
  • Jetson Xavier NX EMMC版本刷机
  • 局部和整体的关系
  • 前端 AI 开发实战:基于自定义工具类的大语言模型与语音识别调用指南
  • Origin绘图操作:点线图符号显示不全解决方法
  • eslint相关报错收集
  • DevExpressWinForms-TreeList-获取选中行数据
  • 低版的spring boot 1.X接入knife4j
  • 数据中台一分钟
  • 细说STM32单片机FreeRTOS互斥量及其编程实例
  • Leetcode刷题报告1——哈希表
  • Leetcode 3529. Count Cells in Overlapping Horizontal and Vertical Substrings
  • SSM书籍管理(环境搭建)
  • 力扣hot100——239.滑动窗口最大值
  • dma_request_slave_channel_compat 与 dma_request_channel 的区别
  • MySQL中的分组和多表连接
  • 你的私域该大扫除了
  • 什么是向量库和数据向量化?建设向量库有什么作用?
  • 通信原理第七版与第六版的区别附pdf
  • 力扣-数据结构-二叉树
  • 20250429在Ubuntu 20.04.6下安装VMware Workstation16
  • 三种机器学习类型
  • SDC命令详解:使用get_nets命令进行查询