我对扩展服务器的技术非常困惑
假设您在一台配备 12 核 CPU 的计算机上运行一台高流量服务器,并有一台服务器用于数据库。
在一段时间内,这种方法是可行的,但如果并发用户数量变得非常高怎么办?如何扩展?一台服务器能够处理的数量是有限的。
我在网上搜索了一段时间,但找不到一个能概括如何做到这一点的答案。例如,Facebook 如何处理如此多的用户?如果有人有任何答案或可以向我指出任何资源,我将不胜感激
答案1
您说得对,一台服务器上的内存和处理器数量都是有限的。更不用说,如果您只有一台服务器运行您的应用程序,那么您就只能把鸡蛋放在一个篮子里了。如果您的单台服务器发生故障怎么办?
因此我们进行扩展,添加运行相同应用程序的多台服务器以增加可扩展性和高可用性以及负载平衡。
我们可以扩展应用程序层和数据库层。
您可以使用的另一种技术是卸载。例如,您可以在设计中引入内容分发网络 (CDN)。使用 CDN,我们可以将内容缓存在全球的边缘节点上。这样,我们的应用程序的用户就可以在本地访问内容,而不必连接到可能位于数十万英里之外的一组服务器来访问您的应用程序。这样做的结果是您需要的服务器更少,因为大多数内容请求将由 CDN 提供服务,这意味着服务器本身的负载更少。
另一种卸载方法是在应用程序服务器和数据库服务器之间添加缓存层。使用内存缓存中的 REDIS 或 MEMCACHED,常见的请求查询可以缓存在 REDIS / MEMCACHED 集群上,而不是从数据库服务器检索。这加快了对数据库的访问速度,并且再次产生连锁反应,即我们需要更小、更少的数据库服务器。
Google、Facebook 和所有大型互联网应用程序都使用了更多技术。
CDN https://en.wikipedia.org/wiki/Content_delivery_network
优雅地扩展 http://philip.greenspun.com/seia/scaling
希望这可以帮助,
麦克风。