1.springcloud的组件有哪些?都有什么作用?
SpringCloud有两套框架一套是SpringCloudNetflix(年父莱斯) 另一套是SpringCloudAlibaba 我比较了解SpringCloudAlibaba那套框架 也是主要学习的 SpringCloudAlibaba的主要组件有Nacos、Sentinel、Dubbo、RocketMQ、Seata。
Nacos的话是作为一个服务注册与发现和配置中心
Sentinel是一个轻量级高可用的流量组件
Dubbo作为一个微服务中的远程调用 在高并发的情况下 选用Dubbo比较好
RocketMQ作为一个消息中间件
Seata(死特)是一个高性能分布式事物的解决方案
Gateway:作为网关
SpringCloudNetflix也是有一些了解,像Eureka作为服务注册与发现、Ribbon作为负载均衡、Hystrix作为熔断器、Fiegn作为远程调用、Zull作为网关。
2.项目中跨域是如何解决的?还知道哪些其他的跨域解决方案?
首先看项目当中是否使用了网关 如果没有使用网关 在控制层类中 加上
@CrossOrigin(克劳斯哦整) 来解决跨域问题 如果在项目当中使用了网关 第一种是则在网关配置application.yml中配置跨域请求 允许那些请求 第二种在网关中配置跨域类 两种方案在网关中都可以解决跨域问题
3.项目中权限认证怎么做的?把整个流程说一下(token是如何生成的,前台如何保存token,每个请求是怎么把token携带过来的)
后端将信息加密成token 返回给前端 在前端下一次请求的时候 会携带token 在网关中获取到token 进行解密校验 如果校验成功 则放行 否则拦截 jwt主要由三部分组成:头部、载荷、签名
token通过秘钥生成 公钥解密 前台通过cookie来保存token 前端每一次请求的时候就会携带token
4.maven依赖冲突怎么解决,项目中jar包版本是如何管理的?
第一种是通过排包解决 依赖冲突时 可以不需要jar的传递依赖中声明排除
第二种是版本锁定 在pom.xml中先声明哪个版本的jar包 声明后其他版本的jar包一律不依赖
项目中jar包通过maven统一管理 可以子模块当中引入自己所需的jar包 也可以父模块当中引入 子模块里可以使用父模块里的jar包 同时父模块里可以锁定版本 对jar版本进行一个管理