【发布时间】:2015-12-23 16:02:33
【问题描述】:
我想在文件系统中存储大量(数百万)用户头像。 但文件必须均匀分布在文件系统中,以便在添加更多文件时更好地扩展。
头像为 5-10KB 大小的图片。 该应用程序是 ASP.NET MVC (C#)
存储:
考虑以下这些唯一用户 ID:bob、mike、robert、johnson 头像名称将是 bob.jog、mike.jpg、robert.jpg、johnson.jpg
渲染头像的HTML元素:
<img class="avatar" src="www.xyz.com/getAvatar?user=bob" />
<img class="avatar" src="www.xyz.com/getAvatar?user=mike" />
这将转到 getAvatar 控制器操作,该操作将从物理位置获取头像并写入响应缓冲区
当前架构:
[HttpPost]
public ActionResult SaveAvatar(HttpPostedFile avatarImage, string user)
{
//get MD5 hash of user (bob=9F9D51BC70EF21CA5C14F307980A29D8)
//split MD5 hash string to get the folders (\9F\9D\51\BC\)
//save avatar at path <file_server>\images\9F\9D\51\BC\bob.jpg
}
[HttpGet]
public ActionResult GetAvatar(string user)
{
//get MD5 hash of user (bob=9F9D51BC70EF21CA5C14F307980A29D8)
//find the file location from MD5 hash (9F\9D\51\BC\)
//return <file_server>\images\9F\9D\51\BC\bob.jpg
}
我在这方面做得不够吗? 如果是,您将如何构建它?
我可以使用数据库中用户的用户 ID(自动生成为新的 UUID),但在这种情况下,我必须将用户 ID 存储在我拥有用户名的所有表中
感谢阅读
【问题讨论】:
标签: c# asp.net-mvc-4 architecture filesystems scalability