需求如下
- 数据的处理要尽可能地高效,吞吐量要尽量大
- 数据是用户上传的,但是需要保证该数据是唯一的,需要甄别出来并立刻响应给用户告知已重复
- 这个有唯一约束的数据,数据量较大
举个例子
秒杀活动开始,用户下单购买商品,然后创建订单号发送到交易系统中,但是订单号并不是由系统生成的,而是由用户自己输入的(虽然这个需求很奇怪,但是就假设他一定要这么做吧),成功下单后会有下单记录,所以需要即时响应给用户告知其是否下单成功
需求 1+3,直接往 redis 里面丢,持久化就丢进队列让他慢慢写 db,不管唯一了,梭哈!但是行为队列程序是后期再进行持久化,这样就无法甄别数据唯一这个奇怪的需求了
需求 2+3,直接往 db 里面丢就完了,梭哈!但是此场景是会出现高并发的情况,db 的处理能力无法满足到需求 1 。
需求 2+1,我想到的是用 redis 等缓存服务,把所有交易的订单号塞进去,这样就能高效地实现判断数据是否唯一了。但是内存比较昂贵,订单长年累月下了数据量巨大,可能满足不了需求 3 ?
想请教一下有没有解决方案,难道是 redis 机器堆起来梭哈?
