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

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



微服務小而獨立,但在開發和維護方面,它們的架構可能很複雜。微服務之間通過同步協議(如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/

中文譯文原文:http://www.infoq.com/cn/articles/30-tools-for-building-microservices


分享到:


相關文章: