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

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

微服務小而獨立,但在開發(fā)和維護方面,它們的架構可能很復雜。微服務之間通過同步協(xié)議(如HTTP/REST)或異步協(xié)議(如AMQP)相互通信來實現(xiàn)業(yè)務目標。

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

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

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

API管理和測試

1. API Fortress

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

http://apifortress.com/

2. Postman

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

https://www.getpostman.com/

3. Tyk

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

https://tyk.io/

消息服務

4. RabbitMQ

RabbitMQ可作為微服務之間的通信橋梁,它支持各種模式,可提高應用程序的可伸縮性,并解決大多數(shù)分布式系統(tǒng)都存在的問題。RabbitMQ可用在微服務環(huán)境或任何其他分布式系統(tǒng)中。你還可以使用這個工具在服務之間交換事件。

https://www.rabbitmq.com/

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

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

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

6. Apache Kafka

消息隊列對于微服務架構來說是非常重要的,可用來處理微服務之間的通信以及微服務與外部源之間的通信,不管是密集型的數(shù)據(jù)處理還是API調用。Apache Kafka是一個具有高容錯和彈性的分布式流處理平臺。

https://kafka.apache.org/

7. Google Cloud Pub/Sub

Google Cloud Pub/Sub是一款全托管的實時消息服務,可讓你在微服務之間發(fā)送和接收消息。將應用程序與Google Cloud Pub/Sub集成將有助于處理所有異步請求,并減少用戶等待響應的時間。

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

監(jiān)控

8. Logstash

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

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

9. Graylog

可以將Logstash與Graylog結合在一起使用,作為集中式的服務器。Graylog提供了交互式的界面,簡單易用且速度快。用戶可以在Graylog中輕松地瀏覽數(shù)據(jù)。它具有可伸縮性,可隨著業(yè)務增長而增長。Graylog不是免費的,但價格很實惠。

https://www.graylog.org/

Kube開發(fā)

10. Kubernetes

雖然Kubernetes是容器編配器,但在微服務領域,也有它的一席之地。Kubernetes已經(jīng)成為最佳部署實踐的黃金標準。在容器調度、負載均衡、服務發(fā)現(xiàn)等方面,Kubernetes是佼佼者。

https://kubernetes.io/

11. Telepresence

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

https://www.telepresence.io/

12. Istio

Istio支持在Kubernetes上進行服務部署。Istio服務網(wǎng)格技術為微服務通信帶來了可靠性、安全性和可管理性。服務網(wǎng)格技術可用于改善應用程序和微服務之間的關系和交互。

https://istio.io/

13. Minikube

Minikube是一個方便的開源工具,可讓你在沒有WiFi的情況下在筆記本電腦上運行Kubernetes。例如,當你在飛機上并且需要寫代碼時,就會派上用場。

https://github.com/kubernetes/minikube

編配

14. Conductor

Conductor是Netflix的微服務編排引擎,是Netflix OSS生態(tài)系統(tǒng)的一部分。Conductor運行在云端,并實現(xiàn)了微服務的流程編配。它還可用于控制和可視化微服務之間的交互。

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

編程語言

15. Elixir

使用Elixir來擴展你的編程技能,它是一門通用的函數(shù)式并發(fā)編程語言,運行在Erlang VM(也稱為BEAM)之上。

https://elixir-lang.org/

16. Spring Boot

使用Spring Boot框架可以大大簡化REST微服務的創(chuàng)建,只需幾行代碼即可。你可以使用Spring Boot提供的示例或Spring Initializr快速開始你的項目。

http://spring.io/

工具包

17. fabric8

作為開源的平臺即服務工具,fabric8為開發(fā)人員提供了基于git的配置管理系統(tǒng),可處理IP地址復雜性和端口映射,并對服務進行負載均衡。fabric8還為我們帶來了可伸縮性和高可用性。

http://fabric8.io/

18. Seneca

開發(fā)人員可以使用Seneca輕松構建基于消息的微服務,它是Node.js的微服務工具包,可以用它寫出干凈且結構良好的代碼,并輕松系統(tǒng)化應用程序的業(yè)務邏輯。

http://senecajs.org/

19. Google Cloud Functions

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

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

架構框架

20. goa

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

https://stackshare.io/goa

21. Kong

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

https://konghq.com/

無服務器工具

22. Claudia

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

https://claudiajs.com/

23. Apache Openwhisk

Apache Openwhisk是一種基于事件的編程服務,也是一個易于擴展的無服務器計算平臺,幫助開發(fā)人員創(chuàng)建、測試、連接和調試微服務。用戶可以在Mac、Windows或Linux上通過Docker來安裝和使用OpenWhisk。

https://openwhisk.apache.org/

24. Serverless

這個工具正如它的名字一樣,將FaaS/無服務器技術與其他云服務相結合,幫助開發(fā)人員構建復雜的系統(tǒng)。Serverless還提供了可伸縮性、集成安全性和改進的可操作性。

https://serverless.com/

25. Kubeless

Kubeless是一個Kubernetes原生無服務器框架,用戶只需要部署少量代碼,無需操心底層的基礎設施。Kubeless能夠感知Kubernetes資源,提供自動伸縮、API路由、監(jiān)控和故障排除等功能。Kubeless完全依賴于K8s原語,因此,Kubernetes用戶也可以結合使用原生K8s API服務器和API網(wǎng)關。

https://github.com/kubeless/kubeless

26. IronFunctions

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

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

27. AWS Lambda

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

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

28. OpenFaas

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

https://www.openfaas.com/

29. Microsoft Azure Functions

這是一個基于事件驅動的按需計算function,可增強Azure現(xiàn)有的應用程序功能。按需計算意味著用戶只需要為使用的資源付費。Azure Functions幫助開發(fā)人員連接到數(shù)據(jù)源/消息服務,讓他們能夠輕松地處理和響應事件。開發(fā)人員還可以利用Azure Functions構建基于HTTP的API端點。

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

30+. 團隊建設工具

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

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

英文原文:https://caylent.com/building-microservices/

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評論 19 139
  • 前言 基于 Docker 的容器技術是在2015年的時候開始接觸的,兩年多的時間,作為一名 Docker 的 De...
    Java架構閱讀 9,054評論 2 144
  • 窗外放晴了 一縷陽光竄進屋子來 溫暖卻清冷 寒意襲遍全身 又想起昨天的雨 dididada 絲絲縷縷 似哭泣似訴說...
    楓紫色閱讀 185評論 2 3
  • 上一節(jié) 五、黑白無常 鏡頭再次回到昨天夜里,在生死間掙扎的,保柱媳婦恍惚間身子一輕,肚子里的疼痛也沒了,頓時松了口...
    四葉草_廣廣閱讀 369評論 2 6
  • c的static 全局變量 定義初始化最好在.c文件c++類的static成員變量在.h class中只是聲明
    動感新勢力fan閱讀 165評論 0 0

友情鏈接更多精彩內容