GitHub 标星 6

美国网友对这个大全给予了很高的评价:这份清单中列出的开源软件,不仅解决了硅谷大厂前员工的难处,也能为其他所有码农解除困惑。

在这套大全的指导下,任何一个工程师,都能获得类似在谷歌内部写代码的体验。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 地址。

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fot循环语句

概念: 循环是一种重复执行一段代码的结构,只要满足循环的条件,会一种执行这个代码。 循环条件:在一定范围内,按照指定的次数来执行循环 循环体:在指定的次数内,执行的命令序列。只要条件满足…

骑马与砍杀-战团mod制作-基础篇-武器模型入骑砍(二)

骑马与砍杀战团mod制作-基础-武器模型入骑砍笔记(二) 资料来源 学习的资料来源: b站【三啸解说】手把手教你做【骑砍】MOD,基础篇,链接为: https://www.bilibili.com/video/BV19x411Q7No?p4&vd_sour…

模型计算量估计,训练时间预测 Scaling Laws for Neural Language Models

一、模型计算量 C ≈ 6N*D 其中C表示训练语言模型所需的总计算量,N表示模型参数量,D表示用于训练的语料总量,6表示每训练一个token所需的浮点计算量约为6N,其中前向计算2N,反向计算4N。 注意:这里的6是针…

前端小白指南:前端生成唯一设备标识的那些事儿

最近,我在使用javascript开发一个基于Chrome的插件,遇到了一个有意思的需求。插件需要生成一个授权码(code),但为了确保安全性,这个code必须与设备绑定,防止被不同的设备使用,限制一…

Python vs MATLAB: 易于学习和代码可理解性的对比

Python vs MATLAB Python vs MATLAB: 易于学习和代码可理解性**Python的易用性与代码理解****MATLAB的易用性与代码理解****哪个更易上手?****结论** Python vs MATLAB: 易于学习和代码可理解性 在科学计算、工程模拟和数据分析领域,Python和MATLAB是两…

使用 C++11 Lambda 表达式在 Qt 中连接信号与槽

在 Qt 使用 C11 引入的 lambda 表达式来简化信号与槽的连接已经成为一种不错的选择。本文将通过一个简单的例子来展示如何使用 lambda 表达式来连接 QAction 的信号与槽。 传统的连接方式 首先,看看传统的连接方式: QAction* action foo->addActi…

腾讯视频通话接口

简要描述 获取登录IM账号及签名请求URL /videocall/getImUserInfo?account=1234&appName=tv请求方式 GET参数 参数名必选类型说明account是string通话双方统一账号appName是string应用名称,区分不同类型应用如:TV,MINI返回示例 {"code": 200,"status"…

kafka 管理节点 Controller 角色分析

kafka 管理节点 Controller 角色分析 kafka controller 如何管理分区的创建、状态监测、故障切换、内容复制、如何管控分区副本的状态检测故障切换、数据同步、learder 选举?Kafka Controller 是 Kafka 集群中的一个关键组件,负责管理分区的创建、状态监测、故障切换、内容 …

document.write()方法总结

document.write()方法总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!document.write()方法是JavaScript中用于向HTML文档写入内容的方法之一。它允许我们在…

【团队成长】2024-25周周报-业务介绍内容创作

大家好!我们是IndustryOR 团队,致力于分享业界落地的算法技术。欢迎关注微信公众号/知乎/CSDN【运筹匠心】 。 记录人:张哲铭,某互联网大厂算法专家 【团队成长/个人成长】系列的推文会以 【工作周报】 的方式记录IndustryOR团队及…

【SpringCloud-Seata源码分析2】

文章目录 分支事务注册-客户端分支事务服务端的执行 分支事务注册-客户端 第一篇我们将全局事务启动,以及开启源码分析完成了,现在我们需要看一下分支事务注册。 我们分支事务的开始需要从PreparedStatementProxy#executeUpdate中去看。 public class…

智能物流系统堪比帝王宠信妃子,我给你类比说明一下……

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 让我们将智能物流系统种涉及出库入库作业完整链条的“货到人”拣选系统的工作流程与古代帝王宠信翻牌妃子的过程进行一个有趣的类比&…

【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡

日期:2024年6月22日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

神经科学原理精解【1】

文章目录 神经系统组成神经系统两类细胞脑组织基本结构参考资料 神经系统组成 神经系统由中驱神经系统和外围神经系统组成。中驱神经系统包括脑和脊髓。脑的主要功能是大脑、小脑和脑干。外围神经系统由位于脑和脊髓之外的神经和神经细胞组成。 神经系统两类细胞 神经元 感知…

基于深度学习的边缘检测

基于深度学习的边缘检测 边缘检测是计算机视觉中的一项基本任务,旨在识别图像中像素值变化显著的区域,即边缘。传统的边缘检测算法(如Sobel、Canny等)通过滤波器和梯度运算来检测边缘,而基于深度学习的方法则通过训练…

【SSM】医疗健康平台-管理端-检查组管理

技能目标 掌握新增检查组功能的实现 掌握查询检查组功能的实现 掌握编辑检查组功能的实现 掌握删除检查组功能的实现 体检的检查项种类繁多,为了方便管理和快速筛选出类别相同的检查项,医疗健康将类别相同的检查项放到同一个检查组中进行管理&#…

VMware ESXi 主机的健康检查常用命令

使用root登录esxi 主机,然后运行下面的一些命令,可以对ESXi的健康状态有个基本了解: 检查主机资源利用情况: esxtop: 实时查看主机资源使用情况,包括CPU、内存、磁盘和网络。esxcli vm process list: 列出当前在主机上…

【CV炼丹师勇闯力扣训练营 Day8】

CV炼丹师勇闯力扣训练营 代码随想录算法训练营第8天 ● 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字 一、344 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额…

# Kafka_深入探秘者(1):初识 kafka

Kafka_深入探秘者(1):初识 kafka 一、kafka 特性 1、Kafka :最初是由 Linkedln 公司采用 Scala 语言开发的一个多分区、多副本并且基于 ZooKeeper 协调的分布式消息系统,现在已经捐献给了 Apache 基金会。目前 Kafka…

Python基础教程(三十一):pyecharts模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝💝💝如有需要请大家订阅我的专栏【Python系列】哟!我会定期更新相关系列的文章 💝💝💝关注!关注!!请…