证明Go语言的强大,没这10个开源项目不行
Posted 开源最前线
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了证明Go语言的强大,没这10个开源项目不行相关的知识,希望对你有一定的参考价值。
程序员书库(ID:CodingBook) 猿妹综合编译
经过10年的发展,Go在编程语言界已经有了一定的地位,Go轻量级且易于编译,它丰富的库和抽象简化了并发和分布式应用程序的开发,也因此吸引了许多开发者。
但是衡量一个编程语言是否成功的真正标准,是开发人员使用它创建的项目,Go已证明它是快速开发网络服务、软件基础结构项目以及各种功能强大的紧凑工具的首选。
本文整理10个用Go编写的最值得关注的项目,其中许多项目比Go语言还出名,它们在各自的领域里都有着举足轻重的作用,这10个项目都是开源的,并且托管于Github上,所以对Go感兴趣的人都可以轻松查看让这些项目的Go代码。
你很难找到一个比Docker更成功的Go项目,在一年多点的时间里,这种软件容器化技术成为了Go适用于大规模分布式软件项目的典范。
Docker团队喜欢Go,因为它具有大量的有点:
无需依赖项的静态编译、强大的标准库、完整的开发环境,以及能够在最省力的情况下针对多种架构进行构建。
Github地址:
https://github.com/docker/docker
如果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
CoreOS(现在是一个Red Hat项目)使用Docker将Linux转变成一堆松散耦合的容器,因为这有可能避免一系列混乱的依赖项,但依赖项已成为Linux软件包管理的基本对象,而CoreOS利用Docker实现了这一神奇的功能,CoreOS的两项基本服务Etcd和Fleet都是用Go编写的,Fleet允许你“将CoreOS集群视为共享单一的初始化系统那样”。
Etcd是一个分布式的键值存储,它处理Docker应用程序和CoreOS实例之间的设置同步。
它们都是用Go编写的,因为Go具有“出色的跨平台支持、小型二进制文件和强大的社区支持”。
项目地址:
https://coreos.fedoraproject.org/
InfluxDB是一个“没有外部依赖的分布式时间序列数据库”。
“时间序列”一词指的是影响数据库主要关注指标或事件,并允许对它们进行实时分析。
“没有外部依赖”意味着你不需要其他软件来使用InfluxDB数据库;
它是完全独立的(就像Go应用程序一样)。
可以通过提交JSON的REST调用将数据库写入或从数据库读取数据,还可以使用简单的SQL语言进行查询,甚至可以使用regexes。
InfluxDB数据库是高度弹性和横向可扩展的,选择Go作为语言可是为了实现这些功能。
GitHub地址:
https://github.com/influxdb/influxdb
作为Kubernetes领域的一部分,Istio项目解决了一个在许多企业应用程序环境中都没有处理好的问题:
如何处理将服务彼此链接并和外部世界连接起来的网络结构?
Istio在Kubernetes集群中的每个容器之间以及这些容器与外部世界之间提供可编程的“服务网格”或网络代理层,因此可以通过共享控制平面以编程方式对网络进行任何更改。
因为Kubernetes也是用Go写的,所以Go也很适合Istio的编写,另一个原因是Go适用于去中心化的分布式网络项目。
Github地址:
https://istio.io/
另一个用Go编写的与网络相关的项目是Traefik,Træfɪk是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。
Traefik可以和一系列的编排选项一起使用,从Kubernetes和Docker Swarm到Amazon ECS和Azure Service Fabric。
Traefik自动创建在这些编排器下运行的微服务所需的路由,以便和外部世界连接。
它还生成适合用户的业务流程的跟踪数据和统计信息。
Github地址:
https://github.com/containous/traefik
静态站点生成器现在非常流行。
毕竟,它们提供了一种简单快速的方法创建一个只使用静态html、CSS和javascript的快速、安全的网站。
Hugo是一个静态站点生成器,它利用了许多Go特性实现快速、流畅的运行,Go的HTML渲染工具、网络库、国际化功能等。
所有这些Go特性都使Hugo易于拆包、运行和快速构建站点。
Github地址:
https://gohugo.io/
HashiCorp由Vagrant(基于Ruby的开发环境管理工具)的开发者创办,它充分利用Go的速度和功能来构建更庞大更宏伟的项目:
Terraform,它的口号是 "Write, Plan, and create 。
用于安全高效地预配和管理云基础结构
Github地址:
https://github.com/hashicorp/terraform
CockroachDB因其弹性而得名,它是一个分布式数据库,旨在应对各种各样的数据中心故障,同时继续响应用户的SQL查询。
CockroachDB完全是用Go编写的,除了一小部分c++代码,用于实现以前的RocksDB项目中的性能密集型核心功能。
Github地址:
https://github.com/cockroachdb/cockroach
10、Gravitational Teleport
Go已经成为许多网络项目和基于它们的下游项目的默认语言。
举个例子:
Go实现SSH本身就很有用,它是Gravity Teleport等项目的基础。G
ravity Teleport允许用户通过shell安全地访问服务器。
它通过单点登录来加强安全性,而无需分发密钥
Github地址:
https://github.com/gravitational/teleport
●编号797,输入编号直达本文
●输入m获取到文章目录
以上是关于证明Go语言的强大,没这10个开源项目不行的主要内容,如果未能解决你的问题,请参考以下文章
Go语言诞生5周年!10大Go语言开源项目推荐
熟读这5个开源项目就是合格的GO语言工程师!
画风清奇!盘点各编程语言中有趣的开源项目!
go语言快速入门 Web开发框架 10
盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目
go语言熟知的开源项目