腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

30+ 微服务构建的顶级工具清单

  • 2020-04-15
  • 本文字数:4690 字

    阅读完需:约 15 分钟

30+微服务构建的顶级工具清单

微服务架构,或说是微服务本身,是一种用于提升软件系统可扩展性的架构风格。与微服务相关的好文章不胜枚举,而本文希望能够为那些从未尝试过、或只是刚刚开始尝试微服务的人,提供一份顶级开源工具的清单。


微服务架构可用于企业、政府、学校和慈善机构等的企业级应用程序。与传统风格的单体架构完全相反,微服务专注于单个单元应用程序。


微服务微小、独立且独特。微服务架构的构建和维护都可能非常复杂。微服务之间可以相互通信,利用同步协议、HTTP / REST 或异步协议来服务于整体的业务目标。HTTP / REST 或 AMQP 就是协作服务的示例,这些协作服务通过实现彼此相关的功能来尽可能高效地协同工作。


微服务这一概念听起来清晰明了,但在实际操作中,想用所需的各种工具来构建微服务应用程序并非易事。这不仅仅是开发、测试或部署软件的传统问题。我们还需要进行持续监控,确保出现故障时,问题能够快速解决。


时刻谨记, 并不存在哪个完美工具能够给微服务提供一站式的解决方案。 Mike Amundsen 的《微服务架构三大支柱》一文中曾经提出过,微服务成功的关键因素中,在组织设计的层面有三大关键组成部分:沟通、团队和创新。而在所有支柱中,沟通无疑是最不可或缺的。


市场中有许多工具可用于支持构建微服务架构,其中大多数工具中的某些特定功能都是免费的,但是许多工具也可以为额外的功能和服务提供额外的付费升级。


API 管理与测试

01 API Fortress


API Fortress 是一个 API 测试及健康工具,它可以自动执行企业 API 的功能测试、运行状况监控和负载测试。它的设计实际上是无代码的,完全基于现代 API 架构实践和模式构建。


链接:https://apifortress.com


02 Postman


Postman 是适合个体开发人员和团队的 API 开发套件,它可让您轻松运行 UI 驱动的 API 测试。Postman 是一个功能强大的 HTTP 客户端,通过它,RESTful API 探索变得轻而易举。用户可以快速将简单和复杂的 HTTP 请求组合在一起,以便立即测试、开发和记录 API。


链接:https://www.getpostman.com


03 Tyk


Tyk 是一款开箱即用的开源 API 管理平台, 具有快速、可扩展和现代的特点


无论您是本地部署,还是使用云服务,或者喜欢混合场景,Tyk 都能满足您的需求。使用 Tyk,您可以在最低的成本之上获得极其可观的高可用性和低延迟。


链接:https://tyk.io


消息服务

04 RabbitMq


RabbitMQ 可帮助您使用不同的模式在您的微服务之间进行通信,扩展应用程序,并解决大多数分布式系统的问题。你可以在各种微服务环境或任何其他分布式系统中使用 RabbitMQ 连接竞争微服务。您还可以使用该工具在服务之间交换事件。


链接:https://www.rabbitmq.com


05 Amazon 简单队列服务(SQS)


Amazon SQS(Simple Queue Service,简单队列服务)提供了强大、灵活和可靠的微服务通信功能。如果选择发布-订阅微服务的通信模型,像 Amazon SQS 这样的消息队列服务可以解决好几个开发人员的问题。除了更好的安全性之外,队列还可以存储待处理消息的可靠位置,从而来增强消息传递。


链接:https://aws.amazon.com/cn/sqs/


06 Apache Kafka


消息队列在微服务架构中至关重要,因为需要它处理微服务彼此之间、以及微服务与外部源之间的通信。不论是用于密集数据处理还是 API 调用,Apache Kafka 都是一个 具有高容错性和弹性的分布式流处理平台


链接:https://kafka.apache.org


07 Google Cloud Pub/Sub


Google Cloud Pub / Sub 是一款完全托管的实时消息服务,可让您在微服务之间发送和接收消息。将您的应用程序与 Google Cloud Pub / Sub 集成,将有助于处理您必须接收的所有异步请求,并 很大程度地减少用户等待响应的时间


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


监 控

08 Logstash


部署完微服务之后,您必须对其进行监控。此时你需要考虑很多问题,例如:特定的微服务是否响应良好或需要调整?其他系统部件(比如数据库)是否正常工作?您需要检查日志并执行此操作,此时 Logstash 将会是一个很好的工具。 它是一个开源平台 ,您可以在其中集中、存储和转换数据。


链接:https://www.elastic.co/cn/products/logstash


09 Graylog


不妨试试将 Logstash 与 Graylog 结合,作为集中式服务器来使用。它 易于使用、交互性良好、且速度很快 。用户可以使用系统轻松浏览数据。它具有可扩展性,可根据开发的需求随用户的业务增长而设计。Graylog 不是免费的,但价格实惠。


链接:https://www.graylog.org


Kube 开发

10 Kubernetes


虽然 Kubernetes 肯定属于容器编排领域,但它在微服务领域也应该有一席之地。 Kubernetes 已成为最佳部署实践的黄金标准。在 容器调度、负载均衡、服务发现 等方面上,Kubernetes 特别强大。对于使用 Kubernetes 构建微服务的开发人员来说,同样有不少开源工具可供使用。


链接:https://kubernetes.io


11 Telepresence


Telepresence 是 Kubernetes 的一种快速的本地开发工具。通过 Telepresence,用户可以使用混合模型,服务编码可以在用户的笔记本电脑上本地完成,同时通过双向代理连接 Kubernetes 中的服务。我不推荐将 Telepresence 用于生产环境,但它真的非常适合在开发环境中使用。


链接:https://www.telepresence.io


12 Istio


Istio 支持 Kubernetes 上的服务部署。通过 Istio 的 service mesh 技术,可以为微服务通信增加可靠性、安全性和可管理性。service mesh 技术让您可以改善应用程序和微服务之间的关系和交互。


链接:https://istio.io


13 Minikube


Minikube 是一个方便的开源工具,可让您无需 Wi-Fi 而在笔记本电脑上运行 Kubernetes。例如,当您想在飞机上写代码,而此时没有随机 Wi-Fi,那 Minikube 的作用就显现出来了。


链接:


https://github.com/kubernetes/minikube


编排

14 Conductor


Conductor 是 Netflix 的微服务编排引擎,是 Netflix OSS 生态系统的一部分。Conductor 可以在云上运行,并使用流协调器来通过微服务执行任务。它还有助于控制微服务之间的交互并将其可视化。


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


编程语言

15 Elixir


您可以尝试使用 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 提供了一个框架,使用设计优先的方法,在 Golang 编程语言中构建 REST API 和微服务。使用 goa,开发人员可以设计 API,然后生成其他所有内容:JSON 文档、命令行应用程序、JavaScript 库等等。所有 goadesign 服务都在 Google Cloud Platform 之上运行。


链接:https://stackshare.io/goa


21 Kong


Kong 可以在多个操作环境中安装,它利用大量的读取-部署插件来帮助开发和部署微服务。使用 Kong,您可以利用微服务和容器设计模式快速构建以 API 为中心的应用程序。


链接:https://konghq.com


无服务器工具

无服务器技术或“功能即服务(Function-as-a-service)”是微服务的重要组成部分。它优化了将事物分解为最小功能的方法。


22 Claudia


使用 Claudia 的 Lambda 微服务后,用户可以专注于业务而不是处理 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 是在 Golang 上编写的,并且真正支持任何语言的函数。 IronFunctions 的主要优点是它 支持 AWS Lambda 格式 。您可以直接从 Lambda 导入函数并在任何地方运行它们。


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


27 AWS Lambda


AWS Lambda 为您的微服务构建提供基础设施较少的服务器,并且是按使用费收费的。Lambda 还可以与 AWS API Gateway 结合使用,后者可以托管 REST 或 API 服务。这两者一起,可以让您的 API 满足用户提出的任何需求。


链接:https://aws.amazon.com/cn/lambda/


28 Openfaas


OpenFaaS 是一个开源的无服务器软件程序,承诺“让无服务器 function 更简单”。OpenFaaS 可帮助您将任何进程或容器打包为 Windows 或 Linux 的无服务器 function。与任何无服务器技术一样,其好处是可以让开发人员专注于提供业务价值,而无需费心于底层应用程序结构的日常管理相关的工作。


链接:https://www.openfaas.com


29 Microsoft Azure Functions


Microsoft Azure Functions 是一种事件驱动的按需计算 function,它可以增强 Azure 现有的应用程序功能。您只需基于规模和需求为您所使用的资源付费。 Azure Functions 帮助开发人员连接到数据源/消息服务解决方案,从而可以轻松处理和响应事件。开发人员还可以利用 Azure Functions 功能构建基于 HTTP 的 API 端点。


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


团队建设工具

开发团队经常需要对微服务进行定期处理。要实现真正的团队自治,团队成员之间良好的沟通和合作必不可少。应用程序生命周期的所有部分、所有环节都需要灵活性和责任感。在团队协作方面有许多工具可用,例如视频会议、聊天工具、项目管理应用程序和维基,这些工具有利于微服务开发人员遵守前文提到的微服务三大支柱。这类工具种类繁多且不少已经非常成熟,大家可以自行尝试与选择。


结语

软件世界中不断有新的开源工具涌现,我们应当时刻保持关注。本文的这一微服务系统工具清单是一个不错的起点,但在未来势必会有更多更好的工具出现,毕竟这正是开源的本质意义所在。


2020-04-15 23:05917

评论 1 条评论

发布
用户头像
怎么搜出来这个是18年写的呢?
2021-04-26 16:33
回复
没有更多了
发现更多内容

第十周作业

wanlinwang

极客大学架构师训练营

第十周作业 (作业一)

Geek_83908e

架构师一期

架构师训练营第一周”架构方法“作业

随秋

极客大学架构师训练营

【第十周】课后作业

云龙

Week 6 作业

evildracula

学习 架构

第六周作业

willson

极客大学架构师训练营

架构师训练营 1 期 -- 第十周作业

曾彪彪

架构师训练营第十周学习总结

文智

极客大学架构师训练营

训练营第六周总结

大脸猫

极客大学架构师训练营

Week6 (技术选型二)作业 2

shuyaxx

六、CAP

Geek_28b526

Week_10 作业

golangboy

极客大学架构师训练营

架构师训练营第六周学习笔记

李日盛

笔记

架构师训练营第一周”架构方法“学习笔记

随秋

极客大学架构师训练营

week 6 学习笔记

willson

【架构师训练营第 1 期 10 周】 学习总结

Bear

极客大学架构师训练营

架构一期第十周作业

Airs

《Python数据科学入门》PDF免费下载

计算机与AI

Python 学习 数据科学

第十周学习总结

knight

第 6 周 系统架构作业

心在那片海

第10周总结

alpha

极客大学架构师训练营

第10周作业

alpha

极客大学架构师训练营

架构师训练营week10

FG佳

架构师一期

架构师训练营第十周课程笔记及心得

Airs

Week 6 学习总结

evildracula

学习 架构

第 6 周 系统架构总结

心在那片海

成为架构师 - 架构师训练营第 06 周

陈永龙Vincent

Spring中的线程池与任务调度

Rayjun

Java spring 线程池

身为一名优秀的程序员,如何避免满屏的写 if else!

Java架构师迁哥

架构师训练营 1 期 - 第十周作业(vaik)

行之

极客大学架构师训练营

架构师训练营week10总结

FG佳

30+微服务构建的顶级工具清单_文化 & 方法_Rancher_InfoQ精选文章