字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)

字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)

前端发送请求到后端的过程(MVC)

用户与前端页面进行交互,比如点击了一个前端页面的按钮,这个时候用户的操作就会触发前端视图(View)上的事件。这些事件由JavaScript编写,然后通过axios或者ajax等工具发送异步请求到后端。后端接收到前端发送的HTTP请求,包含了用户的操作数据。

在后端,Controller层负责处理接收到的请求,包括验证、解析数据,然后调用相应的业务逻辑。这里的Controller对应了MVC中的C。后端的Model层进行业务逻辑的处理,可能涉及数据库的CRUD操作,对应MVC中的M。

处理完业务逻辑后,后端生成响应数据,将其以JSON格式或者HTML页面的形式返回给前端。前端接收到后端的响应后,通过JavaScript等方式更新页面的DOM结构,完成用户界面的更新。这个过程中,前端的View层起到了接收用户输入和更新界面的作用。

网关gateway作用,怎么解决跨域

就是在springcloud中,我们用的是springcloud gateway来实现网关的功能,会通过一个注解在启动类上,叫做@EnableGateway,再然后配置CORS过滤器这个类,这个我一般就是网上直接复制的,稍微改一下就可以直接用了,这样就允许了跨域请求,最后我们还需要通过yml配置文件,进行一些相关的配置,可以配置gateway里面的routes把哪些请求转发到哪些服务。

各微服务组件作用

我就按照各个springcloud的各个微服务组件在一个项目中的编写顺序来讲解,首先是服务注册以前用的是Eureka后来改成了naocs,因为Nacos 提供的动态配置、更丰富的功能,微服务启动的时候,在启动类上面使用@EnableDiscoveryClient这个注解,来配置nacos的服务地址,微服务通过nacos客户端像nacos服务注册自己的信息,nacos启动的时候有一个独立的网页,可以进行相关的配置。接下来微服务利用springcloud config进行配置中性的配置,微服务启动的时候,从配置中心获取配置信息,配置中心包含了微服务的各项配置,比如数据库连接,缓存配置等等。再之后就是gateway网关了,在启动类上面通过@EnableGateway这个注解进行配置,配置路由规则,这个通过在yml配置文件中进行配置,配置哪些请求转发给哪些服务,再然后是为了项目的安全性微服务里面还有Hystrix作为熔断器,通过@HystrixCommand注解标记需要进行熔断的方法,Hystrix监控微服务方法的执行情况,当某个方法失败或者超时达到某个阈值时,Hystrix会打开断路器,停止向该服务发送请求。为了提高项目的负载,微服务还提供了Ribbon组件来实现负载均衡,通过@loadBalanced注解开启负载均衡,Ribbon根据负载均衡算法把请求分发到多个相同的微服务,Ribbon默认的负载均衡算法是轮询当然也可以自己设置,在yml里面进行配置就可以了,最后一个就是springcloud bus这个的作用就是通过消息总线传播状态变化和配置变化,让其他的微服务实时获取变更的信息,保持系统的一致性。

通过比喻就是下面这样的

Spring Cloud组件如Eureka是服务目录,类似于商场的服务目录,记录微服务的位置;Spring Cloud Config是配置文件管理员,类似于公司的配置文件管理员,负责更新工作配置;Spring Cloud Gateway是门卫,类似于社区的门卫,处理请求,确保只有授权的请求能够进入微服务社区;Hystrix是保险丝,类似于电器中的保险丝,当微服务出现故障时,断开连接,防止故障扩散;Ribbon是分发器,类似于老师手中的分发工具,确保每个学生都能够平均接收到批改;Spring Cloud Bus是通告系统,类似于公司的通告系统,通过消息总线发布通告,保持整个公司的一致性。

如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。大家喜欢也可以关注一下

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Prometheus 网络协议 JavaScript
api 网关 kong 数据库记录请求响应报文
Kong的tcp-log-with-body插件是一个高效的工具,它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景,尤其是在调试和排查问题时。
43 0
api 网关 kong 数据库记录请求响应报文
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
75 7
|
3月前
|
缓存 移动开发 前端开发
字节-2024最新前端面试题梳理-1
字节-2024最新前端面试题梳理-1
150 0
|
1天前
|
小程序 前端开发 JavaScript
小程序全栈开发:前端与后端的完美结合
【4月更文挑战第12天】本文介绍了小程序全栈开发,涵盖前端和后端的关键点。前端使用WXML和WXSS进行页面结构和样式设计,JavaScript处理逻辑及组件使用;后端采用Node.js等语言处理业务逻辑、数据库设计和API接口开发。前端与后端通过数据交互实现结合,采用前后端分离模式,支持跨平台运行。调试测试后,提交微信审核并上线运营。掌握前端后端结合是小程序成功的关键。
|
1月前
|
消息中间件 Java API
面试官:微服务通讯方式有哪些?
面试官:微服务通讯方式有哪些?
31 0
|
1月前
|
负载均衡 Java 测试技术
面试官:说说微服务灰度发布的底层实现?
面试官:说说微服务灰度发布的底层实现?
48 1
面试官:说说微服务灰度发布的底层实现?
|
2月前
|
监控 Java 微服务
微服务面试题
微服务架构是一种架构风格和架构思想,**在传统软件应用架构的基础上,**将系统业务按照功能拆分为更细的服务。**拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责。通过此种思想方式所开发的软件服务实体就是“微服务”,而**围绕着微服务思想构建的一系列结构,都可以称之为“微服务架构”
66 0
微服务面试题
Gateway网关打印请求日志
Gateway网关打印请求日志
|
2月前
|
存储 前端开发 JavaScript
前端面试:如何实现并发请求数量控制?
前端面试:如何实现并发请求数量控制?
74 0
|
3月前
|
设计模式 Java 关系型数据库
BAT等大厂年薪30W+面试清单:JVM\MySQL\设计模式\分布式\微服务
疫情影响下招聘名额缩减不少,但阿里、腾讯、抖音、快手等互联网公司却加快了人才招聘的节奏。这里根据自身的实际经历,整理了一份面试这些大厂的清单,希望能帮助到大家查漏补缺,攻克面试难关。