当前位置: 首页 > 科技观察

完整的优秀开发工具合集!前谷歌工程师历时两年创作《工厂外生存指南》,登上GitHub热榜

时间:2023-03-22 14:17:00 科技观察

本文经AI新媒体量子位授权转载(公众号ID:QbitAI),转载请注明出处转载请联系出处。”一位前谷歌工程师花了两年时间努力编制了一份名单。这份名为“xg2xg”的名单最初是由前谷歌工程师(ex-Googler)编写的,作为所有离开谷歌工程师的“场外”生存指南但事实上,这本百科全书也成为了顶尖开发工具的百科全书,所有的程序员都可以从中受益,美国网友对这本百科全书给予了很高的评价:在这份榜单中列出的开源软件不仅解决了困难硅谷工厂前员工,也解决了所有码农的困惑,在这套百科全书的指导下,任何工程师都可以得到类似在谷歌写代码的体验。上线后获得2500+星!榜单中的替代软件大多为谷歌开源项目,或受谷歌论文启发,开源软件基金会第三方实现离子本身。即使你从未在谷歌工作过,也享受着谷歌工程师带来的福利。不禁感叹“谷歌拯救世界”。让我们来看看这个列表。开发工具清单一共有两部分,上半部分介绍码农常用的开发工具,包括核心技术、基础设施、服务、开发维护等;下半场是非技术人员。核心技术工具大数据处理工具Google内部工具:MapReduce;Alternatives:ApacheHadoop和Spark想要在由数千台机器组成的大型集群上并行处理TB级别的海量数据集,因此需要使用这样的大规模数据处理工具。MapReduce就是这样一个工具的先驱。JeffDean等人在2004年提出了这种分布式计算架构,最早在Google内部被用于处理大规模数据的并行计算。JeffDean还亲自为它写了一份指南。而开源替代品ApacheHadoop,也是基于当年JeffDean的论文自行实现的,可以提供与MapReduce文件系统类似的功能。如果你想要更快的数据处理速度,也有ApacheSpark供你选择。与Hadoop相比,MapReduce将运行的工作中间数据存储在磁盘中,而Spark采用内存计算技术,可以在数据写入硬盘之前在内存中进行分析和计算。Google内部的序列化工具:ProtocolBuffer;外部替代品:Protobuf、Thrift、Avro这套工具用于结构化数据的序列化。以上都是xml的替代方案,比它更小、更快、更简单。ProtocolBuffer和Protobuf都是Google开发的序列化格式(SerializationFormat),这个项目的源码可以在github上找到。与XML和JSON相比,Protobuf更小、更快、更简洁。非常适合数据存储或RPC数据交换格式。您只需要定义一次数据结构,就可以轻松地从各种语言或各种数据流中读写结构化数据。完全跳过谷歌,并不是没有其他选择。其他供应商也有类似的序列化方案。比如Facebook开发的Thrift,和Protobuf基本一样。Avro也有schema(即程序中结构化数据的定义),但实现方式与Protobuf和Thrift有很大不同。Avro在序列化大量相同数据时比Protobuf和Thrift更高效,因为数据不需要额外的注释。但是,当编码大量变化的数据时,由于schema会和数据一起存储,Avro的效率会下降到JSON和MessagePack的水平。看来,在核心技术工具方面,归来的前谷歌人还是有很多不错的选择的。基础设施大规模集群管理系统谷歌内部:Borg;外部替代方案:Kubernetes、ApacheMesos、HashiCorpNomad大规模集群管理系统,用于管理云平台中多台主机上的容器化应用。Borg是Google内部的一个大型集群管理系统,而应用最广泛的服务编排系统Kubernetes就是脱胎于Borg。Borg允许开发人员最大化跨多个数据中心的资源利用率,而不必担心资源管理。没有Borg十五年的经验,就没有Kubernetes。虽然作者把它放在了开源/真实世界专栏,但实际上Kubernetes也是由Google设计和开发的。Kubernetes是用Go语言编写的。它是一个庞大而全面的解决方案。它一方面处理服务调度、网络、存储和安全,其自身的架构也非常好。在上面做二次开发是非常容易的。HashiCorpNomad也是一个比较常见的开源调度器,架构简单,可以将资源管理器和调度器的功能集成到一个系统中。Nomad也是分布式的,高可用且易于操作。但是显然Kubernetes的功能会更加丰富。至于Mesos,它只是一个调度系统,不能直接使用。它需要配合各种Mesos框架来实现各种功能。当然,并不是所有的谷歌内部工具都能找到完美的替代品。至少在存储方面,有些网友不同意原作者的观点。他认为该列表有些误导,而且一些替代方案根本达不到谷歌内部工具的水平。例如,比较Colossus和HDFS就是一个笑话。相比之下,HDFS就像一个玩具。相比之下,它和十年前退役的GFS一样聪明。但HDFS可能是开源软件中Colossus的最佳替代品。对于“通用、大型、分布式文件系统”的使用,很难找到比HDFS更好的了。在其他开发工具列表中,还有服务、开发维护、安全等工具的替代列表。限于篇幅,我们就不一一介绍了。需要的同学可自行领取。所有工具的下载链接请参考文末GitHub地址。有什么好处?如果您不是工程师,则可能无法使用上述工具。但是,只要是公司、团队,总会有IT和运营方面的需求。例如,总有食物可吃。很多网友看了这份榜单,最感兴趣的是这一项:离开谷歌的人类,再也找不到免费的自助餐厅了。毕竟,“午餐吃什么”这个哲学问题,每次想起都是折磨。当你羡慕的时候,可以用下面的密码来安慰自己:公司有饭吃,不就是让你多工作点吗?如果你觉得这个不够有说服力,可以补充说明:谷歌当初为什么要提供免费食物?只是山景城总部周边吃饭选择太少,开车出去吃饭,来回需要一个小时。是的,就是为了让员工节省上班的时间。吃,只是IT/运营章节的第一个条目。后来,有模因生成器Memegen。工作太辛苦的时候可以看看:△没有GPU的人遇到GoogleColab时,甚至有人呼吁:如果Google全家桶接受Memegen就好了。那么,这一章没有工作相关的资源?如果查看完整列表,您仍然可以找到它:有一些必要的小工具。例如,CODEOWNERS可用于指定哪些用户审查代码,1Password是密码管理器。有同学在上面没有找到自己需要的答案,于是直接提问:谷歌这样的大公司,公司内部wiki是什么?我们公司用的是黑洞Quip。文件一旦进入,就无法退出。然后,有热心人回答了这个问题:虽然不知道Google用的是什么,但是Confluence是很常用的。xg2xg项目地址:https://github.com/jhuangtw-dev/xg2xg