ITPub博客

首页 > 应用开发 > > 证明Go语言的强大,没这10个开源项目不行

证明Go语言的强大,没这10个开源项目不行

作者:gyu 时间:2019-10-21 09:52:14 0 删除 编辑

程序员书库(ID:CodingBook) 猿妹综合编译

项目地址:https://www.infoworld.com/article/3442978/10-open-source-projects-proving-the-power-of-google-go.html

经过10年的发展,Go在编程语言界已经有了一定的地位,Go轻量级且易于编译,它丰富的库和抽象简化了并发和分布式应用程序的开发,也因此吸引了许多开发者。

但是衡量一个编程语言是否成功的真正标准,是开发人员使用它创建的项目,Go已证明它是快速开发网络服务、软件基础结构项目以及各种功能强大的紧凑工具的首选。

本文整理10个用Go编写的最值得关注的项目,其中许多项目比Go语言还出名,它们在各自的领域里都有着举足轻重的作用,这10个项目都是开源的,并且托管于Github上,所以对Go感兴趣的人都可以轻松查看让这些项目的Go代码。

1、Docker

你很难找到一个比Docker更成功的Go项目,在一年多点的时间里,这种软件容器化技术成为了Go适用于大规模分布式软件项目的典范。Docker团队喜欢Go,因为它具有大量的有点:无需依赖项的静态编译、强大的标准库、完整的开发环境,以及能够在最省力的情况下针对多种架构进行构建。

Github地址:https://github.com/docker/docker

2、Kubernetes

如果Docker是用Go编写的,那么其他重要的面向云的容器项目也应该是用Go编写的。谷歌的容器编排项目Kubernetes也是Go项目,大部分Kubernetes的大部分自组件和生态系统也是,一个典型例子是:超轻量级的Kubernetes衍生品k3,适用于只需要Kubernetes基础组件而不想要了解过多Kubernetes的人群。

谷歌曾经考虑用其他语言编写Kubernetes,包括C/ c++、Java和Python。但据Kubernetes的联合创始人、前技术主管、VMware的首席工程师乔•贝达(Joe Beda)表示,这些语言都不能像Go那样达到“最佳状态”。正如贝达所说,“Go是最佳的选择。”

GitHub地址:https://github.com/kubernetes/kubernetes

3、Fedora CoreOS

CoreOS(现在是一个Red Hat项目)使用Docker将Linux转变成一堆松散耦合的容器,因为这有可能避免一系列混乱的依赖项,但依赖项已成为Linux软件包管理的基本对象,而CoreOS利用Docker实现了这一神奇的功能,CoreOS的两项基本服务Etcd和Fleet都是用Go编写的,Fleet允许你“将CoreOS集群视为共享单一的初始化系统那样”。Etcd是一个分布式的键值存储,它处理Docker应用程序和CoreOS实例之间的设置同步。它们都是用Go编写的,因为Go具有“出色的跨平台支持、小型二进制文件和强大的社区支持”。

项目地址:https://coreos.fedoraproject.org/

4、InfluxDB

InfluxDB是一个“没有外部依赖的分布式时间序列数据库”。“时间序列”一词指的是影响数据库主要关注指标或事件,并允许对它们进行实时分析。“没有外部依赖”意味着你不需要其他软件来使用InfluxDB数据库;它是完全独立的(就像Go应用程序一样)。可以通过提交JSON的REST调用将数据库写入或从数据库读取数据,还可以使用简单的SQL语言进行查询,甚至可以使用regexes。InfluxDB数据库是高度弹性和横向可扩展的,选择Go作为语言可是为了实现这些功能。

GitHub地址:https://github.com/influxdb/influxdb

5、Istio

作为Kubernetes领域的一部分,Istio项目解决了一个在许多企业应用程序环境中都没有处理好的问题:如何处理将服务彼此链接并和外部世界连接起来的网络结构?Istio在Kubernetes集群中的每个容器之间以及这些容器与外部世界之间提供可编程的“服务网格”或网络代理层,因此可以通过共享控制平面以编程方式对网络进行任何更改。因为Kubernetes也是用Go写的,所以Go也很适合Istio的编写,另一个原因是Go适用于去中心化的分布式网络项目。

Github地址:https://istio.io/

6、Traefik

另一个用Go编写的与网络相关的项目是Traefik,Træfɪk是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。Traefik可以和一系列的编排选项一起使用,从Kubernetes和Docker Swarm到Amazon ECS和Azure Service Fabric。Traefik自动创建在这些编排器下运行的微服务所需的路由,以便和外部世界连接。它还生成适合用户的业务流程的跟踪数据和统计信息。

Github地址:https://github.com/containous/traefik

7、Hugo

静态站点生成器现在非常流行。毕竟,它们提供了一种简单快速的方法创建一个只使用静态HTML、CSS和JavaScript的快速、安全的网站。Hugo是一个静态站点生成器,它利用了许多Go特性实现快速、流畅的运行,Go的HTML渲染工具、网络库、国际化功能等。所有这些Go特性都使Hugo易于拆包、运行和快速构建站点。

Github地址:https://gohugo.io/

8、Terraform

HashiCorp由Vagrant(基于Ruby的开发环境管理工具)的开发者创办,它充分利用Go的速度和功能来构建更庞大更宏伟的项目:Terraform,它的口号是 "Write, Plan, and create 。用于安全高效地预配和管理云基础结构

Github地址:https://github.com/hashicorp/terraform

9、CockroachDB

Go被用来构建多种分布式的、云本地的应用程序。

CockroachDB因其弹性而得名,它是一个分布式数据库,旨在应对各种各样的数据中心故障,同时继续响应用户的SQL查询。CockroachDB完全是用Go编写的,除了一小部分c++代码,用于实现以前的RocksDB项目中的性能密集型核心功能。

Github地址:https://github.com/cockroachdb/cockroach

10、Gravitational Teleport

Go已经成为许多网络项目和基于它们的下游项目的默认语言。举个例子:Go实现SSH本身就很有用,它是Gravity Teleport等项目的基础。Gravity Teleport允许用户通过shell安全地访问服务器。它通过单点登录来加强安全性,而无需分发密钥

Github地址:https://github.com/gravitational/teleport

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/832/viewspace-3167756/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: MySQL备份与恢复
请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    129
  • 访问量
    1327