关注云加社区 提升技术能力
学习云计算,AI,大数据,小程序开发等技术
助你一臂之力 成为技术大牛
关于微服务有很多很棒的文章。对于那些一直没有接受微服务的人,或者新手,本文是为了提供顶级开源工具的整合。微服务架构,或仅微服务,是用于开发软件系统的高度可扩展的结构风格。这种体系结构可用于企业,政府,学校和慈善机构等的企业应用程序。它与传统风格的单片体系结构完全相反,它专注于单个单元应用程序。
微服务很小,独立且独特。在建筑和维护方面,架构可能很复杂。微服务相互通信,利用同步协议,HTTP / REST或异步协议服务于业务目标。HTTP / REST或AMQP是协作服务的示例,这些协作服务实现彼此相关的功能以尽可能高效地工作。
微服务可能听起来很合理,但是使用所需的各种工具构建微服务应用程序并不容易。这不仅仅是开发软件,测试和部署软件的传统问题。需要进行持续监控,当出现故障时,需要快速解决。
请记住,没有工具可以为微服务提供任何单一答案。相反,根据Mike Amundsen概述的微服务架构的三大支柱构建您的系统。阿蒙森认为,组织设计有三个组成部分,它们确立了微服务成功的关键:沟通,团队和创新。在所有支柱中,沟通无疑是最不可或缺的。
有许多工具可用于支持构建微服务架构,大多数工具将免费执行特定任务,但许多工具也支持升级额外的功能和服务。
API管理和测试
1. API Fortress
作为API测试和健康工具,API Fortress自动执行企业API的功能测试,运行状况监控和负载测试。它的设计实际上是无代码的,完全基于现代API架构实践和模式构建。
2. Postman
Postman是个人开发人员和团队的API开发套件,可让您轻松运行UI驱动的API测试。由于Postman是一个功能强大的HTTP客户端,RESTful API探索变得轻而易举。用户可以快速将简单和复杂的HTTP请求组合在一起,以便立即测试,开发和记录API。
3. Tyk
Tyk是一款开箱即用的开源API管理平台,具有快速,可扩展和现代的特点。 无论您是需要安装内部部署,还是作为云服务,或者您更喜欢使用两者的混合体,Tyk都是多功能的。使用Tyk,您可以在最低的总拥有成本之上获得高可用性和低延迟。
通信
4. RabbitMQ
RabbitMQ可帮助您利用模式在您的微服务之间进行通信,以扩展应用程序并解决大多数分布式系统的问题。在微服务环境或任何其他分布式系统中使用RabbitMQ连接竞争微服务。您还可以使用该工具在服务之间交换事件。
5. Amazon Simple Queue Service (SQS)
Amazon SQS提供强大,灵活和可靠的微服务通信。如果选择发布 - 订阅微服务的通信模型,像Amazon SQS这样的消息队列服务可以解决几个开发人员问题。除了更好的安全性之外,队列还通过提供存储待处理消息的可靠位置来增强消息传递。
6. Apache Kafka
消息排队在微服务架构中是必要的,以处理所有微服务和微服务 - 外部源通信。这是用于密集数据处理还是API调用等.Apache Kafka是一个具有高容错性和弹性的分布式流处理平台。
7. Google Cloud Pub / Sub
Google Cloud Pub / Sub是一款完全托管的实时消息服务,可让您在微服务之间发送和接收消息。将您的应用程序与Google Cloud Pub / Sub集成将有助于处理您必须接收的所有异步请求,并努力减少用户等待响应的时间。
监控
8. Logstash
您已经部署了微服务,现在您必须对其进行监控。然而,许多元素都会进入监控阶 例如,特定的微服务是否响应良好或需要调整?其他系统部件是否正常工作,例如数据库?您需要检查日志并执行此操作,Logstash是一个很好的工具。它是一个开源平台,您可以在其中集中,存储和转换数据。
9. Graylog
将Logstash与Graylog结合使用作为集中式服务器。它使自己易于使用,交互式和快速。用户可以使用系统轻松浏览数据。它具有可扩展性,可根据开发的需求随用户的业务增长而设计。Graylog不是免费的,但价格实惠。
Kube 开发
10. Kubernetes
虽然Kubernetes肯定属于容器编排,但在微服务领域,它也应该得到一个部分。Kubernetes已成为最佳部署实践的黄金标准。在容器调度,负载平衡,服务发现等方面,Kubernetes特别强大。
对于使用Kubernetes构建的微服务开发人员,这里有一些其他开源工具可用。(别忘了在这里查看我们更全面的Kubernetes工具列表。)
11. Telepresence
远程呈现是Kubernetes的快速本地开发。等待容器部署可能会加剧。通过远程呈现,可以使用混合模型。因此,您的服务编码在您的笔记本电脑上本地完成,同时通过双向代理连接Kubernetes中的服务。不推荐用于生产,但非常适合开发。
12. Istio
Istio支持Kubernetes上的服务部署。通过Istio的服务网格技术为微服务通信增加可靠性,安全性和可管理性。服务网格技术允许您改善应用程序和微服务之间的关系和交互。
13. Minikube
Minikube是一个方便的开源工具,可让您在笔记本电脑上运行Kubernetes而无需WiFi。例如,当您在飞机上并且需要编码时,这会派上用场,但您没有WiFi。
编排
14. Conductor
Conductor是Netflix的微服务编排引擎,是Netflix OSS生态系统的一部分。指挥在云中运行并实现流协调器以通过微服务执行任务。它还有助于控制和可视化微服务之间的所有交互。
编程语言
15. Elixir
使用Elixir扩展您的编程曲目; 一种并发的,功能性的,通用的编程语言,与Erlang VM(也称为BEAM)上看到的字节码一起工作。
16. Spring Boot
使用Spring Boot框架简化基于REST的微服务的创建,只需几行代码即可完成。您可以使用其中一个可用的Spring Boot示例或Spring Initializr 快速轻松地开始使用。
工具包
17. fabric8
作为开源平台即服务工具,fabric8帮助开发人员通过git提供配置管理系统,处理IP地址复杂性和端口映射,并能够对服务执行负载平衡。Fabric8还提供可扩展性和高可用性。
18. Seneca
通过Seneca(Node.js的微服务工具包)轻松构建基于消息的微服务流程。使用此工具包,您可以编写干净,有组织的代码,并轻松地将应用程序的业务逻辑系统化。
19. Google Cloud Functions
Google Cloud Platform的云功能(BETA)轻量级,无需服务器,易于部署和维护。该控制台为开发人员通过事件驱动架构构建解耦微服务应用程序提供了真正的好处。旋转容器并按每次使用成本付费。此外,通过一些Google Compute的API将Cloud Functions链接到其他产品。
建筑框架
20. goa
Goa提供了一个框架,使用设计优先的方法在Golang编程语言中构建REST API和微服务。使用goa,开发人员可以设计API,然后生成其他所有内容; 从JSON文档到命令行应用程序和JavaScript库等。所有goadesign服务都在Google Cloud Platform之上运行。
21. Kong
Kong可以在多个操作环境中安装,它利用大量的读取 - 部署插件来帮助开发和部署微服务。使用Kong,您可以利用微服务和容器设计模式快速构建以API为中心的应用程序。
无服务器工具
无服务器技术或功能即服务是微服务的重要组成部分。它优化了将事物分解为最小功能的方法。
22. Claudia
开始使用Claudia的 Lambda微服务,专注于业务而不是处理AWS部署。Claudia负责AWS Lambda和API Gateway的部署。Claudia还可以自动执行容易出错的部署和配置任务,直接开箱即用。除此之外,它还包含增强工具,如Claudia API Builder和Claudia Bot Builder。
23. Apache Openwhisk
除了作为基于事件的编程服务之外,Apache Openwhisk还是一个易于扩展的无服务器计算平台,支持开发人员创建,测试和连接其他人的操作以及帮助调试。通过Mac,Windows或Linux上的Docker安装使用OpenWhisk。
24. Serverless
这个工具正如它的名字; 它是一个控制台,它将FaaS /无服务器技术与其他云服务相结合,帮助开发人员构建复杂的系统。Serverless还提供可扩展性,集成安全性和改进的可操作性。
25. Kubeless
Kubeless是一个Kubernetes本机无服务器框架,允许您部署少量代码,而无需担心底层基础架构管道。Kubeless了解Kubernetes的开箱即用资源,还提供自动扩展,API路由,监控和故障排除。Kubeless完全依赖于K8s原语,因此Kubernetes用户也可以使用原生K8s API服务器和API网关。
26. IronFunctions
IronFunctions是一个开源的无服务器平台或FaaS平台,您可以在任何地方运行。IronFunctions是在Golang上编写的,并且真正支持任何语言的函数。IronFunctions的主要优点是它支持AWS Lambda格式。直接从Lambda导入函数并在任何地方运行它们。
27. AWS Lambda
AWS Lambda为您的微服务构建提供基础设施较少的服务器,并且您需要按使用费率付费。Lambda还可以与AWS API Gateway结合使用,后者允许您托管REST或API服务。这两者一起允许您的API提供用户提出的任何请求。
28. OpenFaaS
一个开源无服务器软件程序,承诺“无服务器功能变得简单。” OpenFaaS可帮助您将任何进程或容器打包为Windows或Linux的无服务器功能。与任何无服务器技术一样,其好处是开发人员可以专注于提供业务价值,而不是处理底层应用程序结构的日常管理。
29. Microsoft Azure Functions
事件驱动的按需计算功能,可增强Azure现有的应用程序功能。基于比例和按需,您只需为您使用的资源付费。Azure Functions帮助开发人员连接到数据源/消息传递解决方案,从而可以轻松处理和响应事件。开发人员还可以利用Azure功能构建基于HTTP的API端点。
30+的团队建设工具
开发团队经常需要对微服务进行定期处理。团队之间需要良好的沟通和合作才能实现真正的团队自治。应用程序生命周期的所有部分都需要灵活性和责任感。有许多工具可用,例如视频环聊,聊天工具,项目管理应用程序和维基,这些工具有利于微服务开发人员遵守前面提到的支柱。在这里全面概述太多了。不过,可以给你一个思路,Caylent团队选择了Slack,Trello,Google Cloud,Postman和Google Meet的工作组合来满足我们的开发和沟通需求。
新的开源工具总是在软件世界中引入,所以要留意它们。该资源是开发微服务系统最有用的工具的一个很好的起点,包括使用Kubernetes。然而,开源的本质意味着不久之后将会出现在现场。
原文标题《29 Top Tools for Building Microservices on All Levels》
作者:Stefan Thorpe
译者:February
本文为译文,不代表云加社区观点,更多详情请查看原文链接
推荐阅读:
关注云加社区,回复 3 加读者群
更完整的学习资料,请点击阅读原文