对不起,这样一个高层次的问题。 我了解服务器负载平衡的基础知识,但pipe理30,000台服务器的概念对我来说有点陌生。 平衡两台或三台服务器的规模是否相同?
这与memcached,sql / mysql,search引擎等事情有什么关系?
这是一个“控制器”服务器和从属服务器的传统系统吗? 如何处理冗余?
感谢有关此事的文章的任何信息或方向。
编辑感谢回复的家伙。 我的post被closures了,但是我修改了标题,希望能重新打开,因为我发现这些超级高级数据解决scheme涉及的问题解决过程令人着迷,而且我目前正在构build一个需要一些基本负载平衡,因此这个问题。
Google在其服务器上使用的大部分软件堆栈都是内部开发的。 为了减轻不可避免的硬件故障的影响,软件被devise为容错。
来源: Google平台
看完这篇文章后,我猜测这与使用Linux内部开发的内部软件堆栈来平衡less数服务器之间的负载是一样的概念。 例如GFS (Google文件系统), BigTable – 基于GFS的结构化存储系统
这个链接描述了他们如何平衡networking负载。
他们使用负载均衡开关来分配负载。 所有的网站请求到达一台机器,然后将请求传递给其中一台可用的服务器。 交换机可以从服务器上找出哪一个是最less的,所以他们都在做同样的工作量。
Google的networking拓扑如下:
当客户端计算机尝试连接到Google时,多个DNS服务器通过循环策略将www.google.comparsing为多个IP地址。 此外,这是第一级的负载平衡,并将客户端指向不同的Google群集。 Google群集拥有数千台服务器,一旦客户端连接到服务器,就会执行额外的负载平衡,以将查询发送到装载量最低的Web服务器。
这里的大部分是,如果软件不是按比例devise的,怎么可能呢? 例如,Facebook现在最大的限制之一就是对MySQL的依赖 – 他们可以通过投掷更多的机器来摆脱这个问题,但是他们自己的工程师称之为“比死亡更糟糕的命运”。
通常情况下,您需要能够平衡请求负载,并devise了许多开源项目或其他项目。 但是这带来了开销,包括写日志,延迟写入和“最终一致”的体系结构。 换句话说,缩放并不便宜。
因此,像服务静态内容的Web服务器之类的东西可以很容易地被并行化。 Memcached和其他caching系统很容易均衡。 但是,如何改变单点故障? 您的单一的大型关系数据库如何扩展? 那么文件商店呢? 实质上,这是一个研究的整个分支……不是一个可以通过一个问题来回答的问题。
我认为相同的概念应该是相同的,关键点是如何在可用资源之间分配负载和数据,以及如何定位数据。
一种方法是服务器的地理分布。 每个用户将被引导到最近的服务器。
可以使用类似registry的服务来查找请求的数据。
想想DNS服务的实现。 它拥有非常庞大的分布式数据库。 根节点将用户引导到其他较低级别的节点,直到您到达可以回答您的查询的负责节点。