分布式系统架构:技术栈详解与快速进阶
上QQ阅读APP看书,第一时间看更新

2.3 前后端交互难点

1. 前后端合理划分逻辑

当用户体系发展增大时,用户访问系统的频率也会加大,系统的后端服务器压力非常大,更易受到外界的攻击,如通过木马程序、篡改用户资料等,所以系统的安全性很重要。那么如何防止外界攻击呢?

HTTP的请求容易被截取篡改,而SWF文件也存在被攻击的风险。把HTTP的请求升级成HTTPS短期内可以防止恶意攻击,但当外界破解了证书后,同样可以截取篡改,所以从技术层面很难防止。前后端沟通合作时,需要考虑安全、性能等问题,而不是用“偷懒”的方式去快速实现功能,需考虑数据校验、交互令牌授权、敏感数据加密等。此时如何在其中权衡是一个很大的难点。我的建议是,首先看功能的复杂度和涉及面,如复杂且涉及面广,评估工作量时需全面考虑安全性、性能等问题。如功能不复杂且涉及面不多,不建议全面考虑以上的问题,可以在设计时主要考虑大的方向,更多细节可以通过注释的方式标明,为后续提供思路。

提示

思考问题不要掺杂着固定的思维,多从高效、用户体验角度去设计,不要为了完成任务而完成,双方多配合沟通,合理化交互请求,尽量精简内容,提高网络传输的速度,只要不涉及大的架构性变动,不要嫌麻烦。当功能出现BUG时,双方要快速配合定位问题并处理。

2. 技术方面

在技术方面,有如下几点建议。

1)合理约定精简接口:前后端可以相互讨论,根据实际业务场景去设计接口,接口的地址、参数应当精简,以加快网络传输。

2)前后端授权认证机制:前后端可以根据实际业务场景讨论使用合适的授权认证机制,尽量满足业务场景,同时也具有较高的安全性。

3)Head头部识别:前后端交互过程中,可以充分利用Head头部特性去设计,支持密文传输、共同化参数统一处理。

4)入参、出参统一格式化:入参、出参具有一定的格式,交互中可以提前确定一套完整且易扩展的标准格式。

5)业务状态标准化:业务状态码标准化,可以方便前端进行定制化的业务扩展,如定制化弹窗、提示、业务场景处理。

6)跨域处理:跨域在分布式中频繁出现,由于前后端分离后,两端各自部署,部署的特性导致两者不属于同一个域名下,影响两端交互。有效选择跨域处理方案尤为重要。

7)静态资源合理化:分布式环境前后端分离状态下,前端页面的相关静态资源文件需要提前规划部署方案,有效提高用户访问速度。

8)离线获取数据:提高用户体验,在无网络情况下,充分利用之前下载的网络数据进行交互,满足短时间内的业务场景需求。

9)数据兼容:前端涉及多种浏览器、手机设备。这些浏览器、设备间访问需要兼容。

10)网络传输:交互过程中尽量减少传输的数据量,提高传输的效率。

11)数据缓存规则:前端、后端根据业务功能场景特性,可以商讨部分数据或字段进行缓存以及存储的策略规则,从而提高响应速度。

12)高可用部署:交互过程中需要考虑如何高效交互,以及高用户量访问时如何避免异常卡死,高可用的部署策略将尽全力保证两端的正常。