谷歌的 Go 编程语言问世已有 10 年,无疑已扬名立万。由于丰富的库和抽象机制简化了开发并发分布式(即云)应用程序的工作,轻巧且易于编译的 Go 备受关注。

但是真正衡量任何一种编程语言成功的标准是开发人员用它创建的项目。 Go 已证明它是快速开发网络服务、软件基础结构项目以及各种功能强大的紧凑工具的首选。

本文介绍了 10 个用 Go 语言编写的值得关注的项目,许多项目已经比用来编写的这种语言更出名。所有这些项目都在各自的领域发挥了重要作用。

Docker

你很难找到比 Docker 更适合的 Go 成功案例了。在一年多点的时间里,这种软件容器化技术成为了 Go 适用于大规模分布式软件项目的典范。Docker 团队之所以喜欢 Go,是由于它有很多优点:无需依赖项的静态编译、强大的标准库、完整的开发环境,以及能够在最省力的情况下针对多种架构进行构建。

Kubernetes

如果 Docker 是用 Go 编写的,按理说其他重要的面向云的容器项目也将用 Go 编写。 谷歌的容器编排项目 Kubernetes 是 Go 项目,大部分 Kubernetes 子组件和生态系统也是如此。一个典型例子是:超轻量级的 Kubernetes 衍生品 k3 适用于只需要 Kubernetes 基础组件的人群。

谷歌考虑过使用其他语言(包括 C/C++、Java 和 Python)编写 Kubernetes。但是据 Kubernetes 的联合创始人、前技术负责人,目前是 VMware 首席工程师的 Joe Beda 声称,这些语言没有一个像 Go 那样“称心如意”。正如 Beda 所说,“Go 既不太高级,又不太低级。”

Fedora CoreOS

CoreOS(现在是 Red Hat 的项目)使用 Docker 将 Linux 变成一堆松散耦合的容器,有可能摆脱一系列混乱的依赖项,依赖项已成为 Linux 软件包管理的基本对象。因此,CoreOS 利用 Docker 来实现这一魔力也就不足为奇了;CoreOS 的两个基本服务 Etcd 和 Fleet 都是用 Go 编写的。Fleet 让你可以“就像 CoreOS 集群共享单一的初始化系统那样对待它。”Etcd 是一个分布式键值存储系统,处理 Docker 应用程序与 CoreOS 实例之间的设置同步。两者都是用 Go 编写的,Go 拥有“出色的跨平台支持、小巧的二进制文件及强大的社区。”

InfluxDB

InfluxDB 是“没有外部依赖项的分布式时间序列数据库”。“时间序列”这个术语是指 InfluxDB 主要负责获取度量指标或事件,允许对它们进行实时分析。“没有外部依赖项”意味着你不需要其他软件即可使用 InfluxDB。它完全是独立自主的(Go 应用程序往往如此)。可以通过提交 JSON 的 REST 调用将数据写入数据库或从数据库读取数据,并可以通过甚至允许使用正则表达式的简单 SQL 语言进行查询。InfluxDB 具有高度弹性和横向可扩展性,选择 Go 这种语言可能是为了使那些功能变得可行和容易。

Istio

Istio 项目是 Kubernetes 生态系统的一部分,它解决许多企业应用环境中一个没有深入了解又没有处理好的问题:如何处理将服务彼此连接并与外界连接的网络结构?Istio 在 Kubernetes 集群中的每个容器之间以及那些容器与外界之间提供了一个可编程的“服务网格”,或网络代理层,那样可以通过共享控制平面以编程方式对该网络进行任何更改。鉴于 Kubernetes 也是用 Go 编写的,因此 Go 非常适合此任务,另一个原因是 Go 适用于去中心化的分布式网络项目。

Traefik

用 Go 语言编写的另一个与网络有关的项目是 Traefik,它是面向网络服务的反向代理和负载均衡系统。Traefik 旨在与一系列广泛的编排选项一起使用,从 Kubernetes 和 Docker Swarm 到 Amazon ECS和Azure Service Fabric,不一而足。Traefik 自动创建在那些编排器下运行的微服务所需的路由,以便与外界进行对话。它还生成适合编排器的跟踪数据和统计信息。

Hugo

静态网站生成器现在大行其道。毕竟,它们为仅使用静态 HTML、CSS 和 JavaScript 来创建快速安全的网站提供了一种简便的方法。Hugo 是一个静态网站生成器,它利用了 Go 的许多功能来快速顺畅地工作——即 Go 用于渲染 HTML 的工具、网络库、国际化功能以及作为单个可以再分发的平台原生二进制文件加以部署的功能。Go 的所有这些功能使 Hugo 易于拆包、运行、用于快速构建网站。

Terraform

HashiCorp 由 Vagrant(基于 Ruby 的开发环境管理工具)的开发者创办,它充分利用 Go 的速度和功能来构建更庞大更宏伟的项目:Terraform,该系统用于通过定义文件变成代码在本地或云端构建 IT 基础架构。你所做的任何更改可以前滚或后滚,而且在调用代码之前可以获得到底会发生什么情况的完整摘要(即执行计划)。

CockroachDB

Go 用于构建多种分布式云原生应用程序。CockroachDB 以弹性闻名,这种分布式数据库旨在承受各种各样的灾难(甚至是数据中心故障),又继续响应你的 SQL 查询。 CockroachDB 完全是用 Go 编写的,只针对源自前一个项目 RocksDB 的性能密集型核心功能使用了一小部分 C++ 代码。

Gravitational Teleport

Go 已成为许多网络项目以及基于它们的下游项目的默认语言。一个典型的例子是:用 Go 实现的 SSH 本身很有用,充当 Gravitational Teleport 等项目的基础。Gravitational Teleport 让用户可以通过外壳(shell)安全地访问服务器。它通过单点登录来执行安全,但又不需要这种事务通常需要的那种管理开销(比如密钥管理和轮换)。

本文转自:51CTO

原文标题:10 open source projects proving the power of Google Go,作者:Serdar Yegulalp

证明谷歌 Go 魅力的 10 个开源项目相关推荐

  1. 历史上最有影响力的10款开源项目

    开源是大趋势,开源软件也在越来越多的出现在日常电脑桌面上,如Firefox浏览器.Ubuntu操作系统等.人们选择开源软件的原因,主要有低成本.安全无病毒侵害.更加透明和开放等.按照大多数的开源协议如 ...

  2. 2014年值得关注的10个开源项目 上

    2014年值得关注的10个开源项目(上) 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Appium 官网:http://appium.io/ Ap ...

  3. 2018年10月Top 10 Python开源项目

    过去一个月,MyBridge从将近250个Python开源项目中选择出了最好的10个项目: 这些项目在GitHub上平均获得1140个star 项目涵盖话题包括性能分析.图表提取.HTTP框架.HTT ...

  4. vue 计算屏幕的高度_学习Vue可以参考的10个开源项目——OpenSource

    介绍 今天文章重点介绍一些最佳的Vue.js开源项目.Vue.js是一个JavaScript框架,主要专注于在应用程序项目中开发用户界面.Vue是一个简单的最小核心,具有可逐步采用的堆栈,可以处理任何 ...

  5. 不吹不黑!逛 GitHub 没看过这 10 个开源项目,绝对血亏...

    大家好,我是小 G. 前不久我在逛 Medium 的时候,偶然看到一篇文章<10 Extraordinary GitHub Repos for All Developers>,作者在里面介 ...

  6. 2022 年最热门的10个开源项目

    数据表格 项目名 用途 星星数 观看数 fork数 TensorFlow 机器学习 170K 7.8K 87.6K Awesome 学习资源 234K 7.5K 24.7K d3 可视化 104K 3 ...

  7. 极客日报:砍价永远差一刀?拼多多法庭上回复:小数点后有6位;微信加入语音消息暂停功能;​谷歌和IBM提议建立关键开源项目清单

    一分钟速览新闻点! 砍价永远差一刀?拼多多法庭上回复:小数点后有6位 微信加入语音消息暂停功能,网友:还需要进度条 原极狐汽车"争议总裁"于立国转投小米汽车担任副总 丁磊回应&qu ...

  8. material 项目_Web开发必备的 10 个开源项目,不用自己亲自造轮子!

    来自:Java and Python君 Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费 ...

  9. 重磅!腾讯关于微信和移动开发的 10 大开源项目

    腾讯开源的项目比较多,在 Github(https://github.com/Tencent) 上开源的项目有 50 个. 1.Android 热修复框架 Tinker Tinker 是微信官方的 A ...

最新文章

  1. 使用Git,显示一个分支中的所有提交,但不显示其他分支中的所有提交
  2. Android获取顶部状态栏statusBar高度、底部导航栏navigationBar高度
  3. 后裂变时代:拼团、砍价、分销等主流玩法盘点及未来趋势
  4. 论营销的重要性:以一个磁铁为例
  5. 【深度学习笔记】Batch Normalization 以及其如何解决梯度消失问题
  6. ionic2 安装与cordova打包
  7. Java Character.UnicodeBlock of()方法与示例
  8. centos7重新加载服务的命令_CentOS7 从查看、启动、停止服务说起systemctl
  9. 第十八:如何定制Pytest+Allure2详细报告生成,给项目量身打造一套测试报告(重点超详细)
  10. pypy mysql 兼容_PyPy运行Django+MySQL简单教程
  11. C++ 什么叫做离散化
  12. OpenCV2计算机编程手册(二)基于类的图像处理
  13. POSIX和CMSIS接口
  14. python实例013--定义一个矩形类
  15. 利用Python学习数据挖掘【2】
  16. 年轻人要对自己狠一点
  17. 关于项目编译工具ninja、make、cmake的区别与优劣
  18. 将你的笔记本变成无线路由器
  19. 百度地图-创建标注 画线
  20. 编译参数-Wl和rpath的理解

热门文章

  1. 华中数控机器人编程循环三次_华中数控:公司在数控技术上不断创新突破 在技术方面处于国内领先水平...
  2. 眼前一亮的UI设计案例|插画世界里的网页首图
  3. 冬天人物活动插画|表达有温度的冬季海报必备psd分层素材
  4. speedtest命令行linux,Linux或者Mac下命令行speedtest测试网络速度
  5. 网易云音乐刷听歌量_网易云音乐极速版悄然上线!听歌体验同之前没有差别
  6. arm 饱和指令_ARM aarch64汇编学习笔记(九):使用Neon指令(一)
  7. java 使用vsphere 创建虚拟机‘_Java数组的创建及使用
  8. C++类模板 简单示例
  9. Memcached 教程 | 菜鸟教程
  10. VxWorks操作系统