【面试突击】网关系统面试实战

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送
发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书

文章导读地址:点击查看文章导读!

感谢你的关注!

🍁🍁🍁🍁🍁🍁🍁🍁

网关面试实战

技术选型方面

这一块的话,主要是考察对 网关技术 的了解,比如你使用了分布式系统,那你整个系统前肯定是有一个网关的

那你是如何去对网关进行技术选型的呢?这其实就是考察你对常见的几种网关是否熟悉,常用的几种网关以及优缺点如下:

  • Nginx:性能高,成熟,但是可扩展性不足,并且 Nginx 使用 c 编写,很难根据源码去进行定制化开发
  • Zuul:Zuul 有两个大的版本 Zuul1 和 Zuul2,是基于 Java 实现的,核心功能比较简单,如果需要一些灰度发布、限流、动态路由之类的功能,需要自己二次开发
  • Spring Cloud Gateway:目的就是为了替换 Zuul1,功能比较完善,性能相对于 Zuul1 来说好了很多
  • 自研网关:目前许多互联网都自研自己的网关,自研网关的好处就是可以根据自己业务特点提供一个定制化、高性能、可扩展的 API 网关解决方案,例如美团技术团队就自研了 Shepherd API 网关,可以参考文章:https://tech.meituan.com/2021/05/20/shepherd-api-gateway.html

上边只是简单的提到了一些优缺点,如果你去面试,并且在简历中有较多的分布式相关的项目,一定要去对这些技术选型好好了解一下,不要对每个问题都只是知道个大概,再问就什么不知道了!

网关的核心功能:

那么如果系统中使用了网关,你是希望去使用它的什么功能呢?一定要了解网关的 应用场景,因为很可能讲完这个之后,会问你,让你自己设计一个网关,你会怎么设计呢?这不正是考察网关的功能以及对每个功能点如何进行设计的吗?

这里将网关的功能按照重要顺序列一下,重要的列在前边:

  • 动态路由:新上线某个服务,可以动态的将请求路径和服务的映射关系 热加载到网关 里去,服务增加或减少机器,网关也可以 自动感知到
  • 灰度发布:新功能正式上线之前,将新功能在少量机器上进行发布测试
  • 授权认证:对发送到网关的请求进行授权认证
  • 限流熔断
  • 性能监控:监控每个接口的 耗时成功率QPS
  • 系统日志:打印接口请求日志
  • 数据缓存

网关部署的机器配置:

这是属于网关系统在生产环境部署的内容了,这个之前在讲注册中心也讲过机器配置的问题,这里再啰嗦一下,多看看就记住了

常用的机器配置就是 4C8G、8C16G、16C32G、32C64G

那么像注册中心、网关系统,这种都是属于 基础架构类型的系统,一定要上配置高一点的机器,8C16G 以上的

网关系统部署在 8C16G 的机器上,每秒钟抗几千的请求是可以的

16C32G 的话,抗上万的请求也是没问题的

将机器配置和对应的请求量级大概可以对应起来就可以

并且网关系统一般是使用集群部署的,通过 Nginx 将请求再分散到多个网关系统上,可以抗更多请求,因为网关系统一般不会是整个系统的性能瓶颈

网关在整个系统中所处的地位如图所示:

在这里插入图片描述

网关中一些核心技术实现思路

可以去了解一下网关中核心技术是如何实现的,这里就以 动态路由灰度发布 来简单说一下实现思路

  • 动态路由

动态路由目的就是让 网关系统可以感知到服务上下线,你可以想一下学到的哪一个技术可以实现这个功能呢?

这个不就是 通知 功能吗?

那么直接通过 RocketMQ 就可以实现了,新服务上线,发送一个 MQ 通知,让网关系统去拉取最新的服务地址,如果机器下线,也可以发送 MQ 通知,让网关系统剔除掉这个服务即可

  • 灰度发布

这里说一下实现灰度发布的一个思路

首先,需要创建一张灰度发布表,包含字段如下:

id int(11) 
service_id varchar(255)
path varchar(255)
enable_gray_release int(11)

通过定时任务去查灰度发布表,存入 Map 中

再做一个灰度发布的 拦截器,比对请求路径是否启用灰度发布,如果启用灰度发布,就将流量转发到新部署的机器上去

这里将新版本的系统设置一个标志位,比如 ReleaseVersion,如果这个值为 NEW 的话,表示是新部署的系统,那么就可以根据这个标志位判断哪些机器上部署的系统是新版本了,将流量散发到这些新版本的机器上去

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA+ssm开发的中草药智能采购管理系统设计与实现【附源码】

基于JAVAssm开发的中草药智能采购管理系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 项目运行 环境配置: Jdk1.8 Tomcat7.…

stable diffusion代码学习笔记

前言:本文没有太多公式推理,只有一些简单的公式,以及公式和代码的对应关系。本文仅做个人学习笔记,如有理解错误的地方,请指出。 本文包含stable diffusion入门文献和不同版本的代码。 文献资源 本文学习的代码&…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2) 在 https://zhangphil.blog.csdn.net/article/details/135374279 基础上,增加一个功能,当手指在上面的图片…

【DevOps-08-3】Jenkins容器内部使用Docker

一、简要描述 构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker。 二、配置和操作步骤 1、修改宿主机docker.sock权限 # 修改docker.sock 用户和用户组都为root $ …

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题二 模块二

竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000分。三个模块内容和分值分别是: 1.第一阶段:模块一 网络平台搭建与设备安全防护(180 分钟,300 分)。 2.第二阶段:模块二…

vue-virtual-scroll-list(可单选、多选、搜索查询、创建条目)

element-ui-解决下拉框数据量过多问题(vue-virtual-scroll-list)_element-ui下拉框数据太多如何优化-CSDN博客 的升级版 参考链接:封装el-select,实现虚拟滚动,可单选、多选、搜索查询、创建条目-CSDN博客 1.封装组件 select.v…

HTTP 常见协议:选择正确的协议,提升用户体验(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Vulnhub-HACKSUDO: PROXIMACENTAURI渗透

文章目录 一、前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、端口敲门三、web密码爆破四、getShell五、获取新用户六、提权 一、前言 由于在做靶机的时候,涉及到的渗透思路是非常的广泛,所以在写文章的时候都是挑重点来写&#xff0…

也谈人工智能——AI科普入门

文章目录 1. 科普入门人工智能的定义人工智能的类型 - 弱 AI 与强 AI人工智能、深度学习与机器学习人工智能的应用和使用场景语音识别计算机视觉客户服务建议引擎数据分析网络安全 行业应用人工智能发展史![img](https://img-blog.csdnimg.cn/img_convert/66aeaaeac6870f432fc4…

error: undefined reference to ‘cv::imread(std::__ndk1::basic_string<char

使用android studio编译项目时,由于用到了 cv::imread()函数,编译时却报错找不到该函数的定义。 cv::imread一般是在highgui.hpp中定义,因此我加上了该头文件: #include “opencv2/highgui/highgui.hpp” 但…

webtim开源即时通讯平台第三版发布

webtim是Web开源通讯平台。服务器是 Tim 。前端使用tim的js客户端 timjs 调用tim服务器接口渲染页面。 webtim开发目的是通过界面来显式表达tim接口功能。tim是去中心化的分布式IM引擎。支持多种基础通讯模式,对端到端的数据流传输支持非常全面,几乎涵…

【信息安全】hydra爆破工具的使用方法

hydra简介 hydra又名九头蛇,与burp常规的爆破模块不同,hydra爆破的范围更加广泛,可以爆破远程桌面连接,数据库这类的密码。他在kali系统中自带。 参数说明 -l 指定用户名 -L 指定用户名字典文件 -p 指定密码 -P 指…

Java十大经典算法—KMP

字符串匹配问题: 1.暴力匹配 public class ViolenceMatch {public static void main(String[] args) {String str1 "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";String str2 "尚硅谷你尚硅你好";int index violenceMatch(str1, str2);S…

数模学习day11-系统聚类法

本文参考辽宁石油化工大学于晶贤教授的演示文档聚类分析之系统聚类法及其SPSS实现。 目录 1.样品与样品间的距离 2.指标和指标间的“距离” 相关系数 夹角余弦 3.类与类间的距离 (1)类间距离 (2)类间距离定义方式 1.最短…

数据科学竞赛平台推荐

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【PaperReading】4. TAP

Category Content 论文题目 Tokenize Anything via Prompting 作者 Ting Pan, Lulu Tang, Xinlong Wang, Shiguang Shan (Beijing Academy of Artificial Intelligence) 发表年份 2023 摘要 提出了一个统一的可提示模型,能够同时对任何事物进行分割、识别和…

机器学习_实战框架

文章目录 介绍机器学习的实战框架1.定义问题2.收集数据和预处理(1).收集数据(2).数据可视化(3).数据清洗(4).特征工程(5).构建特征集和标签集(6).拆分训练集、验证集和测试集。 3.选择算法并建立模型4.训练模型5.模型的评估和优化 介绍机器学习的实战框架 一个机器学习项目从开…

在加载第三方库过程中,无法加载到库的问题(使用readelf, patchelf命令)

无法加载到库问题 问题及分析过程readelf 命令patchelf命令 问题及分析过程 在开发一个程序过程中,需要加载第三方库iTapTradeAPI, 在CMakeList.txt中已经设置了CMAKE_INSTALL_RPATH,但是发布到生产之后由于目录问题无法加载到libiTapTradeAPI库了 下面…

一篇文章带你了解Python常用自动化测试框架——Pytest!

在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框架Pytest,它在保留了UnitTest框架语法的基础上有着更多的优化处理 下面我们将从以下角度来介绍Pytest: Pytest基本介…

Docker的基础概念及命令

这篇主要介绍一下Docker比较重要的两个概念,镜像和容器,以及操作它们的一些常用命令。 文章目录 一、基础命令二、镜像三、容器 一、基础命令 docker -v:查看 Docker 的版本 systemctl start docker:启动docker systemctl stat…