最佳开发工具大全,GitHub Star 6.2k+

codexs 2020-07-12 原文


最佳开发工具大全,GitHub Star 6.2k+

一位曾经的谷歌工程师,花费两年时间,辛苦整理了一份清单。本文转自量子位,作者晓查、栗子、方驭洋,如有侵,可删!

这个名为 “xg2xg” 的清单,原本是这位前谷歌工程师(ex-Googler),为所有离职的谷歌工程师写的一份 “厂外” 生存指南。

但实际上,这个大全实打实地也成为了一份最佳开发工具大全。

所有的程序员,都能受益于此。

https://github.com/jhuangtw-dev/xg2xg
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
△ 当没有 GPU 的人,遇到了 Google Colab

对此,甚至有人呼吁:

如果 Google 全家桶把 Memegen 收了就好了。

所以,这个章节并没有和工作相关的资源么?

看看完整列表的话,还是能找到的:

有一些必要的小工具。

比如,CODEOWNERS 可以用来指定哪些用户来审查代码,1Password 是个密码管理器。

也有一些同学,没在上面找到自己需要的答案,便直接提问了:

Google 这样的大厂,公司内部 wiki 用的是什么啊? 我们公司用的是 Quip,它就是个黑洞,文档一进去就出不来了。

然后,有热心人士回答了这个问题:

虽然不知道 Google 用的什么,但 Confluence 是很常用的。

除此之外,你还用过哪些比较实用的开发者工具呢?

发表于
2020-07-12 22:55 
逆锋起笔 
阅读(
评论(
编辑 
收藏

 

版权声明:本文为codexs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/codexs/p/13290513.html

最佳开发工具大全,GitHub Star 6.2k+的更多相关文章

  1. 程序员永远修不好的Bug——情人节

    程序员永远修不好的Bug——情人节 盼望着,盼望着,周五来了 情人节的脚步近了 一切都像热恋时的样子 飘飘然放 […]...

  2. github 代码下载到本地用法

    经过了12306的坑爹,越发的确定我要用心编程,不然,就会想12306一样的没落阿··话说由于猎豹的缘故,拖垮 […]...

  3. 别再恐惧 IP 协议(万字长文 | 多图预警)

    对我个人来说,本科的时候,除去计算机组成原理,计算机网络堪称复习难度最大的一门课,其中无穷无尽的 IP 地址的 […]...

  4. 5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南

    大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。 […]...

  5. GitHub 网站汉化

    居然是一个中文Github网站!该不会是个假的吧? 2018-09-03 17:30 前几天分享了一篇文章—— […]...

  6. 入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由angel_郁发表于云+社区专栏 介绍 Bu […]...

  7. 开源重站 Github 无法访问解决方案(临时)

    今天很多小伙伴都在说Github无法访问,我们除了购买VPN之外,我们还能通过下面这个方案临时解决当下无法访问 […]...

  8. Google 出品的 Java 编码规范,强烈推荐,既权威又科学

    Google 出品的 Java 编码规范,强烈推荐,既权威又科学 这份文档是 Google Java 编程风格 […]...

随机推荐

  1. 【牛客网】Python语言ACM模式输入输出规范 – Harukaze

    【牛客网】Python语言ACM模式输入输出规范 1.输入描述 输入包括两个正整数a,b(1 <= a, […]...

  2. SPSSAU新功能上线:高级公式、综合得分一键计算!

    一直关注我们的朋友们一定会发现,近期SPSSAU增添了很多新功能。 我们精挑细选出6个最常使用的功能,介绍给大 […]...

  3. JAVA为什么要配置环境变量,怎样配置

    自己总结些再加抄点:安装JDK后要配置环境变量,主要有三个:1 JAVA_HOME ->为JDK的安装目 […]...

  4. mysql复制表以及复制数据库

    (一)将旧表复制到新表 1、CREATE TABLE新表 SELECT* FROM旧表; 该语句只是复制表结构 […]...

  5. qlv格式转换成MP4格式

    腾讯视频下载:1.先下载腾讯的客户端—>播放视频在客户端 2.播放视频一段后停止 3.点击腾 […]...

  6. Java 并发基础——线程安全性

    线程安全:多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需 […]...

  7. html页面转PDF、图片操作记录

      前言   日常开发中,我们有可能会碰到从系统中导出数据并打印的需要,打印的格式是常规的表格形式,例如:   […]...

  8. 多线程与高并发(全)

    多线程与高并发 目录 多线程与高并发 一、了解多线程 什么是进程? 什么是线程? 并发与并行的区别 临界区 学 […]...

展开目录

目录导航