證明谷歌Go魅力的10個開源項目


證明谷歌Go魅力的10個開源項目


【51CTO.com快譯】谷歌的Go編程語言問世已有10年,無疑已揚名立萬。由於豐富的庫和抽象機制簡化了開發併發分佈式(即雲)應用程序的工作,輕巧且易於編譯的Go備受關注。

但是真正衡量任何一種編程語言成功的標準是開發人員用它創建的項目。 Go已證明它是快速開發網絡服務、軟件基礎結構項目以及各種功能強大的緊湊工具的首選。

本文介紹了10個用Go語言編寫的值得關注的項目,許多項目已經比用來編寫的這種語言更出名。所有這些項目都在各自的領域發揮了重要作用。本文介紹的所有項目都託管在GitHub上,因此對Go好奇的人可以輕鬆查看讓這些項目取得成功的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)安全地訪問服務器。它通過單點登錄來執行安全,但又不需要這種事務通常需要的那種管理開銷(比如密鑰管理和輪換)。

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


分享到:


相關文章: