请简单介绍一下你们的项目?
资讯 新闻 头条
toC 面向互联网用户
类似于今日头条,通过微服务的技术 为用户提供最新 最热点的热门资讯
你们项目的技术架构是怎样的?
nginx: 接收用户请求 将请求反向代理到网关
gateway: api网关,将请求路由到微服务
nacos: 注册中心、配置中心
feign: 服务调用
ribbon: 负载均衡器
sentinel、hystrix: 微服务保护
SSM: Spring SpringMVC mybatisPlus
mysql、mongoDB、redis、oss、elasticsearch
分布式事务seata 分布式锁redisson 分布式调度xxljob 消息队列rabbitmq 分布式日志:ELK
你们Springboot及SpringCloud使用的版本?
Springboot: 2.3.9
SpringCloud: hoxton.SR8
你是如何理解前后端分离开发的?
1. 前后后端根据需求梳理业务,产出API接口文档
2. 前后端基于接口文档 ==> 并行开发
2.1 前端 基于接口文档生成mock数据,按照需求实现页面效果
2.2 后端 基于接口文档,提供接口实现,使用postman测试接口
3. 前后端联调
前端将调用地址改为后端网关地址,实现后台真实数据的调用
测试整体功能
出现问题,谁的问题谁去改
你们后端接口是如何测试的?
Postman进行接口测试
Swagger
Knife4j
SpringMVC接收参数的注解有哪些?
@RequestBody 当前端在请求体中传入的是json对象时
@RequestParam 当前端在请求中传入的是key=value参数时
@PathVariable 当前端在请求中传入参数在路径上 /user/101
你们的接口文档是如何定义的:
接口描述:
请求路径:
请求方式:
请求参数类型:
请求参数:
响应参数类型: application/json
响应参数:
{
code: 状态码
msg: 提示信息
data: 数据
}
你们项目的数据库设计情况? 你是否有独立设计过数据库?
采用了分库的设计,按照业务进行拆分,每个微服务都访问独立的数据库
6个数据库 , 70张表
能否说出SpringBoot的自动装配原理?
META-INF/spring.factories
key:EnableAutoConfiguration
1. 去重
2. 排除指定配置
3. 按照条件注解筛选配置
@ConditionalOnClass(rabbitTemplate.class)
项目中是否自定义过starter起步依赖,如何定义?
全局异常的统一配置
小刀文档的统一配置
项目中异常是怎么处理的?
@ControllerAdvance
contrller增强注解
@ExceptionHandler(Exception.class)
全局异常处理器
@ExceptionHandler(CustomException.class)
自定义异常处理器
项目中注册中心的作用?配置中心的作用?
共享配置:
多个微服务需要相同的配置 可以单独创建一个配置文件微服务
如: data-id: share-feign.yml
其它微服务想用这个共享配置:
share-configs: 引入共享配置
- data-id: share-feign.yml
group: DEFAULT_GROUP
refresh: 是否热更新
项目中api网关的作用?
filters:
stripPrefix: 去除前缀的过滤器 1
http://localhost:6001/admin/api/v1/channel/list
http://localhost:9001/admin/api/v1/channel/list
==> 去除前缀: /admin
http://localhost:9001/api/v1/channel/list