Osk*_*lin 5 architecture multiserver
我一直想知道; 像Facebook代码的网站如何能够拥有多个服务器?
代码如何考虑到多个服务器将运行相同的代码并从添加更多服务器中获益?
或者,无论代码如何,网络服务器都可以处理这个问题?
通过共享和网络。一台或多台服务器的代码“应该”相同。
您可以通过数据库、Memcache 等内存、平衡器等共享数据。如果您像 Google 那样专门化服务器(有些执行 URL 获取,有些保存数据,有些执行数字运算等),那么现有的硬件就可以得到更好的利用。
该代码可以使用调度逻辑(通常通过 API 抽象),以便在有一台服务器或数百万台服务器时它的工作方式相同。
IPC(进程间通信)可以通过网络启用并允许“更紧密”的服务绑定。谷歌甚至有一个协议缓冲区项目来帮助解决这个问题。
基本上,服务器必须共享才能获得真正的好处(除了故障转移/备份),代码需要使用一定程度的抽象来帮助共享。实际共享通常使用循环或Map/Reduce逻辑。