十四 常见技术场景
14.1 单点登录是怎么实现
单点登录的英文名叫做: Single Sign On (简称SSO),只需要登录一次,就可以访问所有信任的应用系统
- 单个tomcat服务session可以共享,
- 微服务、分布式下多个tomcat服务session不共享
介绍单点登录的解决方案,JWT(常见),Oauth2 ,CAS
以JWT为例
- 用户访问其他系统,会在网关判断token是否有效
- 如果token无效则会返回401(认证失败)前端跳转到登录页面
- 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie
- 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务
14.2 权限认证是如何实现的
后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限RBAC(Role-Based Access Control)基于角色的访问控制
- 3个基础部分组成:用户、角色、权限
- 具体实现
- 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
- 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)
14.3 上传数据的安全性怎么控制
使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据
文件很大建议使用对称加密,不过不能保存敏感信息
文件较少,要求安全性高,建议采用非对称加密
14.4 项目中遇到的比较棘手的问题,怎么解决的
14.5 项目中的日志是怎么采集的
为什么要采集日志?
日志是定位系统问题的重要手段,可以根据日志信息快速定位系统中的问题
采集日志的方式有哪些?
- 我们搭建了ELK日志采集系统
- Elasticsearch是全文搜索分析引擎,可以对数据存储、搜索、分析
- Logstash是一个数据收集引擎,可以动态收集数据,可以对数据进行过滤、分析,将数据存储到指定的位置
- Kibana是一个数据分析和可视化平台,配合Elasticsearch对数据进行搜索,分析,图表化展示
- 常规采集:按天保存到一个日志文件
192.168.200.130:5044是logstash的部署地址:
es的Kibana的可视化界面:
14.6 常见日志的命令
- 实时监控日志的变化
- 实时监控某一个日志文件的变化: 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.loglgrep“debug"
- 按照日期查询
- sed -n '/2023-05-1814:22:31.070/,/2023-05-1814:27:14.158/p' xx.log
- 日志太多,处理方式
- 分页査询日志信息: cat-n xx.loglgrep"debug"|more
- 筛选过滤以后,输出到一个文件: cat -n xx.loglgrep"debug">debug.txt
14.7 生产问题怎么排查
已经上线的bug排查的思路:
- 先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题
- 远程debug(通常公司的正式环境(生产环境)是不允许远程debug的。一般远程debug都是公司的测试环境,方便调试代码)
远程debug思路:
前提条件:远程的代码和本地的代码要保持一致
远程代码需要配置启动参数,把项目打包放到服务器后启动项目的参数:
java -jar -agentlib;jdwp=transport=dt_socket,server=y,suspend=n,address=5005 project-1.0-SNAPSHOTjar
14.8 怎么快速定位系统的瓶颈
- 压测(性能测试)
- 压测目的:给出系统当前的性能状况;定位系统性能瓶颈或潜在性能瓶颈
- 指标:响应时间、 QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘10、错误率
- 压测工具:LoadRunner、Apache Jmeter
- 后端工程师:根据压测的结果进行解决或调优(接口慢、代码报错、并发达不到要求.)
- 监控工具、链路追踪工具
- 监按工具:Prometheus+Grafana
- 链路追踪工具:skywalking、Zipkin
- 线上诊断工具Arthas(阿尔萨斯)
- 官网:arthas
- 核心功能: