前言
我們已經討論「微服務架構」很長一段時間了。它是軟體架構中最新的熱門話題。那麼什麼是微服務呢?我們為什麼要使用它?為什麼要在 Golang 中使用微服務架構?它有哪些優點?
本文中,我將會探討一些相關的問題。廢話不多說,讓我們開始吧。
什麼是微服務?
微服務是一種軟體開發技術,屬於 SOA(面向服務的架構)的一種形式。它的作用是,將應用程式構建為許多松耦合的服務的集合。在這種架構中,服務的編碼通常是細粒度的,服務的協議更輕量。目前還沒有對微服務的準確定義,但它有一些顯著的特徵:自動化部署、業務功能、去中心化的數據管理和智能端點。
我們為什麼使用微服務?
這種架構有助於我們用各部分、小型模塊描繪整個應用程式,使其更容易理解、開發和測試;有助於我們將各個服務視為獨立且又清晰指明其用途的服務。更進一步地,它有助於保持項目架構的一致性(最初設計的架構和實際開發完成的架構差別不大)。它還可以通過建立不同的獨立團隊來進行服務的部署和擴展,從而各團隊能夠並行地開發。在這個架構中重構代碼更容易。它也支持連續交付和部署流程(CI/CD)。
為什麼使用 go 構建微服務?
在深入研究這個問題之前。首先,我說一下 Golang 的優勢。雖然 Golang 是一門新的語言,但是與其他語言相比,它有很多優勢。用 Golang 編寫的程序更加健壯。它們能夠承受程序使用運行的服務構建的繁重負載。Golang 更適合多處理器系統和 web 應用程式。此外,它容易地與 GitHub 集成,管理非集中的代碼包。微服務架構的用處大部分體現在當程序需要伸縮(scalable)時。如果有一種語言可以完全符合標準,那麼它就是 Golang。原因是它繼承自 C-family 程式語言,用 Golang 編寫的組件更容易與同一家族中其他語言編寫的組件相結合。
儘管 Go 出身於 C-family,但它比 C / C ++更高效。 它語法更簡單,有點像 Python。它穩定語法, 自第一次公開發布以來,它沒有太大變化,也就是說它是後向兼容的。與其他語言相比,這讓 golang 占了上風。 除此之外,Golang 的性能比 python 和 java 高出不少。錦上添花的是,它又像 C/C++ 簡單的同時又易於閱讀和理解,使它成為開發微服務應用的絕佳選擇。
Golang中的微服務架構框架
下面,我們討論一下可以用於微服務架構的框架。有以下些框架:
Go Micro
Go Micro 是目前為止我遇到的最流行的RPC框架。它是一個可插拔的RPC框架。Go Micro 為我們提供了以下功能:
Go Micro 架構由三層組成。第一層抽象為服務層。第二層為 client-server 模型層。serrver 用於編寫服務的塊組成,而 client 為我們提供接口,其唯一目的是向 server model 中編寫的服務發出請求。
第三層有以下類型的插件:
它還提供了一個名為 Sidecar 的功能。Sidecar 使您能夠集成以Go以外的語言編寫的服務。它還為我們提供了gRPC編碼/解碼、服務註冊和HTTP 請求處理。
GO Kit
Go Kit 是一個用於構建微服務的編程工具包。與 Go Micro不同,它是一個可以以二進位包導入的庫。Go Kit 規則很簡單。如下:
Go Kit 提供以下代碼包:
Go Kit 服務架構如下
Gizmo
Gizmo 是來自《紐約時報》的一個微服務工具包。它提供了將伺服器守護進程和 pubsub 守護進程放在一起的包。它公開了以下包:
Pubsub包提供了處理以下隊列的接口:
所以,在我看來,Gizmo 介於 Go Micro 和 Go Kit 之間。它不像 Go Micro 那樣是一個完全的黑盒。同時,它也不像 Go Kit 那麼原始。它提供了更高級別的構建組件,比如配置和 pubsub 包。
Kite
Kite 是一個在 Go 中開發微服務的框架。它公開RPC client 和 Server 端代碼包。創建的服務將自動註冊到服務發現系統 Kontrol。Kontrol 是用 Kite 編寫的,它本身就是一個 Kite service。這意味著 Kite 微服務在自身的環境中運行良好。如果需要將 Kite 微服務連接到另一個服務發現系統,則需要定製。這是我從列表中選擇 Kite 並決定不介紹這個框架的重要原因之一。
end:如果你覺得本文對你有幫助的話,記得關注點贊轉發,你的支持就是我更新動力。