【企业场景】常见技术场景解析

这篇具有很好参考价值的文章主要介绍了【企业场景】常见技术场景解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常见技术场景

1.单点登录这块怎么实现的

1.1 概述

单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统

以前的时候,一般我们就单系统,所有的功能都在同一个系统上。

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

单体系统的session共享

  • 登录:将用户信息保存在Session对象中

    • 如果在Session对象中能查到,说明已经登录
      • 如果在Session对象中查不到,说明没登录(或者已经退出了登录)
  • 注销(退出登录):从Session中删除用户的信息

后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

多系统即可能有多个Tomcat,而Session是依赖当前系统的Tomcat,所以系统A的Session和系统B的Session是不共享的。

而单点登录就是,多系统中,在一个系统/机器/微服务中登录了,在登录到期之前,访问其他系统的服务,不必重新登录验证

解决系统之间Session不共享问题有一下几种方案:

  • Tomcat集群Session全局复制(最多支持5台tomcat,不推荐使用)
  • JWT(常见)
  • Oauth2
  • CAS
  • 自己实现(redis+token)

1.2 JWT解决单点登录

现在有一个微服务的简单架构,如图:

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

使用 jwt 解决单点登录的流程如下:

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

因为请求可能是直接访问微服务,而不是靠网关转发

但是使用网关进行登录 token 校验是有必要的

通过在网关层面进行登录 token 校验可以提前拦截非法请求和无效 token,减轻后续微服务的负担,提高系统的安全性和性能

虽然最终在微服务内部也需要再次校验 token,但通过在网关层面处理可以有效过滤掉一些无效请求,避免将这部分请求传递给后端微服务

在单个微服务,还是得 SpringSecurity 或者拦截器,去处理一下校验token;

1.3 回答要点

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

    1. 单点登录的英文名叫做:Single Sign On(简称SSO
  2. 介绍自己项目中涉及到的单点登录(即使没涉及过,也可以说实现的思路)

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

    1. 用户访问其他系统,会在网关判断token是否有效
    2. 如果token无效则会返回401(认证失败)前端跳转到登录页面
    3. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie
    4. 再去访问其他服务的时候,都需要携带token(请求头),由网关统一验证后路由到目标服务

2.权限认证是如何实现的

2.1 概述

后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限

RBAC(Role-Based Access Control)基于角色的访问控制

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

  • 具体实现

    • 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)

    • 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)

      • 菜单表 ==> 页面的层级结果,每个模块/按钮,存储的是树(页面的核心功能的 DOM 树)
      • 权限菜单中间表 ==> 把页面的模块与权限关联起来,这样就可以只展示一部分模块给用户,避免用户去访问没有权限的接口(虽然哪怕展示了也访问不了)

      【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

2.2 RBAC权限模型

最常见的 5 张表的关系

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

数据流转

张三具有什么权限呢?

流程:张三登录系统—> 查询张三拥有的角色列表—>再根据角色查询拥有的权限

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

在实际的开发中,也会使用权限框架完成权限功能的实现,并且设置多种粒度,常见的框架有:

  • Apache shiro
  • Spring security(推荐)
2.3 回答要点
  • 后台管理系统的开发经验

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

  • 权限框架:Spring Security

3. 上传数据的安全性你们怎么控制?

3.1 概述

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

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

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

3.2 对称加密

文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

  • 数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,

  • 收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。

  • 在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。

优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

缺点: 没有非对称加密安全.

用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。

常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256

3.3 非对称加密

两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

解释: 同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端.

加密与解密:

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

签名:

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

**优点: ** 非对称加密与对称加密相比,其安全性更好;

缺点: 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用.

常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用SHA-256 的 RSA 签名)

参考HTTPS:【JavaEE】HTTPS加密原理-CSDN博客

当然,还有另一种加密,就是防止用户破解接口并写入恶意脚本,不属于网络传输的方面了

用户通过代理客户端可以查看请求和响应,业就可以破解接口并写入恶意脚本

可以考虑以下方法增强接口的安全性:

  1. 数据加密:在客户端和服务器之间进行端到端的数据加密,即使用户使用代理客户端也无法轻易窃取敏感数据。
  2. 使用动态令牌:引入动态令牌机制,令每次请求的认证令牌都是唯一且短暂的,有效期结束后自动失效,降低了被破解的可能性。
  3. 反爬虫策略:识别和阻止恶意代理客户端,并采取反爬虫策略,如验证码、人机验证等,以识别和拦截恶意请求。
  4. 安全监控和日志记录:实时监控接口请求情况,并记录日志以追踪异常行为,及时发现和应对潜在的安全威胁。
  5. 多因素认证:引入多因素认证机制,如结合密码、短信验证码、指纹等多种因素进行用户身份验证,提高安全性。

3.4 回答要点

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

4. 你负责项目的时候遇到了哪些比较棘手的问题

这个面试题主要考察的是,

  • 你是否有过开发经验
  • 是否是核心开发人员

有4个方面可以回答,只要挑出一个回答就行了

4.1 设计模式

  • 工厂模式+策略
  • 责任链模式

回答思路

1,什么背景(技术问题)

2,过程(解决问题的过程)

3,最终落地方案

举例:

①:介绍登录业务(一开始没有用设计模式,所有的登录方式都柔和在一个业务类中,不过,发现需求经常改)

②:登录方式经常会增加或更换,每次都要修改业务层代码,所以,经过我的设计,使用了工厂设计模式和策略模式,解决了,经常修改业务层代码的问题

③:详细介绍一下工厂模式和策略模式(参考前面设计模式的课程)

4.2 线上BUG

  • CPU飙高
  • 内存泄漏
  • 线程死锁

回答方式参考上面的回答思路,具体问题可以参考前面的课程(JVM和多线程相关的面试题)

4.3 调优

  • 慢接口
  • 慢SQL
  • 缓存方案

4.4 组件封装

  • 分布式锁
  • 接口幂等
  • 分布式事务
  • 支付通用

封装📦成具体适用于本系统的组件,方便去解决一些问题;

组件封装是指将一组相关功能或代码片段封装在一个独立的组件中,以便在项目中重复使用、提高代码复用性和可维护性的做法。组件可以是包含特定功能的UI元素,也可以是执行特定任务的函数或类。

在软件开发中,组件封装有助于将代码模块化,降低耦合度,提高整体代码的可读性和可维护性。通过将通用功能封装成组件,可以在不同的地方多次使用,避免重复编写相同的代码,减少出错的可能性,并且方便对组件进行统一管理和更新。

常见的组件封装方式包括类、函数、模块等形式。组件封装还可以结合面向对象编程、设计模式等技术,使得代码更加结构化、灵活和可扩展。

幂等性为例子,可以写个拦截器对指定的接口进行幂等性的保证啊,写一些保证幂等性的接口方法呀:

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

5. 你们项目中日志怎么采集的

5.1 问题

  1. 为什么要采集日志?

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

  1. 采集日志的方式有哪些?
  • ELK:即Elasticsearch、Logstash和Kibana三个软件的首字母
  • 常规采集:按天保存到一个日志文件

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

5.2 ELK基本架构

ELK即Elasticsearch、Logstash和Kibana三个开源软件的缩写

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

  • Elasticsearch

    • Elasticsearch 全文搜索和分析引擎,对大容量的数据进行接近实时的存储、搜索和分析操作。
  • Logstash

    • Logstash是一个数据收集引擎,它可以动态的从各种数据源搜集数据,并对数据进行过滤、分析和统一格式等操作,并将输出结果存储到指定位置上
  • Kibana

    • Kibana是一个数据分析和可视化平台,通常与Elasticsearch配合使用,用于对其中的数据进行搜索、分析,并且以统计图标的形式展示。
5.3 参考回答
  • 我们搭建了ELK日志采集系统

  • 介绍ELK的三个组件:

    • Elasticsearch是全文搜索分析引擎,可以对数据存储、搜索、分析
    • Logstash是一个数据收集引擎,可以动态收集数据,可以对数据进行过滤、分析,将数据存储到指定的位置
    • Kibana是一个数据分析和可视化平台,配合Elasticsearch对数据进行搜索,分析,图表化展示

6. 查看日志的命令

目前采集日志的方式:按天保存到一个日志文件

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

也可以在logback配置文件中设置日志的目录和名字

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

需要掌握的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

7. 生产问题怎么排查

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

  1. 检查请求和响应是否有问题;
  2. 通过错误现象初步确定处理方向,用相似的请求去让 bug 更好的展示出来,以此推理出来一些东西;
  3. 分析日志,通常在业务中都会有日志的记录,如查看系统日/项目日志文件,然后定位问题;
  4. 远程 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,其它端口也可以

  1. idea 中设置远程 debug ,找到 idea 中的 Edit Configurations…

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

  1. idea中启动远程debug

    【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言

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

8. 怎么快速定位系统的瓶颈

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

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

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

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

    • 核心功能:

【企业场景】常见技术场景解析,后端进阶实践,firefox,java,开发语言文章来源地址https://www.toymoban.com/news/detail-849302.html

到了这里,关于【企业场景】常见技术场景解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AIGC 技术在淘淘秀场景的探索与实践

    本文介绍了AIGC相关领域的爆发式增长,并探讨了淘宝秀秀(AI买家秀)的设计思路和技术方案。文章涵盖了图像生成、仿真形象生成和换背景方案,以及模型流程串联等关键技术。 文章还介绍了淘淘秀的使用流程和遇到的问题及处理方法。最后,文章展望了未来AIGC的发展趋势,

    2024年02月03日
    浏览(50)
  • AIGC技术在淘淘秀场景的探索与实践

    本文介绍了AIGC相关领域的爆发式增长,并探讨了淘宝秀秀(AI买家秀)的设计思路和技术方案。文章涵盖了图像生成、仿真形象生成和换背景方案,以及模型流程串联等关键技术。文章还介绍了淘淘秀的使用流程和遇到的问题及处理方法。最后,文章展望了未来AIGC的发展趋势,

    2024年01月17日
    浏览(38)
  • GlusterFS:开源分布式文件系统的深度解析与应用场景实践

    在当今大数据时代背景下,企业对存储系统的容量、性能和可靠性提出了前所未有的挑战。GlusterFS作为一款开源的、高度可扩展的分布式文件系统,以其独特的无中心元数据设计和灵活的卷管理机制,在众多场景中脱颖而出,为解决大规模数据存储难题提供了强有力的支持。

    2024年02月19日
    浏览(38)
  • 深入解析 JWT(JSON Web Tokens):原理、应用场景与安全实践

    JWT(JSON Web Tokens)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息作为 JSON 对象。由于其小巧和自包含的特性,它在 Web 应用程序和服务之间尤其流行用于身份验证和信息交换。JWT 的主要优点和特性包括: 自包含(Self-contained): JWT 本身包含了所有必要的信息。

    2024年02月04日
    浏览(49)
  • 构建企业数据安全的根基:深入解析数据安全治理能力评估与实践框架

    随着数字化转型深入各行各业,数据安全已成为企业不可或缺的重要议题。在这一背景下,有效的数据安全治理框架成为确保企业数据安全的基石。 中国互联网协会于 2021 年发布 T/SC-0011-2021《数据安全治理能力评估方法》,推出了国内首个数据安全治理能力建设及评估框架,

    2024年02月22日
    浏览(40)
  • 从方法论到最佳实践,深度解析企业云原生 DevSecOps 体系构建

    作者:匡大虎 安全一直是企业上云关注的核心问题。随着云原生对云计算基础设施和企业应用架构的重定义,传统的企业安全防护架构已经不能够满足新时期下的安全防护要求。为此企业安全人员需要针对云原生时代的安全挑战重新进行系统性的威胁分析并构建适合企业自身

    2024年01月25日
    浏览(69)
  • 企业内网终端安全无客户端准入控制技术实践

    终端无代理/无客户端准入控制技术因其良好的用户体验而倍受创新企业的青睐。无代理/无客户端准入控制技术,顾名思义,是一种在网络中对终端实施访问控制的方法,无需依赖特定的客户端软件。 不同于银行、医院等传统行业的终端准入控制需求, 芯片半导体、生物制药

    2024年02月12日
    浏览(42)
  • 互联网八大技术岗位解析:前端+后端+移动+测试+大数据+管理等

    互联网史上最全技术岗位详解,包括:前端研发、后端研发、移动端研发、大数据、项目管理、测试、运维、技术管理等。 架构师 每个产品线都有架构师,在技术平台部门也需要技术平台的架构师。 架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握

    2024年02月05日
    浏览(49)
  • WebSocket技术解析:原理、特点、应用场景及实现方法

    很多人可能已经听说过WebSocket技术,但是对于它的具体实现和应用还不是很清楚。本文将详细介绍WebSocket技术的原理、特点、应用场景以及如何使用它来实现实时通信。 一、WebSocket技术的原理 WebSocket技术是一种基于TCP协议的全双工通信协议,它可以在浏览器和服务器之间建

    2024年02月09日
    浏览(42)
  • ELK技术介绍:背景、功能及应用场景全面解析

            ELK是由Elasticsearch、Logstash和Kibana三个开源软件组成的日志管理解决方案,这一组合在近年来得到了广泛的关注和应用。ELK的出现,源于大数据和云计算技术的快速发展,以及对高效日志管理的迫切需求。         随着企业信息化程度的提高,各类应用系统和服

    2024年04月28日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包