前言
自从10年前Google正式发布第一个版本的Go语言以来,Go语言的发展风风火火的走过10个年头,虽然现在仍然不能算是编程开发的王牌(于java、C、Pyhton相比),但是谁也不能忽视Go语言在如今编程领域的存在。
一个开发语言要想获得成功当然离不开自身的不带完善和优化,但是出色的顶级项目的出现也是激发更多人开始关注并且使用Go语言的重要原因,下面就来简单的盘点一下Go语言问世10周年以来那些由Go语言开发出来的赫赫有名的顶级项目,前半部分主要是国外友人的项目,最后几个是国人开发的项目。
Docker
git地址:https://github.com/moby/moby(目前Star:55.6k)
毋庸置疑,Docker是Go语言开发的第一个知名的开源项目,甚至可以说是至今为止最成功的基于Go语言的开源项目。Docker开源于2013年,Docker的出现将容器技术普及和推广到了业内顶级范畴,虽然除了Docker以外还有别的容器技术,但是随着Docker的成熟和生态的不断发展,Docker其实已经是容器技术的实施标准。有赖于容器技术的红火,云计算和微服务架构也在如今大行其道。最早的时候docker就是一个开源项目,主要由docker公司维护,2017年年初,docker公司将原先的docker项目改名为moby,moby继承了原先的docker的项目由开源社区继续维护。
Kubernetes
官方文档:https://kubernetes.io/docs/home/
git地址:https://github.com/kubernetes/kubernetes(目前Star:60.2k)
Kubernetes用于容器化应用的自动部署、扩缩和管理的开源系统。不得不说,是因为Docker的成功成就了Kubernetes的崛起,同时Kubernetes的崛起也促进了Doker更快的发展。Kubernetes是由Google的工程师设计研发并于2015成为开源项目捐赠给Cloud Native Computing Foundation。在Kubernetes普及以前有关容器编排有很多不同的解决方案,其中比较著名的是Mesos,但是随着Kubernetes的普及,实际上Kubernetes也已经是容器编排工具的事实标准。
Ethereum
官网地址:https://geth.ethereum.org/
官方文档:https://geth.ethereum.org/docs/
git地址:https://github.com/ethereum/go-ethereum(目前Star:24.8k)
ethereum(以太坊)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。在以太坊上,可以通过编写代码管理数字资产、运行程序,更重要的是,这一切都不受地域限制。很多人或许不一定ethereum,但是相信很多人都知道Bitcoin(比特币),Ether和Bitcoin都是基于区块链技术诞生出来的加密货币。Ether是市值第二高的加密货币,仅次于比特币。
Gin
官方文档:https://gin-gonic.com/docs/
git地址:https://github.com/gin-gonic/gin(目前Star:33k)
Gin是用Go语言编写的一个轻量级的Web应用框架,对比其它主流的同类框架,他有更好的性能和更快的路由。虽然Gin本身并没有提供太大的语法特效,但是它优秀的中间件设计思路和丰富的中间件生态使得它在众多web开发框架的大混战中最终笑道了最后,目前可以说是Go语言进行Web开发的不二选择。
Hugo
官网地址:https://gohugo.io/
官方文档:https://gohugo.io/documentation/
git地址:https://github.com/gohugoio/hugo(目前Star:39.5k)
Hugo是由Go语言实现的基于makddown风格的静态网站生成器,具有简单、易用、高效、易扩展、快速部署等特点,是新一代的开源博客系统。谈到开源博客系统,WordPress堪称开山鼻祖,至今仍有很多小站点是基于WordPress部署和维护的,其他语言实现的博客系统还有typecho(PHP)、Solo(Java)、Hexo(Nodejs)、jekyll(Ruby),但是论及使用的简单和构建网站的速度上很难有第二款软件能与Hugo相比。
InfluxDB
官网地址:https://www.influxdata.com/
官方文档:https://docs.influxdata.com/
git地址:https://github.com/influxdata/influxdb(目前Star:17.8k)
InfluxDB是一个用于存储和分析时间序列数据的开源数据,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。在DB-ENGINES给出的时间序列数据库的排名中,InfluxDB高居第一位,可以预见,InfluxDB会越来越得到广泛的使用。
Prometheus
官方文档:https://prometheus.io/docs/
git地址:https://github.com/prometheus/prometheus(目前Star:27.7k)
Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社区也十分活跃,他们便将它独立成开源项目,现属于Cloud Native Computing Foundation。在Kubernetes容器管理系统中,通常会搭配Prometheus进行监控,且Prometheus采集到的时序数据除了可以用自身的图形化界面展示外也可以作为数据源提供给Grafana使用。
Grafana
官网地址:https://grafana.com/
官方文档:https://grafana.com/docs/
git地址:https://github.com/grafana/grafana(目前Star:32.1k)
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源,与同类产品如kibana、Prometheus相比其自带的图表展示功能强大太多,更加灵活,且有丰富的插件支持。
Etcd
官网地址:https://etcd.io/
git地址:https://github.com/etcd-io/etcd(目前Star:28.3k)
Etcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key-value)存储、配置共享和服务发现等功能。Etcd可以用于存储关键数据和实现分布式调度,在现代化的集群运行中能够起到关键性的作用。很多人对Etcd还有点陌生,但是多数人一定听说过Zookeeper,从设计理念上Etcd是对标Zookeeper的,但是在使用性能上Etcd要更优异。
Consul
官方文档:https://www.consul.io/docs/index.html
git地址:https://github.com/hashicorp/consul(目前Star:17.8k)
Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。从功能特点上说Consul类似于Etcd或者Zookeeper,但是如果聚焦在服务注册、服务发现的领域,Consul提供HTTP的API和心跳检查机制,更方便使用,能够与其他系统实现比较好的解耦合。
Nsq
官网地址:http://nsq.io/
官方文档:https://nsq.io/overview/design.html
git地址:https://github.com/nsqio/nsq(目前Star:17.8k)
Nsq是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。Nsq具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。
CockroachDB
官网地址:https://www.cockroachlabs.com/
官方文档:https://www.cockroachlabs.com/docs/stable/
git地址:https://github.com/cockroachdb/cockroach(目前Star:17.4k)
CockroachDB是一款开源的分布式数据库,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持OLTP场景,同时支持轻量级OLAP场景。
v2ray
官方文档:https://www.v2ray.com/index.html
git地址:https://github.com/v2ray/v2ray-core(目前Star:17.4k)
V2Ray是一个国人基于Go语言开发的与Shadowsocks类似的代理软件,是广大天朝人民群众科学上网、学习国外先进科学技术的居家旅行必备良药。V2Ray是Project V下的一个工具。Project V是一个包含一系列构建特定网络环境工具的项目。没有V2Ray就不能方便的遨游在国外的网络,话不多说了,大大的感谢伟大的V2Ray。
Gogs
官网地址:https://gogs.io/
官方文档:https://gogs.io/docs
git地址:https://github.com/gogs/gogs(目前Star:32.4k)
Gogs是一款由国人开发的极易搭建的自助Git服务平台,Gogs的目标是打造一个最简单、最快速和最轻松的方式搭建自助Git服务。可以看做是Gitlab的精简版本。但是运行过Gitlab的同学都知道部署依赖的组件有多少,且动不动就占掉好几G的内存让你时不时就各种草泥马在心中奔腾,Gogs的出现绝对是搭建一个轻量级Git平台者的福音。
TiDB
官网地址:https://pingcap.com/
官方文档:https://pingcap.com/docs-cn/stable/
git地址:https://github.com/pingcap/tidb(目前Star:21.5k)
TiDB是国人PingCAP公司设计的开源分布式HTAP(Hybrid Transactional and Analytical Processing)数据库,结合了传统的RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB的目标是为OLTP(Online Transactional Processing)和OLAP(Online Analytical Processing)场景提供一站式的解决方案。
Beego
官网地址:https://beego.me/
git地址:https://github.com/astaxie/beego(目前Star:22.5k)
beego是国人开发的一个基于Go语言开发的HTTP框架,他可以用来快速开发API、Web及后端服务等各种应用,主要设计灵感来源于tornado、sinatra 和 flask 这三个框架,但是结合了Go本身的一些特性(interface、struct 嵌入等)而设计的一个框架。beego遵循MVC的设计思路,是别的语言开发者熟悉和使用Go语言做web开发的很好的入门级别框架,但是从性能角度出发与当今火热的Gin比起来还是有一定的差距。
Codis
官网地址:https://github.com/CodisLabs/codis
官方文档:https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md
git地址:https://github.com/CodisLabs/codis(目前Star:22.5k)
Codis是国人基于Go语言开发的一个分布式Redis解决方案。上层应用可以像使用单机的Redis一样使用, Codis底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的Redis服务。与官方的Redis Cluster方案相比Codis支持百分百的redis语言,不用担心pipeline和mget等多Key操作的限制。
Open-Falcon
官方文档:http://open-falcon.org/falcon-plus/
git地址:https://github.com/open-falcon/falcon-plus(目前Star:5.2k)
open-falcon是国人基于Go语言开发的开放式监控平台。在目前流行的三大开源运维监控工具Zabbix、Nagios、Open-Falcon当中,Open-Falcon属于后起之秀,可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控及报警。