推薦30個用於微服務的頂級工具

weixin_33797791發表於2018-09-06

關於微服務的好文章不計其數。對於那些一直沒有親歷微服務或初次聽到這個概念的人來說,這篇文章相當於把一份頂級的開源工具清單送到他們的面前。微服務是一種用於開發高度可伸縮軟體系統的架構風格。這種架構可用於開發企業、政府、學校和慈善機構的企業級應用。它與傳統的單體架構完全相反,單體架構只專注於單個應用程式。

微服務小而獨立,但在開發和維護方面,它們的架構可能很複雜。微服務之間通過同步協議(如 HTTP/REST)或非同步協議(如 AMQP)相互通訊來實現業務目標。

但有些事情看起來容易做起來難,微服務架構看似條理分明,但真正要使用各種工具來構建微服務並不容易。這不像傳統的開發、測試和部署那麼簡單,它還需要持續的監控,當出現故障時,還需要能夠快速解決問題。

請記住,沒有一個工具可以為微服務提供一站式的解決方案。Mike Amundsen 在他的文章“微服務架構三要素”中指出,有三個關鍵因素決定了是否能夠成功實施微服務:溝通、團隊和創新。在這三個因素中,溝通無疑是最不可或缺的因素。

有很多工具可用於構建微服務,其中大多數是免費的,可用於執行特定任務,也有一些提供了收費功能。

API 管理和測試

1. API Fortress

API Fortress 是 API 測試和健康檢測工具,為企業級 API 提供自動化的功能測試、健康檢測和負載測試。它的設計原則是無程式碼,完全基於現代 API 架構實踐和模式而構建。

http://apifortress.com/

2. Postman

Postman 是面向個體開發者和團隊的 API 開發套件,可讓你輕鬆執行 UI 驅動的 API 測試。Postman 還是一個功能強大的 HTTP 客戶端,讓 RESTful API 探索變得輕而易舉。使用者可以將簡單和複雜的 HTTP 請求組合在一起,實現快速的 API 測試、開發和文件化。

https://www.getpostman.com/

3. Tyk

Tyk 是一款開箱即用的開源 API 管理平臺,速度快,可伸縮。無論是部署在內部,還是部署在雲端,或者使用兩者的混合,對 Tyk 來說都不在話下。除了可以降低管理成本,Tyk 還將為你帶來高可用性和低延遲。

https://tyk.io/

訊息服務

4. RabbitMQ

RabbitMQ 可作為微服務之間的通訊橋樑,它支援各種模式,可提高應用程式的可伸縮性,並解決大多數分散式系統都存在的問題。RabbitMQ 可用在微服務環境或任何其他分散式系統中。你還可以使用這個工具在服務之間交換事件。

https://www.rabbitmq.com/

5. 亞馬遜簡單佇列服務(SQS)

亞馬遜 SQS 提供了強大、靈活且可靠的微服務通訊機制。作為一種基於釋出訂閱的微服務通訊模型,亞馬遜 SQS 可以幫助開發人員解決很多問題。除了更好的安全性之外,佇列還通過為待處理訊息提供儲存來增強可靠性。

https://aws.amazon.com/sqs/

6. Apache Kafka

訊息佇列對於微服務架構來說是非常重要的,可用來處理微服務之間的通訊以及微服務與外部源之間的通訊,不管是密集型的資料處理還是 API 呼叫。Apache Kafka 是一個具有高容錯和彈性的分散式流處理平臺。

https://kafka.apache.org/

7. Google Cloud Pub/Sub

Google Cloud Pub/Sub 是一款全託管的實時訊息服務,可讓你在微服務之間傳送和接收訊息。將應用程式與 Google Cloud Pub/Sub 整合將有助於處理所有非同步請求,並減少使用者等待響應的時間。

https://cloud.google.com/pubsub/

監 控

8. Logstash

在部署好微服務後,必須對其進行監控。然而,做好監控需要考慮諸多因素。例如,某個微服務是否執行良好,需要做出調整嗎?其他元件(比如資料庫)是否執行正常?你需要通過檢查日誌來檢查這些問題,而 Logstash 是一個很好的日誌工具。它是一個開源平臺,你可以通過 Logstash 進行資料收集、儲存和轉換。

https://www.elastic.co/products/logstash

9. Graylog

可以將 Logstash 與 Graylog 結合在一起使用,作為集中式的伺服器。Graylog 提供了互動式的介面,簡單易用且速度快。使用者可以在 Graylog 中輕鬆地瀏覽資料。它具有可伸縮性,可隨著業務增長而增長。Graylog 不是免費的,但價格很實惠。

https://www.graylog.org/

Kube 開發

10. Kubernetes

雖然 Kubernetes 是容器編配器,但在微服務領域,也有它的一席之地。Kubernetes 已經成為最佳部署實踐的黃金標準。在容器排程、負載均衡、服務發現等方面,Kubernetes 是佼佼者。

https://kubernetes.io/

11. Telepresence

Telepresence 是 Kubernetes 的一個本地開發工具。等待容器部署完成可能會非常耗時,而有了 Telepresence,就可以使用混合模型。你在膝上型電腦上完成本地編碼,同時通過雙向代理連線 Kubernetes 中的服務。不過,不推薦在生產環境中使用 Telepresence,它更適合用於本地開發。

https://www.telepresence.io/

12. Istio

Istio 支援在 Kubernetes 上進行服務部署。Istio 服務網格技術為微服務通訊帶來了可靠性、安全性和可管理性。服務網格技術可用於改善應用程式和微服務之間的關係和互動。

https://istio.io/

13. Minikube

Minikube 是一個方便的開源工具,可讓你在沒有 WiFi 的情況下在膝上型電腦上執行 Kubernetes。例如,當你在飛機上並且需要寫程式碼時,就會派上用場。

https://github.com/kubernetes/minikube

編 配

14. Conductor

Conductor 是 Netflix 的微服務編排引擎,是 Netflix OSS 生態系統的一部分。Conductor 執行在雲端,並實現了微服務的流程編配。它還可用於控制和視覺化微服務之間的互動。

https://netflix.github.io/conductor/

程式語言

15. Elixir

使用 Elixir 來擴充套件你的程式設計技能,它是一門通用的函式式併發程式語言,執行在 Erlang VM(也稱為 BEAM)之上。

https://elixir-lang.org/

16. Spring Boot

使用 Spring Boot 框架可以大大簡化 REST 微服務的建立,只需幾行程式碼即可。你可以使用 Spring Boot 提供的示例或 Spring Initializr 快速開始你的專案。

http://spring.io/

工具包

17. fabric8

作為開源的平臺即服務工具,fabric8 為開發人員提供了基於 git 的配置管理系統,可處理 IP 地址複雜性和埠對映,並對服務進行負載均衡。fabric8 還為我們帶來了可伸縮性和高可用性。

http://fabric8.io/

18. Seneca

開發人員可以使用 Seneca 輕鬆構建基於訊息的微服務,它是 Node.js 的微服務工具包,可以用它寫出乾淨且結構良好的程式碼,並輕鬆系統化應用程式的業務邏輯。

http://senecajs.org/

19. Google Cloud Functions

Google Cloud Platform 的 Cloud Functions(BETA)是一種輕量級的無伺服器平臺,易於部署和維護。它的控制檯為開發人員提供了很好的解決方案,用於構建基於事件驅動的低耦合微服務應用。該平臺的容器是按照使用量收費的。此外,開發人員還可以通過 Google Compute API 將 Cloud Functions 連線到其他產品。

https://cloud.google.com/functions/

架構框架

20. goa

goa 是一個使用 Go 語言開發、用於構建 REST API 和微服務的框架。在 goa 中,開發人員可以先設計好 API,然後生成其他內容,從 JSON 文件到命令列應用程式及 JavaScript 庫等。所有的 goadesign 服務都執行在 Google Cloud Platform 上。

https://stackshare.io/goa

21. Kong

Kong 可以安裝在多種操作環境中,它利用大量的 read-to-deploy 外掛來協助開發和部署微服務。有了 Kong,你就可以更好地利用微服務和容器設計模式快速構建以 API 為中心的應用程式。

https://konghq.com/

無伺服器工具

22. Claudia

通過使用 Claudia,開發人員可以專注在業務上,而不是把精力浪費在處理與 AWS 部署有關的事情上。Claudia 負責處理與 AWS Lambda 和 API Gateway 相關的部署。Claudia 還可以自動化容易出錯的部署和配置任務。除此之外,它還提供了增強工具,如 Claudia API Builder 和 Claudia Bot Builder。

https://claudiajs.com/

23. Apache Openwhisk

Apache Openwhisk 是一種基於事件的程式設計服務,也是一個易於擴充套件的無伺服器計算平臺,幫助開發人員建立、測試、連線和除錯微服務。使用者可以在 Mac、Windows 或 Linux 上通過 Docker 來安裝和使用 OpenWhisk。

https://openwhisk.apache.org/

24. Serverless

這個工具正如它的名字一樣,將 FaaS/ 無伺服器技術與其他雲服務相結合,幫助開發人員構建複雜的系統。Serverless 還提供了可伸縮性、整合安全性和改進的可操作性。

https://serverless.com/

25. Kubeless

Kubeless 是一個 Kubernetes 原生無伺服器框架,使用者只需要部署少量程式碼,無需操心底層的基礎設施。Kubeless 能夠感知 Kubernetes 資源,提供自動伸縮、API 路由、監控和故障排除等功能。Kubeless 完全依賴於 K8s 原語,因此,Kubernetes 使用者也可以結合使用原生 K8s API 伺服器和 API 閘道器。

https://github.com/kubeless/kubeless

26. IronFunctions

IronFunctions 是一個開源的無伺服器(或 FaaS)平臺,可以在任何地方執行。IronFunctions 使用 Go 語言開發,但可以支援使用任意語言編寫的 function。IronFunctions 的主要優點是它支援 AWS Lambda 格式,可以直接從 Lambda 匯入和執行 function。

https://github.com/iron-io/functions

27. AWS Lambda

AWS Lambda 為構建微服務提供了無基礎設施(infrastructure-less)伺服器,使用者需要按使用量付費。Lambda 還可以與 AWS API Gateway 結合使用,後者可用於託管 REST 或 API 服務。將這兩者結合在一起,可以讓你的 API 處理由使用者發出的任何請求。

https://aws.amazon.com/lambda/

28. OpenFaas

一個開源的無伺服器軟體,承諾“讓無伺服器 function 變簡單”。OpenFaaS 可幫助你將任意程式或容器打包成 Windows 或 Linux 的無伺服器 function。與其他無伺服器技術一樣,它的好處是可以讓開發人員專注在業務上,而不是將精力用在處理底層的應用程式結構上。

https://www.openfaas.com/

29. Microsoft Azure Functions

這是一個基於事件驅動的按需計算 function,可增強 Azure 現有的應用程式功能。按需計算意味著使用者只需要為使用的資源付費。Azure Functions 幫助開發人員連線到資料來源 / 訊息服務,讓他們能夠輕鬆地處理和響應事件。開發人員還可以利用 Azure Functions 構建基於 HTTP 的 API 端點。

https://azure.microsoft.com/en-us/services/functions/

30. 團隊建設工具

開發團隊通常需要定期處理微服務的變更。團隊之間需要良好的溝通和合作才能實現真正的團隊自治。靈活性和責任感應該貫穿整個應用程式生命週期。有很多工具可用於團隊協作,例如視訊會議、聊天工具、專案管理應用程式和 wiki,這些工具可以幫助微服務開發人員實現之前提到的微服務三要素。這類工具實在太多了,作為參考,Caylent 團隊選擇了 Slack、Trello、Google Cloud、Postman 和 Google Meet 來滿足開發和溝通需求。

新的開源工具總是不斷出現,所以我們要時刻留意。本文所列出的資源只是微服務系統工具的冰山一角。記住,開源的本質就是快速演化,不斷推陳出新。

英文原文:

https://caylent.com/building-microservices/


相關文章