谷歌的 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
Original url: Access
Created at: 2019-10-15 09:22:23
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论