10个证明GoogleGo魅力的开源项目Go轻量级且易于编译,因其丰富的库和抽象机制简化了开发并发分布式(即云)应用程序的工作而备受关注。但衡量任何编程语言成功的真正标准是其开发人员使用它创建的项目。Go已被证明是快速开发Web服务、软件基础设施项目和各种功能强大的紧凑型工具的首选。本文介绍了10个用Go编写的值得注意的项目,其中许多项目已经比编写它们的语言更为人所知。所有这些项目都在各自的领域发挥了重要作用。本文中介绍的所有项目都托管在GitHub上,因此任何对Go感兴趣的人都可以轻松查看使这些项目成功的Go代码。Docker你很难找到比Docker更好的Go成功故事。在一年多的时间里,这种软件容器化技术成为了Go适用于大型分布式软件项目的典范。Docker团队之所以喜欢Go,是因为它有很多优点:没有依赖的静态编译、强大的标准库、完整的开发环境,以及能够以最小的努力构建多种架构。Kubernetes如果Docker是用Go写的,按理说其他重要的面向云的容器项目也会用Go写。谷歌的容器编排项目Kubernetes是一个Go项目,大多数Kubernetes子组件和生态系统也是如此。一个典型的例子是:超轻量级的Kubernetes衍生品k3,适合只需要Kubernetes基础组件的人。谷歌考虑过用其他语言编写Kubernetes,包括C/C++、Java和Python。但根据Kubernetes联合创始人、前技术主管、现任VMware首席工程师的乔贝达的说法,这些语言中没有一种像Go一样“甜蜜如地狱”。正如Beda所说,“Go既不太高级也不太低级”。FedoraCoreOS(现在是RedHat项目)使用Docker将Linux变成一堆松散耦合的容器,潜在地摆脱了一堆杂乱的依赖关系,依赖关系已经成为Linux包管理的基本对象。因此,CoreOS利用Docker实现这种魔力也就不足为奇了;CoreOS的两个基础服务Etcd和Fleet是用Go编写的。Fleet让您“将CoreOS集群视为共享一个初始化系统”。Etcd是一种分布式键值存储,用于处理Docker应用程序和CoreOS实例之间的设置同步。两者都是用Go编写的,它具有“出色的跨平台支持、小型二进制文件和强大的社区”。InfluxDBInfluxDB是“一个没有外部依赖的分布式时序数据库”。术语“时间序列”指的是InfluxDB主要负责捕获指标或事件,以便对它们进行实时分析。“无外部依赖”意味着你不需要额外的软件来使用InfluxDB。它是完全独立的(Go应用程序往往如此)。数据可以通过提交JSON的REST调用写入数据库或从数据库读取,并且可以通过甚至允许正则表达式的简单SQL语言查询。InfluxDB具有高度弹性和水平可扩展性,选择Go语言可能是为了使这些功能变得可行和简单。IstioIstio项目是Kubernetes生态系统的一部分,它解决了一个在许多企业应用环境中没有被很好理解和很好处理的问题:如何处理将服务相互连接以及与外界连接的网络结构?Kubernetes集群中每个容器中的Istio它在这些容器和外部世界之间提供了一个可编程的“服务网格”或网络代理层,因此可以通过共享控制平面以编程方式对该网络进行任何更改。Go非常适合这个任务,因为Kubernetes也是用Go编写的,这是Go适合去中心化分布式网络项目的另一个原因。Traefik另一个用Go编写的与Web相关的项目是Traefik,这是一个用于Web服务的反向代理和负载平衡系统。Traefik旨在与广泛的编排选项配合使用,从Kubernetes和DockerSwarm到AmazonECS和AzureServiceFabric等等。Traefik自动创建在这些编排器下运行的微服务与外界通信所需的路由。它还会生成适合协调器的跟踪数据和统计信息。Hugo静态站点生成器现在风靡一时。毕竟,它们提供了一种仅使用静态HTML、CSS和JavaScript创建快速且安全的网站的简单方法。Hugo是一个静态站点生成器,它利用Go的许多功能来快速流畅地工作——即Go用于呈现HTML的工具、网络库、国际化功能以及作为单个可再分发平台原生二进制函数的部署。Go的所有这些特性使Hugo易于解压、运行和用于快速构建网站。TerraformHashiCorp由Vagrant(一种基于Ruby的开发环境管理工具)的开发者创立,它充分利用Go的速度和功能来构建更大、更雄心勃勃的项目:Terraform,用于将定义文件转换为代码在本地或云端构建IT基础设施。您所做的任何更改都可以前滚或回滚,并且您可以在调用代码之前获得所发生情况的完整摘要(即执行计划)。CockroachDBGo用于构建各种分布式云原生应用程序。CockroachDB以其弹性着称,这个分布式数据库旨在抵御各种灾难(甚至数据中心故障),并持续响应您的SQL查询。CockroachDB完全用Go编写,仅使用一小部分C++代码来实现从以前的项目RocksDB派生的性能密集型核心功能。GravitationalTeleportGo已经成为很多web项目和基于它们的下游项目的默认语言。恰当的例子:在Go中实现的SSH本身就很有用,可以作为GravitationalTeleport等项目的基础。GravitationalTeleport允许用户通过shell安全地访问服务器。它通过单点登录加强安全性,但没有此类交易通常需要的那种管理开销(例如密钥管理和轮换)。原标题:证明GoogleGo强大的10个开源项目,作者:SerdarYegulalp
