这可能更适合服务器故障,但对我来说似乎更多的编程挑战.我错了.
我在想Facebook如何做它的功能.它拥有超过5亿活跃用户.他们如何设法为所有这些用户提供服务?是否有一个巨大的数据库为每个用户保存一条记录,以便每当有人登录时,都会检查该中央计算机的身份验证?我对这个话题一无所知,但我可以看到这样的解决方案很简单,不可扩展.有一点,中央服务器无法处理所有事情.
相反,假设中央数据库被分成100个数据库,以便负载在所有数据库中均匀分配.这必须是Facebook的功能,但他们如何知道哪些用户记录存储在哪台机器上?是否有记录存储在每台计算机上,当您登录时,随机用户计算机用于身份验证?这意味着每当有人注册或更改其密码时,必须在所有100台服务器上传播更改.
另一个解决方案浮现在脑海中.也许他们有办法将用户的电子邮件地址散列到特定的用户数据库.然后,Web服务器必须知道的是散列算法.但是这个解决方案提出了我自己的问题.如果要添加更多用户数据库计算机,该怎么办?您是否更改了散列算法以考虑101个用户数据库而不是100个?您是否会开始移动用户记录,以便101个用户数据库具有相同数量的用户记录?不,这看起来也很荒谬.
无论如何,正如你所看到的,我不太了解如何解决这些问题.有没有人对这个主题有一些推荐的阅读?