我正在努力构建一个销售应用程序,买家可以在上面注册商品补货提醒。这对于小型应用来说可能很简单,用户很少,商品也不多,但是我们假设以下情况。
应用程序有100多万用户(亚马逊,eBay,AliExpress等)。
所有的用户都想买香蕉,但它的缺货。
每个用户创建一个补货提醒
香蕉补给
对于每一件商品的补货,都必须对补货提醒列表进行迭代,并进行相应的调度(邮件、推送等)。
这种系统如何设计?用哪种数据库、工具等?
用户通知系统通常是基于队列的。究竟是什么数据库支持库存管理系统并不那么重要。
你需要两个队列,流程是这样的。
库存更新从 0
到 >0
(或不管是什么补货)将物品添加到补货警报队列。
DB worker从补货提醒队列中消耗商品,应用业务逻辑,并将用户推送到通知队列中。
Notification worker从通知队列中消耗用户,并渲染邮件、推送、短信等。
这种设计的优点。
推送到补货通知队列可以通过多种方式实现。一个SQL DB触发器或存储程序,加载过程中的逻辑,甚至是一个扫描DB的chron作业。
一个单独的补货警报工可以最大限度地减少库存DB加载过程所要做的额外工作量。最多,它必须将项目添加到队列中。
将补货警报工作者与通知工作者分离,隔离了定义补货警报的业务逻辑,允许与现有的通知队列集成。
这种设计的缺点。
一些需要考虑的事情