我相信很多人都知道图片托管网站,如imgur,min.us,photobucket等。
不是我想开发一个,但除了上传文件,在某个目录中的某个目录中组织它,这些网站涉及哪些架构考虑因素?特别是每天有数百万的页面浏览量(就像imgur,我想象的那样)
我对此感到好奇,因为很多网站(比如约会网站等)似乎都是图像密集型的。即使不是数百万页面浏览量,在线高效图像交付的基本架构要求是什么?
答案 0 :(得分:2)
如果您在谈论内部服务器架构,需要考虑很多因素。
有安全吗?检索图像是否符合任何业务逻辑?你将使用什么Web服务器?您正在查看什么类型的请求分发(您将在50%的时间内为10个图像中的1个提供服务,而在其他50%的时间内为100,000个中的1个提供服务吗?
假设没有安全性,您使用的是一个不会为您进行任何缓存的简单Web服务器。
那(我指的是缓存)将成为你的主要问题。您将需要编写一个isapi过滤器/模块/无论如何保持您的图像在内存中具有最高的x%命中率。 x将取决于您的分布模式。
就存储而言,请勿将图像存储在数据库中。文件系统非常擅长遍历目录结构。只需将“hello.png”图像放在“images / png / h / e / l”目录中,使用您找到的多少个字母目录就可以使图书馆适合<每个目录100个图像。
答案 1 :(得分:1)
如果是由图像视图导致的负载,您会担心我想您希望在一系列服务器上分发图像。这是一个内容传递网络问题。第一种解决方案就是在一个位置放置大量服务器以便分散负载,下一级解决方案是拥有一系列地理位置分散的服务器,并根据客户端的IP地址将它们指向关闭服务器。
我不确定是否真的需要服务器的地理分布来提供图像,因为图像服务的负载非常低。但如果您开始提供视频,这肯定会适用。