搜故事,从300万个故事到海量知识百科的华丽转变!
搜故事 > 小故事 > 正文

证明Go语言魅力的10个开源项目

时间:2008-07-26

这 10 年是狂奔的 10 年,特别是最近一两年,从 Go 语言中文网的用户量和访问量可以明显看出来,Go 确实越来越受到关注

提示:本文共有 6357 个字,阅读大概需要 13 分钟。

本文作者:Serdar Yegulalp[1]原文链接:10 open source projects proving the power of Google Go[2]译者:Go 语言中文网 polaris ,非原文直译方式

从 2007 年项目启动,到 2009 年底对外开源,Go 语言已经 10 年了。这 10 年是狂奔的 10 年,特别是最近一两年,从 Go 语言中文网的用户量和访问量可以明显看出来,Go 确实越来越受到关注。同时由于丰富的库和抽象机制简化了开发并发分布式(即云)应用程序的工作,简单、高性能、易于写高并发程序、编译速度极快的 Go 备受关注。

然而,一门语言要被大众接受,生态很重要。得益于一些重量级的开源项目,使得 Go 得到了越来越多人的认可,特别是云计算相关的项目,这其中最重要的莫过于 Docker 和 Kubernetes。Go 已证明它是快速开发网络服务、软件基础结构项目以及各种功能强大的紧凑工具的首选。

本文介绍了 10 个用 Go 语言编写的被大量关注、使用的项目,许多项目已经比 Go 语言更出名。所有这些项目都在各自的领域发挥了重要作用。本文介绍的所有项目都托管在 GitHub 上,因此对 Go 好奇的人可以轻松查看让这些项目取得成功的 Go 代码。

这 10 个项目是:

Docker[3]Kubernetes[4]Fedora CoreOS[5]的Etcd[6]和Fleet[7]InfluxDB[8]Istio[9]Traefik[10]Hugo[11]Terraform[12]CockroachDB[13]Gravitational Teleport[14]一个个看看。

Docker

Docker[15]是一个开源的应用容器引擎,让开发者可以打包他们的应用和依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 、Mac 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 无疑是 Go 最成功的案例。在一年多点的时间里,这种软件容器化技术成为了 Go 适用于大规模分布式软件项目的典范。Docker 团队之所以喜欢 Go[16],是由于它有很多优点:全静态编译、强大的标准库、完整的开发环境,以及出色的跨平台特性。

Kubernetes

Kubernetes,简称 k8s,是用 8 代替 8 个字符 “ubernete” 而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署、规划、更新、维护的一种机制。

因为 Docker 是用 Go 编写的,自然而言,其他重要的面向云的容器项目也采用了 Go 编写。谷歌的容器编排项目Kubernetes[17]就是一个 Go 项目,大部分 Kubernetes 子组件和生态系统也是如此。一个典型例子是:超轻量级的 Kubernetes 衍生品k3s[18]适用于只需要 Kubernetes 基础组件的人群。(Go 语言中文网译注:K8S 有点 Java 中的 Hadoop 这种量级应用的味道)

谷歌考虑过使用其他语言(包括 C/C++、Java 和 Python)编写 Kubernetes。但是据 Kubernetes 的联合创始人、前技术负责人,目前是 VMware 首席工程师的Joe Beda 声称[19],这些语言没有一个像 Go 那样“称心如意”。正如 Beda 所说,“Go 既不太高级,又不太低级。”

Fedora CoreOS

CoreOS 是一种操作系统,于 2013 年十二月发布,它的设计旨在关注开源操作系统内核的新兴使用 — 用于大量基于云计算的虚拟服务器。

CoreOS[20](现在是 Red Hat 的项目)使用 Docker 将 Linux 变成一堆松散耦合的容器,有可能摆脱一系列混乱的依赖项,依赖已成为 Linux 软件包管理的基本对象。因此,CoreOS 利用 Docker 来实现它也就不足为奇了。CoreOS 的两个基本服务 Etcd 和 Fleet 都是用 Go 编写的。Fleet[21]让你可以“就像 CoreOS 集群共享单一的初始化系统那样对待它”。Etcd[22]是一个分布式键值存储系统,处理 Docker 应用程序与 CoreOS 实例之间的配置同步。两者都是用 Go 编写的,Go 拥有“出色的跨平台支持、小巧的二进制文件以及强大的社区。”

InfluxDB

InfluxDB[23]是一个用于存储和分析时间序列数据的开源数据库。是“没有外部依赖的分布式时间序列数据库”。“时间序列”这个术语是指 InfluxDB 主要负责获取度量指标或事件,允许对它们进行实时分析。“没有外部依赖”意味着你不需要其他软件即可使用 InfluxDB。它完全是独立自主的(Go 应用程序往往如此)。支持使用 REST 方式,通过 JSON 将数据写入数据库或从数据库读取数据,甚至可以允许使用简单 SQL 语言进行查询。InfluxDB 具有高度弹性和横向可扩展性,选择 Go 这种语言可能是为了使那些特性变得可行和易于实现。(Go 语言中文网注:使用 Go 语言实现的时序数据库还有其他的,比如饿了么开源的LinDB[24])

InfluxDB 主要特性有:

内置 HTTP 接口,使用方便数据可以打标记,这样查询可以很灵活类 SQL 的查询语句安装管理很简单,并且读写数据很高效能够实时查询,数据在写入时被索引后就能够被立即查出……推荐 InfluxDB 中文文档:https://jasper-zhang1.gitbooks.io/influxdb/content/

Istio

Istio[25]提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。它是 Kubernetes 生态系统的一部分,它解决许多企业应用环境中一个没有深入了解又没有处理好的问题:如何处理将服务彼此连接并与外界连接的网络结构?Istio 在 Kubernetes 集群中的每个容器之间以及那些容器与外界之间提供了一个可编程的“服务网格”,或网络代理层,那样可以通过共享控制平面以编程方式对该网络进行任何更改。鉴于 Kubernetes 也是用 Go 编写的,因此 Go 非常适合此任务,另一个原因是 Go 适用于去中心化的分布式网络项目。

Traefik

Traefik 是一个为了让部署微服务更加便捷而诞生的现代 HTTP 反向代理、负载均衡工具。 它支持多种后台 (Docker[26],Swarm[27],Kubernetes[28],Marathon[29],Mesos[30],Consul[31],Etcd[32],Zookeeper[33],BoltDB[34], Rest API, file…) 来自动化、动态的应用它的配置文件设置。

Traefik 旨在与一系列广泛的编排选项一起使用,从 Kubernetes 和 Docker Swarm 到 Amazon ECS 和 Azure Service Fabric,不一而足。Traefik 自动创建在那些编排器下运行的微服务所需的路由,以便与外界进行对话。它还生成适合编排器的跟踪数据和统计信息。中文网:https://traefik.cn/

Hugo

Hugo 是由 Go 语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。

静态网站生成器现在很流行。因为它们仅仅使用静态 HTML、CSS 和 JavaScript 来创建快速、安全的网站,这是一种很简便的方法。Hugo[35]是一个静态网站生成器,它利用了 Go 的许多特性来快速顺畅地工作 —— 即 Go 用于渲染 HTML 的工具、网络库、国际化功能以及作为单个可以再分发的平台原生二进制文件加以部署的特性。Go 的所有这些特性使 Hugo 易于拆包、运行,方便用来快速构建网站。中文网:https://www.gohugo.org/

Terraform

HashiCorp — 由 Vagrant(基于 Ruby 的开发环境管理工具)的开发者创办,它充分利用 Go 的速度和强大来构建更庞大更宏伟的项目:Terraform[36],该系统用于通过定义文件转为代码在本地或云端构建 IT 基础架构。你所做的任何更改可以前滚或后滚,而且在调用代码之前可以获得到底会发生什么情况的完整摘要(即执行计划)。

Terraform 是一种安全有效地构建、更改和版本控制基础设施的工具(基础架构自动化的编排工具)。它的目标是 "Write, Plan, and create Infrastructure as Code”, 基础架构即代码。Terraform 几乎可以支持所有市面上能见到的云服务。具体的说就是可以用代码来管理维护 IT 资源,把之前需要手动操作的一部分任务通过程序来自动化的完成,这样的做的结果非常明显:高效、不易出错。

CockroachDB

Go 常被用于构建各种分布式云原生应用程序。CockroachDB[37]以弹性而闻名,这种分布式数据库旨在承受各种各样的灾难(甚至是数据中心故障),而能继续响应你的 SQL 查询。 CockroachDB 完全是用 Go 编写的,只有部分来源于前一个项目 RocksDB 的性能密集型核心功能使用了一小部分 C++ 代码。

CockroachDB 可实现跨数据中心同步的可伸缩开源数据库。目标是打造一个开源、可伸缩、跨地域复制且兼容事务的 ACID 特性的分布式数据库,它不仅能实现全局(多数据中心)的一致性,而且保证了数据库极强的生存能力,就像 Cockroach(蟑螂)这个名字一样,是打不死的小强。

Gravitational Teleport

Go 已成为许多网络项目以及基于它们的下游项目的默认语言。一个典型的例子是:用 Go 实现的 SSH 本身就很有用,充当Gravitational Teleport[38]等项目的基础。Gravitational Teleport 让用户可以通过 shell 安全地访问服务器。它通过单点登录来保证安全,但又不需要事务通常需要的那种管理开销(比如密钥管理和轮换)。

喜欢本文的朋友,欢迎关注“Go语言中文网”

文中链接

[1]Serdar Yegulalp:https://www.infoworld.com/author/Serdar-Yegulalp/

[2]10 open source projects proving the power of Google Go:https://www.infoworld.com/article/3442978/10-open-source-projects-proving-the-power-of-google-go.html

[3]Docker:https://github.com/docker/docker

[4]Kubernetes:https://github.com/kubernetes/kubernetes

[5]Fedora CoreOS:https://github.com/coreos

[6]Etcd:https://github.com/etcd-io/etcd

[7]Fleet:https://github.com/coreos/fleet

[8]InfluxDB:https://github.com/influxdb/influxdb

[9]Istio:https://istio.io/

[10]Traefik:https://github.com/containous/traefik

[11]Hugo:https://gohugo.io/

[12]Terraform:https://github.com/hashicorp/terraform

[13]CockroachDB:https://github.com/cockroachdb/cockroach

[14]Gravitational Teleport:https://github.com/gravitational/teleport

[15]Docker:https://github.com/docker/docker

[16]Docker 团队之所以喜欢Go:http://www.slideshare.net/jpetazzo/docker-and-go-why-did-we-decide-to-write-docker-in-go

[17]Kubernetes:http://www.infoworld.com/article/2608021/paas/google-plunges-in-to-docker-management.html

[18]k3s:https://github.com/rancher/k3s

[19]Joe Beda 声称:https://blog.gopheracademy.com/birthday-bash-2014/kubernetes-go-crazy-delicious/

[20]CoreOS:http://www.infoworld.com/article/2608236/application-virtualization/coreos-uses-docker-to-put-linux-on-a-diet.html

[21]Fleet:https://coreos.com/using-coreos/clustering/

[22]Etcd:https://coreos.com/using-coreos/etcd/

[23]InfluxDB:https://github.com/influxdb/influxdb

[24]LinDB:https://github.com/lindb/lindb

[25]Istio:https://istio.io/

[26]Docker:https://www.docker.com/

[27]Swarm:https://docs.docker.com/swarm

[28]Kubernetes:https://kubernetes.io/

[29]Marathon:https://mesosphere.github.io/marathon/

[30]Mesos:https://github.com/apache/mesos

[31]Consul:https://www.consul.io/

[32]Etcd:https://coreos.com/etcd/

[33]Zookeeper:https://zookeeper.apache.org/

[34]BoltDB:https://github.com/boltdb/bolt

[35]Hugo:https://gohugo.io/

[36]Terraform:https://github.com/hashicorp/terraform

[37]CockroachDB:https://github.com/cockroachdb/cockroach

[38]Gravitational Teleport:https://github.com/gravitational/teleport

看到此处说明本文对你还是有帮助的,关于“证明Go语言魅力的10个开源项目”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
全球科技企业迎来项目开源潮 开源为RPA带来资本憧憬的平台故事

全球科技企业迎来项目开源潮 开源为RPA带来资本憧憬的平台故事

企业,产品,厂商,软件,开源软件,模式,社区,项目,公司,微软,功能,架构,全球,盈利,用户,商业模式,盈利模式,科技,领域,服务,王吉,开源项目,核心,平台,流程,科技企业,互联网,大众,基础,大部分

2015-01-09 #故事会在线阅读

全球科技企业迎来项目开源潮 为RPA带来资本憧憬的平台故事

全球科技企业迎来项目开源潮 为RPA带来资本憧憬的平台故事

企业,产品,厂商,软件,开源软件,模式,社区,微软,功能,架构,公司,盈利,用户,项目,全球,商业模式,盈利模式,科技,领域,服务,王吉,开源项目,互联网,大众,基础,大部分,平台,方式,核心,流程

2014-03-15 #故事大全

一个包括前后端  微信小程序 移动端的商城开源项目:litemall

一个包括前后端 微信小程序 移动端的商城开源项目:litemall

模块,技术,业务,子系统,系统,商场,商品,地址,方面,小程序,功能,数据库,详情,项目,管理,代码,专题,会员,商城,开发工具,微信,订单,方云,原型,客户端,对象,架构,层面,文档,用户

2009-09-04 #故事大全

华为开源的道和术

华为开源的道和术

华为,软件,硬件,社区,场景,引擎,生态,企业,数据库,时代,开发者,内核,架构,贡献者,领域,大数据,商业,商业模式,技术,数据,能力,贡献,项目,存储,统一,合作伙伴,战略,性能,行业,问题

2017-03-23 #小故事

2028年洛杉矶奥运会开源节流 将使用现有建筑

2028年洛杉矶奥运会开源节流 将使用现有建筑

洛杉矶,奥运会,体育项目,基金会,奥运,建筑,年轻人,收入,新场,威尔逊,中盈,国际奥委会,中新网,主办单位,体育场地,主席,儿童,团队精神,常因,奥运场馆,成本,意识,经验,经费,精神,美金,财务,升级,比赛,中学习

2020-07-04 #故事大全

开源证券中小盘次新股说核发速度有所加快 过会率继续保持100%2020批次12 13

开源证券中小盘次新股说核发速度有所加快 过会率继续保持100%2020批次12 13

公司,产品,刹车,行业,技术,领域,新股,飞机,市场,收入,系统,研发,企业,铝合金,光电,优势,比重,疫苗,发展,亮点,净利润,喷雾剂,客户,毛利率,生产,业务,军方,总收入,项目,需求

2015-08-02 #故事会

面试小故事

面试小故事

面试官,内容,类加载,内存,模型,部分,项目,设计,时候,问题,策略,双亲,聊得,语言,连环炮,大部分,场景,对象,时间,机制,模式,略过,过程,不了解,个阶段,你什么,你了解,千万不要,很多时候,开源项目

2020-08-05 #短篇故事

面试小故事

面试小故事

面试官,类加载,内容,内存,部分,项目,模型,问题,设计,策略,双亲,时候,聊得,语言,连环炮,场景,机制,对象,时间,过程,不了解,个阶段,你什么,你了解,千万不要,开源项目,是怎么,这一部分,都有哪些,还可以

2020-08-05 #经典故事