百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

推荐30个用于微服务的顶级工具「转」

ccwgpt 2024-10-05 14:08 24 浏览 0 评论

关于微服务的好文章不计其数。对于那些一直没有亲历微服务或初次听到这个概念的人来说,这篇文章相当于把一份顶级的开源工具清单送到他们的面前。微服务是一种用于开发高度可伸缩软件系统的架构风格。这种架构可用于开发企业、政府、学校和慈善机构的企业级应用。它与传统的单体架构完全相反,单体架构只专注于单个应用程序。



微服务小而独立,但在开发和维护方面,它们的架构可能很复杂。微服务之间通过同步协议(如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

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: