这与编程和基础架构并没有特别的关系,但是在所有交换站点中,StackOverflow似乎是RESTful API部门中最了解的。
我为单个事件配置了一个端点,该端点可以处理3分钟内最多可容纳1k个事件的事件。我注意到许多事件“遗漏了”,但是我不确定我是否愿意在没有完全理解的情况下立即归咎于过度利用。
监听端点是/users/events?user=2345345
,其中2345345
是用户ID。从这里开始,我们对该特定用户执行必要的操作,但是如果在此期间下一个用户2895467
执行一个操作,该操作导致将新事件发送到/users/events?user=2895467
,然后再处理第一个用户。会发生什么?
我打算通过使用celery
来发信号通知任务来减轻这种担忧,这将大大减少这种情况,但是是否可以假设在单个端点保持同步的情况下可以错过事件呢?
答案 0 :(得分:0)
现实生活中的行为取决于用于“部署”的方法。
例如,如果您使用的uwsgi的nginx后面有单个非线程工作线程,则请求将被“顺序”处理:如果第二个请求在第一个请求被处理之前到达,则第二个将被“排队”(添加到积压中)。
可以排队多长时间,队列中可能有多少个请求
取决于nginx(listen backlog)的配置,uwsgi的配置(并发listen backlog),甚至取决于配置
操作系统内核(搜索net.core.somaxconn
,
net.core.netdev_max_backlog
)。当队列变为“满”时,新的
“并发”连接将被删除,而不是添加到队列中。