1 token生成
token = md5(uid+timestamp+nance)
存到redis,根据业务设置不同的有效时间。
2 消息合法性(防篡改)
数字签名
e.g.req:{
uid int
param1 int
param2 int
sig string
}sig = md5(uid+param1+param2+token)
也可参考:
kong插件hmac-auth
3 幂等
方案一:
业务支持具有消息唯一ID,并且能够持久化,则先查询。
根据不同的业务,可考虑悲观方式或乐观方式执行业务。
方案二:
使用2的签名,token+sig存放在redis中。 有效时间根据业务自行设置。
该方案并不是完全幂等,根据功能需求和性能需求判断是否使用。
4 请求追踪
http业务请求追踪工具很多。 zipkin,jeager等。
tcp等自定义协议,可参考zipkin的方案。
用户一次连接,生成一个spanid。