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

简介: 字节后端面试题(前端发送请求到后端的过程(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站也叫极客李华。大家喜欢也可以关注一下

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 缓存 负载均衡
Gateway 网关坑我! 被这个404 问题折腾了一年?
小富分享了一个困扰团队一年多的 SpringCloud Gateway 路由 404 问题。通过日志追踪和源码分析,发现是网关在 Nacos 配置更新后未能正确清理旧的路由权重缓存,导致负载均衡时仍使用已删除的路由数据。最终通过监听路由刷新事件并手动更新缓存,成功解决了问题。
1421 125
Gateway 网关坑我! 被这个404 问题折腾了一年?
|
人工智能 前端开发 JavaScript
webpack-dev-server代理后端一直报CORS跨域或500错误
在Vue项目中使用Webpack的devServer代理后端接口时,遇到500错误。问题根源在于浏览器请求中携带的Origin头导致服务器报错,而Postman测试正常。通过分析发现,调整或移除Origin头可解决问题。解决办法包括:1) 在代理配置中添加正确的Origin头;2) 删除请求中的Origin头。文章还深入解析了Origin头的作用及changeOrigin配置的实际意义,并附带相关文档链接,帮助开发者更好地理解与解决类似跨域问题。
1135 20
|
机器学习/深度学习 Kubernetes API
【Azure APIM】自建网关(self-host gateway)收集请求的Header和Body内容到日志中的办法
在Azure API Management中,通过配置trace策略可完整记录API请求的Header和Body信息。在Inbound和Outbound策略中分别使用context.Request/Response.Headers和Body.As<string>方法捕获数据,并写入Trace日志,便于排查与审计。
371 8
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
1977 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
安全 虚拟化
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
294 0
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
582 1
Gateway服务网关
|
负载均衡 算法 Java
微服务面试篇
微服务面试篇
938 2
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
1002 1
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
1216 5
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
420 2