10个开源项目证明了围棋的力量

从应用程序虚拟化到自托管的Git服务,谷歌Go正在成为前瞻性项目的首选工具

10个开源项目证明了围棋的力量
Gopher: Renee French via Wikimedia;电池:尼莫通过Pixabay

10个开源项目证明了围棋的力量

仅仅在野外生活了五年谷歌去是一种尖尖的语言。轻量级和快速编译,Go已经引起了早期采用者的极大兴趣,因为它慷慨的库和抽象使得并发和分布式(也就是云)应用程序编程更加容易。

但是,衡量任何一种语言成功与否的真正标准都在于开发人员用它衍生出的项目。诚然,Go还没有像Java、Python或C/ c++那样在开发人员世界中造成巨大的影响,但它已经开始积累起一大堆突出其优势和好处的有意义的项目。

下面是10个用Go编写的值得注意的项目,每个项目都已经引起了轰动,或者即将引起轰动。它们中的许多都是相互关联的,或者通过包含或在彼此之上构建,每一个都以类似的方式利用Go作为一种语言和开发系统。

这里介绍的所有项目都托管在GitHub上,所以对于那些好奇的人来说,可以很容易地在Go code in action中达到高峰。

码头工人

码头工人

你很难找到一个比Docker更好的成功案例,至少现在是这样。在一年多一点的时间里,这种软件装箱技术已经成为Go适合大规模、分布式软件项目的典范。的Docker团队喜欢Go因为它提供了许多好处:没有依赖关系的静态编译、强大的标准库、完整的开发环境,以及能够以最小的麻烦构建多个体系结构。

项目:码头工人
GitHub:https://github.com/docker/docker

Kubernetes

Kubernetes

如果Docker是用Go编写的,那么基于它的一些最重要的项目也是用Go编写的。Kubernetes与Docker联网项目一起,谷歌的Docker编配项目是一个Go项目船厂集群管理系统。由于构建在Docker之上意味着要面对与Docker相同的技术挑战,所以只有使用自己的习惯用法和语言选择来继续该项目的工作才有意义。

项目:Kubernetes
GitHub:https://github.com/GoogleCloudPlatform/kubernetes

Etcd和舰队

Etcd和舰队

CoreOS使用Docker将Linux变成一群松散耦合的容器,这是一种可能的路径,使之远离错综复杂的依赖关系必要条件Linux软件包管理。因此,CoreOS利用Docker来实现这一魔力也就不足为奇了——而且CoreOS的两项基本服务,etcd和fleet,都是用Go编写的。舰队让您“将您的CoreOS集群视为共享一个init系统”;etcd,分布式键值存储,处理Docker应用程序和CoreOS实例之间的设置同步。它们都是用Go编写的,因为Go有“优秀的跨平台支持、小的二进制文件和强大的社区支持”。

项目:Etcd和舰队
GitHub:https://github.com/coreos/etcd

一些

一些

如果Docker构成了金字塔的底层,而CoreOS是中层,那么Deis可能是顶端。它为开发人员提供了完全由开源组件构建的heroku风格的PaaS,并具有轻量级的整体构造。任何可以放到Docker容器中的东西都可以部署,如果您碰巧还有现成的Heroku构建包的话,那么就可以部署它们。整个包是由上述部分组装而成的:Docker用于容器结构,CoreOS用于操作系统层,Deis本身也是用Go编写的(使用一些Python用于API服务器)。

项目:一些
GitHub:https://github.com/deis/deis

弗林

弗林

作为Y combinator支持的项目,Flynn有许多与Deis相同的概念和理念,但有细微的区别。和Deis一样,Flynn也可以与Heroku构建包和Dockerfiles一起工作,而且它是使用CoreOS的元素构建的,尽管不是直接在它之上。与迪斯不同的是,弗林是建立在a两层系统架构,与低层的灵感谷歌ω项目,一个可伸缩的计算集群调度系统,上层设计用于处理实际的部署和维护。当然,这两个层都是用Go编写的。

项目:弗林
GitHub:https://github.com/flynn/Flynn

石灰

石灰

Go的许多特性是对分布式服务器应用程序的有力补充,所以大多数Go项目都是面向服务器和云的也就不足为奇了。但是,用Go编写的桌面应用程序也开始出现,而Lime就是一个很好的应用程序。它是对广泛使用和喜爱的Sublime文本编辑器的再创造——尽管它具有所有积极的属性,但它不是开源的,这让许多使用和依赖它的人感到懊恼。Lime仍然是非常典型的,所以它不应该被用于制作工作,但在GitHub上已经有近10,000颗星星和近800个叉子,它正在快速发展。

项目:石灰
GitHub:https://github.com/limetext/lime

陶醉

陶醉

当开发人员使用它构建常用工具(如Web框架)时,语言在现实世界的吸引力就体现在这一点上。请输入Revel,这是一个用Go编写的“高生产力、全栈Web框架”。它配备了您所期望的所有特性:路由、缓存、参数解析和模板。它还拥有一些你意想不到的特性,比如国际化、测试框架和模块化设计,让开发人员可以添加他们自己的请求处理系统(又名过滤器)来狂欢,而不必把所有东西都拆了。虽然Revel在技术上已经可以生产了,但Revel团队仍在推迟应用最重要的1.0名称,直到有更多的部件被安装到位。

项目:陶醉
GitHub:https://github.com/revel/revel

InfluxDB

InfluxDB

流感数据库是“没有外部依赖关系的分布式时间序列数据库”。术语“时间序列”意味着InfluxDB主要关注获取指标或事件,并允许实时分析它们。“无外部依赖”是指您不需要其他软件即可使用流感数据库;它是完全独立的。数据可以通过提交JSON的REST调用写入或从数据库中读取,查询可以通过简单的SQL语言进行,该语言甚至允许正则表达式。流感数据库具有高度的弹性和水平伸缩能力,选择Go作为语言可能是为了使这些特性变得可能和容易。

项目:InfluxDB
GitHub:https://github.com/influxdb/influxdb

Syncthing

Syncthing

Syncthing既可以是桌面项目,也可以是服务器项目,因为理论上它在两种上下文中都很有用,但为了说明Go对桌面应用程序也很有用,所以更倾向于称它为前者。

Syncthing实现协议用于在多个设备之间同步文件夹,如BitTorent同步项目。开发人员的基本原理Go的使用围绕着该语言的许多最受好评的特性:简单性、速度、并发性、跨架构部署的易用性等等。尽管没有什么能阻止其他人用Python或C构建同步客户端,但是Go版本已经在这里了,它的目标显然是跨平台使用。

项目:Syncthing
GitHub:https://github.com/syncthing/syncthing

Gogs (Gogs服务)

Gogs (Gogs服务)

是否想托管自己的Git服务,像GitHub一样,但在自己的硬件上,在自己的控制下?高格(Git服务)是为了填补这一需要,可以在所有主流操作系统平台(Linux、Windows和Mac OS X),所有一切都需要复制Git,某种形式的数据库——MySQL、PostgreSQL, SQLite3(包括)都支持,二进制文件。

项目:Gogs (Gogs服务)
GitHub:https://github.com/gogits/gogs

版权©2014Raybet2