[TOC]

单点登录是什么?

单点登录又叫SSO,就是在分布式的场景中,只需要在一个节点登录,就可以访问其他节点

单点登录怎么实现?

当访问一个微服务时,会先经过网关,在网关中定义一个过滤器,判断token是否过期、是否有效

  • 如果Token存在且正确则放行
  • 没有Token或错误响应提示

网关放行之后,后续的模块根据请求参数来判断使用哪种登录方式(账号密码登录、验证码登录、扫码登录),如果登录成功,会生成一个新的Token并返回给客户端。此后访问每个模块都需要携带Token,否则需要重新认证

扫码登录怎么实现?

使用Java实现微信扫码登录,会有四个主要步骤,分析出每个步骤的详细细节:

  • 第一部分:用户在客户端点击登录按钮,请求后端,展示二维码
  • 第二部分:用户同意授权,携带授权码code回调服务器
  • 第三部分:根据授权码code申请令牌信息并封装
  • 第四部分:根据令牌获取用户信息并封装
  • 第五部分:详细业务,校验用户,将业务相关信息保存数据库
  • 第六部分:登录成功

扫码支付怎么实现?

生成二维码:创建商品订单、生成支付交易记录、生成二维码图片地址展示给用户

用户扫码下单:请求支付平台,支付成功后,支付平台异步通知商户支付结果

发送支付通知:短信、邮件、应用内消息等形式

大文件分块上传怎么实现?

(1)前端上传文件前,先根据文件计算MD5值,并携带MD5值请求检查文件是否存在

  • 如果文件在系统已经存在,则不再上传。
  • 如果文件在系统不存在,则前端将文件进行分块,准备开始上传

(2)前端上传前给服务器发送消息,验证当前分片是否已经上传。

  • 如果已上传则不再上传
  • 如果未上传则开始上传分块

(3)前端使用多线程上请求上传分块,服务端将分块信息上传到MinIO。

(4)前端所有分片上传完毕后,发送合并分片请求,校验文件的完整性。 (上传的分片应该具备顺序标记)

(5)前端给服务器传一个MD5值,服务层根据文件信息找到MinIO中的分块文件,下载到本地临时目录,将所有分块下载完毕后开始合并

(6)服务器合并文件后,利用MD5值计算是否与源文件一致。

  • 如果一致,合并成功
  • 如果不一致,说明文件可能由于网络丢包导致文件不完整,需要重新上传

(7)合并完成将合并后的文件上传到MinIO。并删除MinIO中的分片

系统怎样异常处理的?

自定义异常处理类

全局异常处理机制

多种搜索模式怎么实现的?

调用策略类中的策略方法

策略方法根据配置文件中的属性判断哪个实现类执行

将执行结果返回