谷歌的Go编程语言问世已有10年,无疑已扬名立万。由于丰富的库和抽象机制简化了开发并发分布式(即云)应用程序的工作,轻巧且易于编译的Go备受关注。
但是真正衡量任何一种编程语言成功的标准是开发人员用它创建的项目。 Go已证明它是快速开发网络服务、软件基础结构项目以及各种功能强大的紧凑工具的首选。
本文介绍了10个用Go语言编写的值得关注的项目,许多项目已经比用来编写的这种语言更出名。所有这些项目都在各自的领域发挥了重要作用。本文介绍的所有项目都托管在GitHub上,因此对Go好奇的人可以轻松查看让这些项目取得成功的Go代码。
你很难找到比Docker更适合的Go成功案例了。在一年多点的时间里,这种软件容器化技术成为了Go适用于大规模分布式软件项目的典范。Docker团队之所以喜欢Go,是由于它有很多优点:无需依赖项的静态编译、强大的标准库、完整的开发环境,以及能够在最省力的情况下针对多种架构进行构建。
如果Docker是用Go编写的,按理说其他重要的面向云的容器项目也将用Go编写。 谷歌的容器编排项目Kubernetes是Go项目,大部分Kubernetes子组件和生态系统也是如此。一个典型例子是:超轻量级的Kubernetes衍生品k3适用于只需要Kubernetes基础组件的人群。
谷歌考虑过使用其他语言(包括C/C++、Java和Python)编写Kubernetes。但是据Kubernetes的联合创始人、前技术负责人,目前是VMware首席工程师的Joe Beda声称,这些语言没有一个像Go那样“称心如意”。正如Beda所说,“Go既不太高级,又不太低级。”
CoreOS(现在是Red Hat的项目)使用Docker将Linux变成一堆松散耦合的容器,有可能摆脱一系列混乱的依赖项,依赖项已成为Linux软件包管理的基本对象。因此,CoreOS利用Docker来实现这一魔力也就不足为奇了;CoreOS的两个基本服务Etcd和Fleet都是用Go编写的。Fleet让你可以“就像CoreOS集群共享单一的初始化系统那样对待它。”Etcd是一个分布式键值存储系统,处理Docker应用程序与CoreOS实例之间的设置同步。两者都是用Go编写的,Go拥有“出色的跨平台支持、小巧的二进制文件及强大的社区。”
InfluxDB是“没有外部依赖项的分布式时间序列数据库”。“时间序列”这个术语是指InfluxDB主要负责获取度量指标或事件,允许对它们进行实时分析。“没有外部依赖项”意味着你不需要其他软件即可使用InfluxDB。它完全是独立自主的(Go应用程序往往如此)。可以通过提交JSON的REST调用将数据写入数据库或从数据库读取数据,并可以通过甚至允许使用正则表达式的简单SQL语言进行查询。InfluxDB具有高度弹性和横向可扩展性,选择Go这种语言可能是为了使那些功能变得可行和容易。
Istio项目是Kubernetes生态系统的一部分,它解决许多企业应用环境中一个没有深入了解又没有处理好的问题:如何处理将服务彼此连接并与外界连接的网络结构?Istio在Kubernetes集群中的每个容器之间以及那些容器与外界之间提供了一个可编程的“服务网格”,或网络代理层,那样可以通过共享控制平面以编程方式对该网络进行任何更改。鉴于Kubernetes也是用Go编写的,因此Go非常适合此任务,另一个原因是Go适用于去中心化的分布式网络项目。
用Go语言编写的另一个与网络有关的项目是Traefik,它是面向网络服务的反向代理和负载均衡系统。Traefik旨在与一系列广泛的编排选项一起使用,从Kubernetes和Docker Swarm到Amazon ECS和Azure Service Fabric,不一而足。Traefik自动创建在那些编排器下运行的微服务所需的路由,以便与外界进行对话。它还生成适合编排器的跟踪数据和统计信息。
静态网站生成器现在大行其道。毕竟,它们为仅使用静态html、css和JavaScript来创建快速安全的网站提供了一种简便的方法。Hugo是一个静态网站生成器,它利用了Go的许多功能来快速顺畅地工作——即Go用于渲染HTML的工具、网络库、国际化功能以及作为单个可以再分发的平台原生二进制文件加以部署的功能。Go的所有这些功能使Hugo易于拆包、运行、用于快速构建网站。
HashiCorp由Vagrant(基于Ruby的开发环境管理工具)的开发者创办,它充分利用Go的速度和功能来构建更庞大更宏伟的项目:Terraform,该系统用于通过定义文件变成代码在本地或云端构建IT基础架构。你所做的任何更改可以前滚或后滚,而且在调用代码之前可以获得到底会发生什么情况的完整摘要(即执行计划)。
Go用于构建多种分布式云原生应用程序。CockroachDB以弹性闻名,这种分布式数据库旨在承受各种各样的灾难(甚至是数据中心故障),又继续响应你的SQL查询。 CockroachDB完全是用Go编写的,只针对源自前一个项目RocksDB的性能密集型核心功能使用了一小部分C ++代码。
Go已成为许多网络项目以及基于它们的下游项目的默认语言。一个典型的例子是:用Go实现的SSH本身很有用,充当Gravitational Teleport等项目的基础。Gravitational Teleport让用户可以通过外壳(shell)安全地访问服务器。它通过单点登录来执行安全,但又不需要这种事务通常需要的那种管理开销(比如密钥管理和轮换)。
原文标题:10 open source projects proving the power of Google Go
作者:Serdar Yegulalp
一个开源项目维护者必须一年到头无偿地做这么多复杂繁琐的工作。当我们很方便的使用开源项目时,太容易忘记项目维护者的辛苦付出了,有时候,开源项目维护者真的需要你对他说一声谢谢。
Emoji(表情符号)的使用到处都有,想通过js为自己的网页添加Emoji吗?今天就为大家整理在Github上最受欢迎的Emoji开源库,让自己的页面显示Emoji。
开源软件open source software创立 20 周年的纪念日。由于开源软件渐受欢迎,并且为这个时代强有力的重要变革提供了动力,我们仔细反思了它的初生到崛起。
得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展
开源的本质是什么,免费还是自由?国内的很多软件公司或研究机构对开源的热情仅限于免费的代码,而绝少深度参与开源社区的活动。我们对于开源始终是利用多,而贡献少,从国内发起的有一定影响力的开源项目如果不是完全没有,恐怕也是凤毛麟角。
很多人也想了解一下最新和感觉有用的.NET开源项目,最近准备面试为了有料说,在网上找到了一些开源的项目,个人觉得还不错,所以给大家分享一下,共同进步。
无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包。对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠咖啡度日也会成为家常便饭。所幸的是,随着 Vue.js 和 Nuxt.js 社区的不断壮大,每天都会出现一些很好的软件包。
在去年的 Microsoft Connect(); 开发者大会上,微软宣布开源三种主要的 Windows UX 技术,其中就包括了 Windows Presentation Foundation (WPF),除此之外还有 Windows Forms 和 Windows UI XAML 库 (WinUI)
Arachni是一款基于Ruby框架构建的高性能安全扫描程序,适用于现代Web应用程序。XssPy一个基于Python的XSS(跨站脚本)漏洞扫描器。w3af,从2006开始使用python开发的开源项目,可以用在window和linux环境下
任何一个开发者,都是十分喜欢使用开源软件包的。因为它使开发工作变得更快速、高效、容易。如果没有开源软件包,开发工作将变得疲惫不堪,不断的重复造轮子!下面整理了 Github 上 36 个实用的 Vue 开源库,建议收藏!
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!