项目技术场景面试题--单点登录的实现方式、权限认证的实现方式、上传数据安全性的控制方式、日志采集的方式、查看日志的命令、生产问题的排查方式、快速定位系统瓶颈的方式

单点登录的实现方式

单点登录的英文名叫做: Single Sign On(简称SSO), 只需要登录一次,就可以访问所有信任的应用系统。
在这里插入图片描述

JWT解决单点登录

现在有一个微服务的简单架构,如图:
在这里插入图片描述
使用jwt解决单点登录的流程如下:
在这里插入图片描述

回答要点

1,先解释什么是单点登录

单点登录的英文名叫做:Single Sign On(简称SSO

2,介绍自己项目中涉及到的单点登录(即使没涉及过,也可以说实现的思路)

3,介绍单点登录的解决方案,以JWT为例

​ I. 用户访问其他系统,会在网关判断token是否有效

​ II. 如果token无效则会返回401(认证失败)前端跳转到登录页面

​ III. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie

​ IV. 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务

权限认证的实现方式

后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限
RBAC(Role-Based Access Control)基于角色的访问控制

  • 3个基础部分组成:用户、角色、权限

  • 具体实现

    • 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
    • 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)
      在这里插入图片描述

张三具有什么权限呢?

流程:张三登录系统—> 查询张三拥有的角色列表—>再根据角色查询拥有的权限
在这里插入图片描述

回答要点

  • 后台管理系统的开发经验

  • 介绍RBAC权限模型**5张表的关系(**用户、角色、权限)

  • 权限框架:Spring security

上传数据安全性的控制方式

在这里插入图片描述
这里的安全性,主要说的是,浏览器访问后台,需要经过网络传输,有可能会出现安全的问题

解决方案:使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据

对称加密

文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
在这里插入图片描述

  • 数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,
  • 收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。
  • 在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。

优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高
缺点: 没有非对称加密安全
用途: 一般用于传输数据很大的情形。
常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256

非对称加密

两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密
在这里插入图片描述
解释: 同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端.

加密与解密:

  • 私钥加密,持有公钥才可以解密
  • 公钥加密,持有私钥才可解密

签名:

  • 私钥签名, 持有公钥进行验证是否被篡改过.

优点: 非对称加密与对称加密相比,其安全性更好
缺点: 非对称加密的缺点是加密和解密花费时间长速度慢,只适合对少量数据进行加密。
用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用.
常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用SHA-256 的 RSA 签名)

回答要点

  • 使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台解密后处理数据
    • 传输的数据很大建议使用对称加密,不过不能保存敏感信息
    • 传输的数据较小,要求安全性高,建议采用非对称加密

项目中日志采集的方式

1,为什么要采集日志?

日志是定位系统问题的重要手段,可以根据日志信息快速定位系统中的问题

2,采集日志的方式有哪些?

  • ELK:即Elasticsearch、Logstash和Kibana三个软件的首字母
  • 常规采集:按天保存到一个日志文件

ELK基本架构

ELK即Elasticsearch、Logstash和Kibana三个开源软件的缩写
在这里插入图片描述

  • Elasticsearch
    Elasticsearch 全文搜索和分析引擎,对大容量的数据进行接近实时的存储、搜索和分析操作。
  • Logstash
    Logstash是一个数据收集引擎,它可以动态的从各种数据源搜集数据,并对数据进行过滤、分析和统一格式等操作,并将输出结果存储到指定位置上
  • Kibana
    Kibana是一个数据分析和可视化平台,通常与Elasticsearch配合使用,用于对其中的数据进行搜索、分析,并且以统计图标的形式展示。

查看日志的命令

目前采集日志的方式:按天保存到一个日志文件
在这里插入图片描述
也可以在logback配置文件中设置日志的目录和名字
在这里插入图片描述需要掌握的Linux中的日志:

  • 实时监控日志的变化

    实时监控某一个日志文件的变化:tail -f xx.log;实时监控日志最后100行日志: tail –n 100 -f xx.log

  • 按照行号查询

    • 查询日志尾部最后100行日志:tail – n 100 xx.log

    • 查询日志头部开始100行日志:head –n 100 xx.log

    • 查询某一个日志行号区间:cat -n xx.log | tail -n +100 | head -n 100 (查询100行至200行的日志)

  • 按照关键字找日志的信息

    查询日志文件中包含debug的日志行号:cat -n xx.log | grep “debug”

  • 按照日期查询

    sed -n '/2023-05-18 14:22:31.070/,/ 2023-05-18 14:27:14.158/p’xx.log

  • 日志太多,处理方式

    • 分页查询日志信息:cat -n xx.log |grep “debug” | more

    • 筛选过滤以后,输出到一个文件:cat -n xx.log | grep “debug” >debug.txt

生产问题的排查方式

已经上线的bug排查的思路:

1,先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题

2,远程debug(通常公司的正式环境(生产环境)是不允许远程debug的。一般远程debug都是公司的测试环境,方便调试代码)

远程debug配置

前提条件:远程的代码和本地的代码要保持一致

1.远程代码需要配置启动参数,把项目打包放到服务器后启动项目的参数:

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 project-1.0-SNAPSHOT.jar

-agentlib:jdwp 是通知JVM使用(java debug wire protocol)来运行调试环境

transport=dt_socket 调试数据的传送方式

server=y 参数是指是否支持在server模式

suspend=n 是否在调试客户端建立起来后,再执行JVM。

address=5005 调试端口设置为5005,其它端口也可以

2.idea中设置远程debug,找到idea中的 Edit Configurations…
在这里插入图片描述
在这里插入图片描述3. idea中启动远程debug
在这里插入图片描述

4.访问远程服务器,在本地代码中打断点即可调试远程

快速定位系统瓶颈的方式

  • 压测(性能测试),项目上线之前测评系统的压力

    • 压测目的:给出系统当前的性能状况;定位系统性能瓶颈或潜在性能瓶颈
    • 指标:响应时间、 QPS、并发数、吞吐量、 CPU利用率、内存使用率、磁盘IO、错误率
    • 压测工具:LoadRunner、Apache Jmeter …
    • 后端工程师:根据压测的结果进行解决或调优(接口慢、代码报错、并发达不到要求…)
  • 监控工具、链路追踪工具,项目上线之后监控

    • 监控工具:Prometheus+Grafana
    • 链路追踪工具:skywalking、Zipkin
  • 线上诊断工具Arthas(阿尔萨斯),项目上线之后监控、排查

    • 官网:https://arthas.aliyun.com/

    • 核心功能:

    • 在这里插入图片描述

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值