【发布时间】:2019-06-02 00:51:27
【问题描述】:
我有休息网络服务,它基本上需要一个数字,并提供该数字是否为素数,即纯文本真或假。
数以百万计的用户正在使用这项服务。
现在一个用户正在发送非常大的数字,例如(15-20 位数字/大数字),我的服务需要时间来计算该数字是否为质数。该用户连续发送数千个相同号码的请求。那么如何处理这些相同的数千个请求。
例如:
在请求中发送 101221323232324343 号码,我的服务需要 3 秒来确定该号码是否为素数。现在他每秒发送 1000 个请求。
如何处理这种情况?
【问题讨论】:
-
我猜你可以使用内存缓存。
-
还有这么多不同数字的用户......缓存会太大......不要认为缓存是一个好的解决方案......
-
所以你可以施展魔法......:因为要么你使用内存来节省处理时间,要么你为每个请求腾出更多的处理时间......没有第三个选择,如果你有一个聪明的缓存的方式可以节省一些内存,不是简单的把每个请求都放到缓存中
-
为避免用户发送大量请求,您必须对它们进行速率限制。
标签: java rest web-services