一位曾经的谷歌工程师,花费两年时间,辛苦整理了一份清单。本文转自量子位,作者晓查、栗子、方驭洋,如有侵,可删!
这个名为 “xg2xg” 的清单,原本是这位前谷歌工程师(ex-Googler),为所有离职的谷歌工程师写的一份 “厂外” 生存指南。
但实际上,这个大全实打实地也成为了一份最佳开发工具大全。
所有的程序员,都能受益于此。
https://github.com/jhuangtw-dev/xg2xg
美国网友对这个大全给予了很高的评价:这份清单中列出的开源软件,不仅解决了硅谷大厂前员工的难处,也能为其他所有码农解除困惑。
在这套大全的指导下,任何一个工程师,都能获得类似在谷歌内部写代码的体验。xg2xg 上线仅仅一天就登上趋势榜,截至今天,已在 GitHub 收获 6200+ Star!
清单其中大部分替代软件是 Google 开源的项目,或者是受谷歌论文的启发,由开源软件基金会自己做的第三方实现。即使你从来没进过 Google 工作,也在享受着 Google 工程师们带来的福利。不禁让人感叹 “谷歌拯救世界”。
下面就让我们一起来看看这份清单吧。
开发工具一览
这份清单总共有两部分,前半部分介绍的是码农常用的开发工具,包括核心技术、基础设施、服务、开发运维等;后半部分则面向非技术人员。
核心技术工具
大数据处理工具
Google 内部工具:MapReduce;
替代品:Apache Hadoop、Spark
想要在上千台机器组成的大集群上、并行处理上 TB 级别的海量数据集,就要用到这类大规模数据处理工具了。
MapReduce,就是这类工具的先驱。Jeff Dean 等人 2004 年提出了这个分布式计算架构,最早在 Google 内部用来处理大规模数据的并行计算。Jeff Dean 还亲自为它撰写过使用指南。
而 Apache Hadoop 这个开源替代品,也是根据 Jeff Dean 当年的论文自行实现而成,能提供与 MapReduce 文件系统类似的功能。
如果想要更快的数据处理速度,还有 Apache Spark 供你选择。相对于 Hadoop 的 MapReduce 会在运行完工作后将中介数据存放到磁盘中,Spark 使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。
序列化工具
Google 内部:Protocol Buffer;
外部替代品:Protobuf、Thrift、Avro
这一组工具用于结构化数据序列化,上面这些,都是 xml 替代品,比它更小、更快、也更简单。
Protocol Buffer 和 Protobuf 都是 Google 开发的序列化格式(Serialization Format),github 上可以找到这个项目的源代码。
比起 XML 和 JSON,Protobuf 更小、更快,也更简洁,很适合做数据存储或 RPC 数据交换格式。只需要定义一次数据结构,就可以利用各种不同语言或者从各种不同数据流中对结构化数据进行轻松读写。
完全撇开 Google,也不是就没有别的选择了。其他厂商也有类似的序列化方案。
比如 Facebook 开发的 Thrift ,它与 Protobuf 基本一样。
Avro 同样也有 schema(也就是程序中结构化数据的定义),但是实现方式跟 Protobuf 和 Thrift 有很大区别。
由于数据不需要额外的标注,Avro 在序列化大量相同的数据时会比 Protobuf 和 Thrift 更有效率。不过在编码大量变化的数据时,因为 schema 会随数据一同存储,Avro 的效率会退化到 JSON 和 MessagePack 的级别。
看来在核心技术工具上,重回人间的前 Google 人还是有许多不错的选择的。
基础设施
大型集群管理系统
Google 内部:Borg;外部替代品:Kubernetes、Apache Mesos、HashiCorp Nomad
大型集群管理系统用于管理云平台中多个主机上的容器化的应用。
Borg 是 Google 内部的大型集群管理系统,现如今应用最广泛的服务编配系统 Kubernetes 就脱胎于 Borg。
Borg 让开发者能够不必操心资源管理的问题,做到跨多个数据中心的资源利用率最大化。
没有 Borg 十五年的经验,也就不会有 Kubernetes。虽然作者把它放在开源 / 真实世界这一栏里,但事实上 Kubernetes 也是由 Google 设计并参与开发的。
Kubernetes 使用 Go 语言编写, 是一个大而全的解决方案,服务调度、网络、存储、安全通通一手抓,而且本身的架构也非常好,在上面做二次开发非常容易。
HashiCorp Nomad 同样是一个比较常见的开源调度程序,架构简单,能将资源管理器和调度程序的功能集成到一个系统中。Nomad 也是分布式的,高可用且易操作。但显然 Kubernetes 的功能会更丰富。
至于 Mesos,它仅仅是一个调度系统,无法直接使用,要配合各种 Mesos framework 来实现各类功能。
存储
当然,Google 内部工具也不是所有的都能找到完美的替代品。
至少在存储这件事情上,就有网友不赞同原作者观点。他认为这份清单在一定程度上具有误导性,某些替代品根本达不到 Google 内部工具的水平。
比如将 Colossus 和 HDFS 对比是在开玩笑,相比之下,HDFS 就像是一个玩具。要说对比,它智能和十年前已经退役的 GFS 相当。
但 HDFS 恐怕是开源软件中 Colossus 最好的替代品,对于 “通用,大型,分布式文件系统” 的使用情况,很难找到有比 HDFS 更好的了。
其他开发工具
列表中还有服务、开发运维、安全等工具的替代品清单,由于篇幅限制,我们不再一一介绍,有需求的同学可以自取。全部工具的下载链接请参阅文末的 GitHub 地址。
还有什么福利
如果你不是工程师,上面那些工具大概就用不上了。不过,只要是个公司或者团队,总会有 IT 和运营需求。
比如说,饭总是要吃的。
很多网友看了这份清单,最感兴趣的就是这一项:
离开 Google 的人类,再也找不回免费食堂。
毕竟,“中午吃什么” 的哲学问题,每次想起来都是折磨。
羡慕的时候,可以用以下口令来安慰自己:
公司有吃的,还不是为了让你们多点时间工作?
如果你觉得这一条说服力不够,还可以跟一句补充说明:
Google 最初是为什么提供免费食物的?就是山景城总部周围吃的选择太少了,开车出去吃来回要一小时。对,就是想让员工省下时间好好上班。
吃,只是 IT / 运营章节的第一条。
后面,还有梗图生成器 Memegen。
工作太辛苦的时候,可以皮一下:
△ 当没有 GPU 的人,遇到了 Google Colab
对此,甚至有人呼吁:
如果 Google 全家桶把 Memegen 收了就好了。
所以,这个章节并没有和工作相关的资源么?
看看完整列表的话,还是能找到的:
有一些必要的小工具。
比如,CODEOWNERS 可以用来指定哪些用户来审查代码,1Password 是个密码管理器。
也有一些同学,没在上面找到自己需要的答案,便直接提问了:
Google 这样的大厂,公司内部 wiki 用的是什么啊? 我们公司用的是 Quip,它就是个黑洞,文档一进去就出不来了。
然后,有热心人士回答了这个问题:
虽然不知道 Google 用的什么,但 Confluence 是很常用的。
除此之外,你还用过哪些比较实用的开发者工具呢?
相关推荐
GitHub 上标星 115k+ 的 Java 教程 GitHub 上标星 115k+ 的 Java 教程 GitHub 上标星 115k+ 的 Java 教程 GitHub 上标星 115k+ 的 Java 教程 GitHub 上标星 115k+ 的 Java 教程 GitHub 上标星 115k+ 的 Java 教程 ...
一款名叫Steam++的工具软件,解压即用,打开后运行exe文件,勾选一下GitHub和Steam的选项,再点击加速即可上网,解决GitHub有时上不去的问题,为广大码农解决问题,目前是3.0.0版本。
微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信...
github图床+picgo+vscode yyds.md
在前端开发中,模仿知名网站如GitHub的界面是常见的学习方法。这个项目聚焦于GitHub的首页和注册页,通过HTML和CSS来实现静态页面的复刻,旨在帮助初学者理解前端网页布局、样式设计以及响应式网页开发的基本概念。 ...
Github获赞55K+面试笔记-33MBpdf
GitHub加速器:steam++ 官网下载地址:https://steampp.net/
而作为全球最大的开源代码托管平台,GitHub则为开发者提供了存储、管理和协作开发项目的重要工具。本文将深入探讨如何利用GitHub进行Python项目的开发与管理。 首先,让我们了解一下GitHub。GitHub是一个基于Git的...
Github标星26k+!一个神奇的软件!1分钟即可打造了一个科幻风格的终端-附件资源
OhMyStar 用来管理 Github 上自己 star 过的项目,可以打标签、分类管理等。 应用介绍 OhMyStar能够帮助您进行Github Stared Repo管理。 OhMyStar可以无缝同步你在Github star的所有repo。在本地浏览、搜索这些...
标题中的“Python-利用GitHub上喜欢star的项目生成类awesome列表的汇总页面”指的是一个Python脚本或工具,它的功能是自动收集用户在GitHub上点赞(star)的项目,并整理成一个类似于“Awesome”系列的列表。...
C#是由微软开发的一种面向对象的编程语言,它被广泛用于Windows桌面应用、游戏开发、移动应用以及Web应用。在这个项目中,C#的强类型和丰富的类库使得创建这样的转换工具变得简单高效。 WinForms是.NET Framework的...
GitHub,作为全球最大的开源软件托管平台,对于开发者来说是一个不可或缺的工具。...无论是个人开发者还是大型企业,都能在 GitHub 上找到适合自己的工具和资源,提升开发效率,实现知识和技术的交流与进步。
【标题】"Github用户排名仓库star排名"是一个项目,它主要关注的是GitHub平台上用户和仓库的受欢迎程度。在这个项目中,开发者使用了GitHub的API v3来获取关于用户和仓库的详细信息,尤其是仓库的“Star”数量,这是...
labuladong的算法小抄 GitHub 68.8k star的硬核算法教程
GitHub是一个全球知名的代码托管平台,允许程序员上传、分享和协作开发各种项目。在这个平台上,kdb+的用户和开发者可以创建自己的存储库,包含kdb+的脚本、程序、工具或者示例,以便其他人查阅和使用。将这些存储库...
本项目基于MinhasKamal ...github 资源打包下载工具,可以用来下载单个文件夹。 本项目在线使用地址:周大侠啊DownGit 使用方法: 比较简单,就是把想要打包下载的资源链接放入输入框内,点击下载,等待数秒后即可。
GitHub + PicGo + Typora 搭建个人图床详细教程(个人博客)
基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于...