您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

稳定运行了多年的网关,偏偏让我掉进了坑里

时间:2022-10-24 13:43:34  来源:今日头条  作者:大禹的足迹

背景介绍

在服务刚启动的时候,服务的运行状态并没有达到最佳,如果一下子将流量提升到日常运行的状态,会存在大量的请求超时。
为什么服务刚启动的时候,服务不是最佳状态呢?

  • JAVA应用类加载是按需加载的,在服务刚启动的时候,只会加载启动过程中需要的类;当服务接口被调用的时候,才会加载、初始化接口用到的类;对于热点代码,存在一个字节码解释执行到本地机器码执行的过程。
  • Java应用需要与依赖的数据库创建连接,与数据库的连接不仅仅是建立一个TCP连接,还涉及用户认证、权限校验、数据库资源分配等,是一个比较耗时的操作。
  • Java应用与依赖的redis、HSF服务都要做初始化工作… …

为了服务达到最佳状态,我们通过调整服务权重慢慢增加流量,经过一段时间的小流量预热,让系统达到最佳运行状态。
某天我决定干这个事,我将权重由1调整到2,系统正常;由2调整到4,系统正常;将权重调整到9的时候,故障出现了。

故障描述

将权重调整到9,网关将流量都打到了30多台机器上(一共168台机器),接着应用不断发生CMS GC,接口成功率直线下降。

下游没流量的机器

下游没流量的机器

下游机器接口成功率

下游机器接口成功率

分析过程

因为提前完全没有想到发生这种情况,一点预案也没有。后来冷静下来,想明白:这不应该是应用侧的问题,调整个权重就被打挂似乎没有这种道理。

系统交互关系

系统交互图

第4步-List<Host>

机器不健康的时候,注册中心会剔除掉问题机器;机器恢复健康后,注册中心会再次将机器加入到列表中,【机器列表的顺序不会改变】。
举例说明:

  1. A1、A2、A3、A4(权重都是1)已经注册到注册中心,状态健康;
  2. A1发送心跳失败(网络超时/服务hang住等原因),client从注册中心获取的机器列表是:A2、A3、A4;
  3. A1发送心跳成功(恢复健康状态),client从注册中心获取的机器列表是:A1、A2、A3、A4。

第5步-构造下游机器列表

网关从注册中心拿到List<Host>后,构造下游机器列表的逻辑:

构造下游机器列表

举例说明:
List<Host>中共有A1、A2、A3、A4四台机器,每台机器权重是3,该方法构造出的下游机器列表是:
[A1,A1,A1,A2,A2,A2,A3,A3,A3,A4,A4,A4]

第6步-选择一台下游机器

当网关收到第一个请求的时候,选择下游机器列表的第一个机器;
当网关收到第二个请求的时候,选择下游机器列表的第二个机器;
依次轮询下游机器列表。

轮询逻辑

小结

每当某台机器向注册中心发送心跳超时的时候,该接口在注册中心对于的机器列表就会变化;
网关会获取该接口新的机器列表List<Host>,并根据List<Host>重新构造一个新的下游机器列表;
新的请求会按照下游机器列表的顺序轮询发送到后端业务机器上。

故障场景复盘

基本信息

业务应用有168台机器,定义为:A1,A2,A3… …A168;
网关有大概600台机器。

场景复盘

  1. 业务应用将权重调整为【9】;
  2. 网关机器列表(所有网关机器上都是这个列表)变更为:[A1,A1,A1…A1,A2,…A2,…A168,A168,A168…A168],列表中有9个A1,9个A2,9个A3,…,9个A168,计数设置为【0】;
  3. 单台网关机器QPM:300,【2】中数组每台机器对应9个元素,由于网关是轮询策略,所以一分钟的流量【整个集群的】打到了【300/9=33】台机器上;
  4. 由于流量打到了30多台机器上,机器负载迅速增大->发生了CMS GC,系统hang住,进而导致业务应用向注册中心发送心跳失败,注册中心通知网关机器列表变更,流程回到了第【2】步。


Tags:网关   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
为什么 Netflix 从大单体演进到联合网关?
网关聚合层本应带来秩序,但随着团队的壮大,服务的增多和领域复杂性的增加,开发网关聚合层变得越来越困难。为了解决这个问题,Netflix 使用 GraphQL 并引入了联合网关(Federated G...【详细内容】
2024-01-09  Search: 网关  点击:(69)  评论:(0)  加入收藏
物联网平台之IOT网关
IOT网关即物联网网关,是一种网络设备,在物联网系统中负责连接和控制各种设备,将它们连接到云端、本地服务器或其他设备上。它既可以实现广域互联,也可以实现局域互联,通过协议转...【详细内容】
2023-12-07  Search: 网关  点击:(58)  评论:(0)  加入收藏
为什么 Traefik 是云原生首选网关?
根据 Traefik Labs 团队对于 Traefik 在云原生生态中的定位:云原生反向代理和负载均衡器及网关解决方案。一、从生态拥抱视角看:Traefik 的发展前景从云原生生态视角来看,Traef...【详细内容】
2023-11-29  Search: 网关  点击:(67)  评论:(0)  加入收藏
Istio Egress 出口网关使用
签名我们了解了位于服务网格内部的应用应如何访问网格外部的 HTTP 和 HTTPS 服务,我们学习了如何通过 ServiceEntry 对象配置 Istio 以受控的方式访问外部服务,这种方式实际上...【详细内容】
2023-11-20  Search: 网关  点击:(207)  评论:(0)  加入收藏
边缘计算网关​在生产制造中的应用
随着物联网技术的不断发展,边缘计算网关在生产制造领域的应用越来越广泛。边缘计算网关通过强大的数据处理和分析能力,能够实时监控和调控生产设备,提高生产效率,降低成本,并为生...【详细内容】
2023-11-15  Search: 网关  点击:(181)  评论:(0)  加入收藏
基于Kubernetes网关API策略的流量管理
Kubernetes网关API通过抽象复杂性并提供声明式的方法来定义路由和流量策略,简化了配置流程。译自Effective Traffic Management with Kubernetes Gateway API Policies。在本...【详细内容】
2023-11-08  Search: 网关  点击:(231)  评论:(0)  加入收藏
五 种 API 网关技术选型,yyds
本文准备围绕七个点来讲网关,分别是网关的基本概念、网关设计思路、网关设计重点、流量网关、业务网关、常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分...【详细内容】
2023-11-07  Search: 网关  点击:(310)  评论:(0)  加入收藏
负载均衡器、反向代理、API 网关区别
简介您是否理解负载均衡器、反向代理和 API 网关等多样组件之间的差异?不确定哪个组件最适合您的 Web 应用程序?这些关键组件在现代 Web 架构中发挥着至关重要的作用,了解它们...【详细内容】
2023-09-27  Search: 网关  点击:(281)  评论:(0)  加入收藏
Spring Cloud Gateway提供的简易网关实现方式,你使用过吗?
环境:SpringBoot2.5.13Spring Cloud Gateway提供了一个名为ProxyExchange的实用程序对象。你可以在常规Spring web处理程序中使用它作为方法参数。它通过镜像HTTP动词的方法...【详细内容】
2023-09-15  Search: 网关  点击:(208)  评论:(0)  加入收藏
日200亿次调用,喜马拉雅网关的架构设计
本文目录- 说在前面- 喜马拉雅自研亿级API网关技术实践- 1、第1版:Tomcat NIO+Async Servlet- 2、第2版:Netty+全异步 - 2.1 接入层 - 2.2 业务逻辑层 - 2.3 服务调用层...【详细内容】
2023-09-14  Search: 网关  点击:(249)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(37)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(39)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(149)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(51)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(78)  评论:(0)  加入收藏
站内最新
站内热门
站内头条