这里只是优化思路的一个具体应用场景。
在服务进程中 收到一个http请求的时候 会对客户端携带的token进行验证,一般token会有有效期的。这个一般可用于登录合法验证。
一般流程会是这样:服务进程redis验证token等信息,再处理业务。
如果服务进程数量上万个的话,那么单着一个验证token代价就会很庞大。几万个进程都会链接这个token集群进行验证和通讯。
1.减少通讯次数:可以通过本进程的内存缓存来达到一定效果,通过内存换来的。
2.添加离线计算:这个目的还是为了减少通讯次数,这里理论依据是整体消耗。假如一次redis验证的代价是 1MS,其中有10%的请求都会在token验证阶段被拦截掉(原因是过期了),那么我们可以通过token里面添加过期时间信息 来过滤掉,加入本地计算token过期时间为 0.01MS,通过验证后再进行redis查询, 那么整体来看,整体性能会提高约9%。这样的话token本身的生成方法,是有一定规则的,token的信息里面包含了一些其他信息达到快速验证的目的。
3.架构上添加接入层:验证放在接入层来做的话,后面的业务进程就可以去掉这个验证的东西了,达到去重去冗余的目的。甚至可以在硬件或者软件接入层进行验证。
在游戏应用领域,cdkey的兑换 也可以按照这个思路去进行优化。