# Yandex 架构

> 原文： [http://highscalability.com/blog/2008/2/24/yandex-architecture.html](http://highscalability.com/blog/2008/2/24/yandex-architecture.html)

**更新：** [用 Django](http://softwaremaniacs.org/blog/2008/02/24/why-offline-crashed-en/) 编写的 Yandex 新部分崩溃的剖析。 写入魔术会话变量会导致对每个请求的 InnoDB 数据库意外写入。 由于重建索引，写入花费了 6-7 秒。 有关系统大小，出了什么问题以及如何修复它的许多有用的细节。

Yandex 是俄罗斯的搜索引擎，其搜索索引为 35 亿页。 我们只知道一些有关它们如何工作的有趣事实，而在详细的体系结构级别则一无所知。 希望我们以后能学到更多，但是我认为这仍然很有趣。 从艾伦·斯特恩（Allen Stern）对 Yandex 首席技术官 Ilya Segalovich 的采访中，我们可以了解到：

*   搜索索引中有 35 亿页。*   超过数千台服务器。*   每天有 3500 万次搜索。*   俄罗斯各地的几个数据中心。*   两层体系结构。*   该数据库被分成几部分，当请求搜索时，它从不同的数据库服务器中提取这些位，并为用户组合在一起。*   使用的语言：C ++，Perl 和一些 Java。*   FreeBSD 被用作他们的服务器操作系统。*   2006 年的收入为 7200 万美元。

Yandex 不仅仅是搜索引擎。 这是一个门户。 我有一个朋友使用 yandex.ru 电子邮件地址。

哇。

我从未听说过 Yandex，但他们显然在那里做得很认真。 看到成功的事物出自俄罗斯/东欧，总是很酷：那里的顶级开发人员实际上真的非常出色：非常聪明和超强硬。

是的，Yandex 不仅仅是搜索引擎，它还提供了相当长的服务列表，其中包括电子邮件。
但是从我的角度来看，他们的服务并没有真正提供具有竞争力的质量水平，尤其是与 Google 服务相比：有时候，我认为 Yandex 搜索引擎不是根据相关性而是根据随机数生成器，邮箱来选择结果 经常被垃圾邮件淹没，等等。
就我而言，即使考虑到我居住在俄罗斯这一事实，我也更喜欢使用国际服务提供商，但 Yandex 仍然是俄罗斯最大的互联网服务提供商，并且由于一些奇怪的事实，确实有大量的俄罗斯人使用它 原因，例如它们只是“用来在 Yandex 中执行搜索”，或者键入 google.com 而不是 ya.ru 可能太耗时了...

Google 的俄文搜索不理想，因为俄文有多种形式的单词。 因此，也请使用俄语进行良好的搜索，您应该非常了解俄语。 现在，谷歌搜索俄语，就好像它是英语一样。

+可能是俄罗斯支持其搜索引擎来控制互联网的俄罗斯部分。

有俄罗斯搜索引擎 yandex 和 ramber，有俄罗斯汇款网络货币和 yander 钱，有俄罗斯社交网络，当然还有 rutube。

由于您没有俄语键盘，因此您也无法在浏览器中输入俄语域名。

（俄语）：
[http://www.seotools.ru/biblioteka-optimizatora/yandeks/arhitektura.html](http://www.seotools.ru/biblioteka-optimizatora/yandeks/arhitektura.html) -Yandex 体系结构（2000）

[http://www.searchrank.ru/arxitektura-yandeks-poiska/](http://www.searchrank.ru/arxitektura-yandeks-poiska/) （2007）

来自 HighLoad 2007 会议（俄语）的幻灯片
[http://www.google.ru/url?sa=t & ct = res & cd = 7 & url = http％3A％ 2F％2Fwww.jug.ru％2Fservlets％2Fimages％2Fmeeting_2007_10_13％2Fyandex-search-arch-posthighload.ppt & ei = guy6R46gB6T8wwH88oHGCg & usg = AFQjCNF7f2AHT-Sy2a2Cy2a2C6Y2a2C2Y2a6C2Y2a6C6a7C7a2C6C6Y2A6C7Y2A6C6Y2A6Y2A6Y2C6Y2E7](http://www.google.ru/url?sa=t&ct=res&cd=7&url=http%3A%2F%2Fwww.jug.ru%2Fservlets%2Fimages%2Fmeeting_2007_10_13%2Fyandex-search-arch-posthighload.ppt&ei=guy6R46gB6T8wwH88oHGCg&usg=AFQjCNF7f_AsyqvkjUGje6aPU0q-IGy-aA&sig2=vhyz3MV66M6p7Dgsk2SfCQ)

Google 确实为西里尔语（例如俄语或保加利亚语（我的母语））提供了支持。 也许 Yandex 做得更好。

该死的验证码区分大小写！ 确实不是一个好选择！

也许我是在挑选东西，但是“崩溃的解剖”一文的摘要中有两件事。

他们没有写任何魔术变量。 他们正在修改每个请求上的会话数据（不必要），从而将其保存到 DB。 没什么神奇的。

漫长的索引重建是由于使用了非顺序主键（MD5 哈希）导致的-InnoDB，这意味着它将在每个请求上重建整个事物，从而导致性能下降。

对我来说，这是神奇的，因为很难从代码中推断出后果。 而选择具有如此巨大负面影响的关键价值则是另一大法宝。 通过看那条线，会期望这样的效果吗？ 不是我，这就是为什么魔术突然出现。

Google does make stemming for cyrillic languages like Russian or Bulgarian (my native tongue). Perhaps Yandex does it better.

由于单一原因，我总是在用俄语搜索时使用 Yandex- **Yandex 会说俄语**，而 Google 不会。

但是 Google 获得了我所有的英语搜索，因为 Yandex 只是在“英语网”中做得不好。 但是，嘿-他们有一个哥哥可以向他学习，所以也许有一天...;）

yandex 看起来真的很好，并且我肯定它会在将来对我有用
谢谢

关于 Yandex 的相当不错的总结。 老实说，我从来不知道这样的网站是在今天之前退出的。