最近冒出来很多名词,看来有必要梳理一下。
一、在保证用户体验的前提下,通过异步、可容忍的数据丢失等手段,降低系统开销和复杂度。
例如:点击糗事百科的投票图标,用户会立即看到投票成功,其实在这个时候,这次投票还没送达服务器,而且有可能这一票会丢失。投票和投票结果之间是有损的,但是用户觉察不到,而且比起让他等待服务器真的返回结果体验更爽。
再例如:北京联通用户上传了一张照片,深圳电信用户在5秒钟之后才能刷出来这个图片,等待的过程中会有一些提示。这个时间差是有损的,但是跨地域的即时分享概率比较低,而且中间有提示信息,5秒钟也可以忍受(利用这段时间进行跨网镜像),用户体验并不是很差。
二、在系统需要维护(升级代码、更换设备等)或者遇到故障(断电、设备损害、网络中断等)的时候,通过将服务模块化、分布式部署等手段,尽可能保证核心服务不中断。
例如:QQMail在维护的时候,界面中有维护提示,维护模式下可以读邮件但是不能删除邮件,可以发邮件但是发送成功的信暂时不会在发件箱中出现,作为一个邮箱服务,维护并没有影响它的核心服务。
再例如:游戏的登录服务器发生故障,如果这时候系统可以保证已经进入游戏的用户还能继续游戏,向想要登录的用户显示故障提示,就可以降低故障带来的损失。
用什么名词并不重要,如何提升用户体验,如何保证核心服务不中断,如何进一步降低成本,才是关键。