谷歌是我最好的朋友也是我最大的敌人
众所周知,谷歌是世界上最大的公司之一。Google 从 1998 年的一家小型初创公司发展而来。如今,Google 通过 Google 搜索、YouTube、Gmail 和其他 Google 拥有的产品和服务获得了数十亿用户。
分享是我的热情所在,今天我很高兴能分享我对 Google 如何构建这些大型系统的了解。
规模的艺术
谷歌的故事是一个扩大规模的故事 。目前谷歌有超过 800,000 台机器。2017 年,Google 索引了 130 万亿个网页,每天处理超过 1 亿次搜索请求和 20 PB (¹⁰¹⁵ B) 的用户生成数据。到现在,谁知道呢?
是什么让谷歌如此规模?
谷歌使用什么技术栈?
谷歌的技术栈
Google 使用许多反向代理将任何客户端请求定向到后端的相应服务器。
所有图像缩略图缓存文件、大量媒体和昂贵的常见查询都被缓存,因为它们需要大量的后端处理。
大小很重要
创建的 Google 数据中心
谷歌在世界各地拥有和运营数据中心,以确保其产品每周 7 天、每天 24 小时不间断运行。最后估计共有 36 个数据中心——美国 19 个,欧洲 12 个,亚洲 3 个,俄罗斯和南美各 1 个。未来的数据中心站点可能包括马来西亚、立陶宛和南卡罗来纳州的布莱斯伍德,据报道谷歌在那里购买了 466 英亩的土地¹。
服务器如何存储在数据中心?
服务器放置在装运容器的机架中。每个运输集装箱最多可容纳 1,160 台服务器。一个数据中心将由 100 个模块化单元组成。
操作系统实现
Google 从 1998 年开始使用 100% 定制的 RedHat Linux。Google 定制了 glib、rpc、ipvs、gPXE 引导加载程序等。
秘制酱料……
Google 软件的三个核心要素是:GFS、Google 文件系统、BigTable 和 MapReduce 算法。
谷歌文件系统——GFS II。它是一个可扩展的分布式文件系统,适用于大型分布式数据密集型应用程序,在廉价的商品硬件上运行时提供容错能力。GFS 跨多台服务器存储数据,几乎在所有机器上运行。
- GFS 架构中存在三种实体:客户端、主服务器和块服务器。由多个客户端访问的单个主服务器和多个块服务器²。
- GDS 还依赖于 CAP 定理,即分布式数据库系统只能具有 3 个中的 2 个:一致性、可用性和分区容忍度³。
- GFS II 架构
- Google 数据库 — BigTable⁴。为了为所有这些数据提供某种结构,Google 使用了 BigTable,- - Google 于 2004 年开始设计该表格,该表格已用于 70 多个 Google 项目,包括 Google 地图、Google 地球、Blogger、Google Print、Orkut 和核心搜索索引。
BigTable — Google 数据库
谷歌计算——MapReduce⁵。它为公司提供了一种方法,可以利用其数据实际制作一些有用的东西。例如,MapReduce 可以找到特定单词在 Google 搜索索引中出现的次数;出现单词的网页列表;以及链接到特定网站的所有网站的列表。
建立自己的谷歌
您可以使用与 Google 技术堆栈相匹配的开源来构建自己的 Google。
使用开源构建您自己的 Google
我们从哪里得到它们?
- CentOS:https : //www.centos.org
- HDFS:https : //hadoop.apache.org/hdfs/
HDFS 是一个文件系统,它扩展到一组商用机器而不是单个高端机器。HDFS 是一个分布式的大规模存储组件,具有高度的可扩展性。另外,HDFS 可以接受节点故障而不会丢失数据,并且以其可靠性而广为人知。 - HBase:https : //hbase.apache.org
- Hadoop、MapReduce 和作业跟踪器:https : //hadoop.apache.org
如今,Hadoop 如此受欢迎,它提供了以下特性:可扩展、容错、灵活且经济高效。
如果您按照我的建议使用技术堆栈,也许我们可以实现。