大多数CDN服务器对经常访问的内容使用缓存。
场景:允许假设有人上传了一张非常流行的图片,许多用户(1000)从同一个位置试图访问该图片。
问题:让说,secs服务器首先接收请求,然后检查它的缓存,然后为该图片找到内容缺失,然后从CDN.If中提取内容,让checks和服务器获得更多的请求,同时对相同的内容进行检索。
服务器是否会从服务器获取更多的内容999 (因为服务器仍然在提取数据并且缓存中没有数据)并更新缓存?
如果不是,服务器实现什么样的方案来避免这种情况。
发布于 2017-12-20 07:00:45
您可以在服务器端设置一个锁,以避免对CDN的太多请求。
当服务器收到请求时:
如果您有许多服务器,并且缓存在这些服务器之间共享,即多个进程。您可以使用分布式锁,例如Redis‘SETNX
。
但是,在这种情况下,您需要小心使用步骤3:如果服务器成功锁定,但在解锁之前崩溃。其他服务器将永远等待。因此,您还需要设置锁的过期时间。
https://stackoverflow.com/questions/47905718
复制