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