5种构建微服务架构的最佳技术

麦芽maiya · · 1466 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

“要有效地实现目标,您必须将它们分解成小任务,然后将大部分时间花在摆在面前的任务上,而不是被庞大目标的庞大淹没。” ―Sunday Adelaja,

这可能不是微服务工作的意识形态,但这肯定是我们在微服务架构上开发应用程序时遵循的原则。

随着企业致力于构建复杂的大型应用程序,这些应用程序可以作为较小的服务的集合进行分离和处理,因此微服务在市场上越来越受欢迎。越来越多的人希望将其传统的单片系统重新设计为一系列独立的微服务。

您想到的自然问题是,在为下一个项目开发微服务时,哪种语言最适合使用?


您可以根据最能满足您的微服务目的使用各种技术。让我们看一下具有这些功能和库的某些编程语言,它们将帮助您完成工作。但是首先,让我们开始了解微服务。

什么是微服务架构?

微服务架构是一种开发方法,您可以将单个应用程序分成一系列较小的服务,每个服务在其自己的进程中执行并与轻量级机制交互。微服务是围绕业务功能开发的,业务功能可通过自动化部署机制独立部署。微服务架构几乎不需要管理这些服务,它们以不同的编程语言构建并且采用不同的数据存储技术。

迁移到微服务架构的原因


在单片架构中,对于大型应用程序,很难理解其复杂性,有时很难处理代码。

应用程序需要大量的手动测试,以了解变更的影响。

即使只是很小的更改,整个应用程序也需要重新部署。

具有单片架构的繁重应用程序可能会减慢启动时间。

微服务的好处

简化流程采用-通过微服务架构,新技术和流程采用变得简单。

小型模块–由于应用程序分成较小的块,因此开发人员可以轻松开发和维护。

独立扩展–微服务中的每个模块都可以通过以下方式 独立扩展

X轴缩放–通过克隆更多内存或CPU

Z轴缩放-使用分片按大小

DURS-微服务架构中的每个服务都可以独立为DURS(已部署,已更新,已替换和可扩展)

不受影响-即使单个模块的故障也不会影响应用程序的其余部分。

微服务保证了开发团队的自主权(加快上市速度),更好的故障隔离(可靠性),可重用性和可伸缩性。

选择微服务技术的标准

借助微服务,您可以构建可靠的平台来扩展业务,同时利用语言的多样性。当然,您可以为不同的服务使用不同的技术或语言,但这并不意味着它有效。微服务架构带有大量的操作开销;因此,在此之上添加多样化的编程语言可以成倍增加性能开销。为了减少这种情况,您应该通过根据业务需求选择编程语言来标准化微服务技术堆栈。以下是评估微服务开发编程语言的标准:

高度可观察

支持自动化

消费者至上的方法

独立部署

围绕业务领域建模

组件分散

支持持续集成

微服务的最佳语言

可以使用大量的框架,版本和工具来实现微服务。Java,Python,C ++,Node JS和.Net很少。让我们详细探讨支持微服务开发的语言:

1. Java

易于理解的注释语法是使Java成为开发微服务的出色编程语言的关键因素。当由微服务框架提供支持时,此功能使Java微服务的开发更加容易。它在可读性方面提供了更多价值,尤其是在使用复杂系统时。Java包含许多支持开发和部署Java微服务的意见。它提供了一个用户界面,模型组件以及与后端资源的连接,所有这些都在单个,隔离且独立部署的应用程序的范围内。

此外,许多Java EE标准都非常适合微服务应用程序,例如:

用于API的JAX-RS

JPA用于数据处理

CDI用于依赖项注入和生命周期管理

此外,诸如Consul,Netflix Eureka或Amalgam8之类的服务发现解决方案可以轻松地与Java Microservices连接。

有几种用于开发微服务架构的框架。一些Java微服务框架如下:

Spring Boot –该框架可在面向方面编程,控制反转等多种语言之上运行

Dropwizard –这个Java微服务框架将稳定和成熟的Java库组装到一个简单轻巧的程序包中

Restlet –它支持开发人员构建更好的Web API,以跟踪REST体系结构模型

Spark –最好的Java微服务框架之一,支持轻松地用Java 8和Kotlin创建Web应用程序

2.Golang

如果您想增强现有项目,那么Golang可能是微服务开发的不错选择。Golang,也称为Go,在微服务架构方面以其并发性和API支持而广受欢迎。有了Golang的并发可能性,您可以期望提高各种机器和核心的生产率。它包括用于开发Web服务的强大标准。它专门用于创建大型和复杂的应用程序。Go为微服务开发提供了两个令人印象深刻的框架:

GoMicro –这是一个RPC框架,具有负载平衡,服务器程序包,PRC客户端和消息编码等优点。

Go Kit – GoMirco的Go Kit的主要区别在于需要将其导入二进制软件包。而且,它对于显式依赖项,域驱动的设计和声明性方面的构成是高级的。

除了简单的语法外,Go微服务体系结构还提供了出色的测试支持,因为它使编写健壮的测试以及将其完美地嵌入到工作流中变得容易。

3. Python

Python是一种高级编程语言,为与各种技术的集成提供积极支持。与其他框架和语言相比,Python中的原型制作更快,更轻松。它包括强大的替代品,例如Django。微服务Python确保与ASP和PHP等传统语言的兼容性,从而允许您创建Web服务前端来托管微服务。

具有所有这些优点,微服务Python被认为比其他语言更具优势。实现微服务Python的开发人员使用RESTful API方法-一种利用Web协议和软件远程操纵对象的综合方法。使用此技术,由于现在已分解为组件,因此监视应用程序变得更加容易。在您的Web应用程序开发中,有多种Python微服务框架可供选择。其中一些如下:

Flask –基于Jinja2和Werkzeug的最受欢迎的Python Micro框架

Falcom –创建智能代理,云API和应用程序后端

Bottle –简单,轻巧和快速的WSGI微框架

Nameko – Python Microservices框架中的佼佼者,可让开发人员专注于应用程序逻辑

CherryPy –成熟的Python面向对象的Web框架

4. Node JS

在过去的几年中,Node JS成为了希望使用微服务的企业和初创企业的首选平台。Node JS是使用V8运行时构建的;因此,微服务Node JS对于输入输出(IO)绑定的任务将变得非常快。通常,微服务节点JS是使用CPU约束代码或IO约束代码开发的。受CPU约束的程序需要进行大量密集的计算。每次运行IO调用时,Node JS都不会阻塞主线程,而是提交要由内部IO守护程序线程执行的任务。因此,就IO绑定任务而言,微服务Node JS受到欢迎。

GoDaddy的高级软件工程师Stephen Commisso指出,微服务和Node JS的正确利用可以仅用10%的硬件来帮助处理相同的负载。

高度创新的企业接受微服务Node JS是实现提高生产率,高性能,满意的开发人员和降低成本的绝佳组合。

5. .Net

ASP.Net,用于Web开发的.Net框架使构建成为微服务的API变得很容易。它包括使用Docker容器构建和部署微服务的内置支持。.Net附带的API可以简单地从您开发的任何应用程序(包括台式机,移动设备,Web,游戏等)中使用微服务。如果您有一个应用程序,则可以开始采用.Net微服务,而无需完全修改该应用程序。.Net Docker映像的初始设置已经完成,并且可以在Docker Hub上使用,从而帮助您仅专注于构建微服务。

.Net微服务体系结构允许每个服务之间的技术编译。这样,您可以将.Net用于应用程序的特定部分,而无需在任何地方实现。您可以将.Net微服务与用Java,Node JS或任何其他语言编写的应用程序混合使用。这允许针对新的微服务逐步迁移到.Net核心技术,这些新微服务可以与其他微服务结合以及与其他技术构建的服务结合使用。同样,.Net微服务可以在所有领先的云平台上运行。

微服务的未来使我们更接近无服务器架构。特别是,仅支付使用的计算量就可以节省成本的承诺更具吸引力。微服务是一个广泛的概念,适用于更精细和模块化级别的客户流失应用,产品或解决方案。请记住,不建议从头开始微服务架构,因为在开始时很难定义每个服务的边界。没有更好的方法为您的微服务选择完美的技术。每个技术决定都取决于您将用来开发应用程序其他部分的工具。它还取决于您的开发团队的最新知识。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:麦芽maiya

查看原文:5种构建微服务架构的最佳技术

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1466 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传