模块化结构与微服务

模块化结构与微服务

在这篇文章中,什么是模块化结构?我们将重点介绍模块化结构与单体结构以及模块化结构与微服务架构之间的关系。

在创建应用程序时,我们希望不仅在最终用户端,而且在开发阶段实现最佳的开发过程和性能。我们的架构在这方面发挥着重要作用。

虽然最近微服务架构被提及很多,但您可能已经看到,对于每个项目或团队来说,缺点多于优点。这就是为什么许多公司或团队不想或不能切换到这种架构的原因。对于这个无法迁移到微服务的公司/团队,模块化方法是一种允许利用微服务的一些好处的设计技术。尽管在我工作的公司中有很多微服务架构项目,但使用模块化方法更明智,因为我将在下面我正在处理的项目中提到这些特性。

单片结构简介

如果我们在直接进入模块化结构之前谈论模块化结构,我们会看到普通的整体结构。整体式建设是对单个项目的开发。在单体架构中,我们将逻辑划分为不同的层,以使代码更易于开发和维护。对于小型开发团队开发的中小型项目来说,这是一个近乎完美的架构。

出现了一种模块化方法来解决这种结构中的一些困难。

对于模块化方法中的困难,有一个微服务架构。但是,正如我们上面提到的,没有“这是最好的解决方案”这样的事情。

什么是模块化结构/编程?

在进行比较之前,让我们尝试检查模块化方法。模块化方法/编程是指程序被零碎分解(DDD-bounded context) 独立的,可互换的 这是一种设计技术,允许我们可以把这个结构想象成一个想要使用太阳能的房子。我们可以结合小面板来满足房屋(主要项目)来自太阳的能量,而不是用大面板覆盖整个屋顶。

每个模块都提供了运行所请求作业的一侧并在单独的进程中运行的所有要求。每个模块都有自己的业务逻辑,如果需要,可以是数据库或模式。这样我们可以创建和修改每个模块的层而不影响其他模块。模块必须可以被主项目检测到。

如果我们熟悉单体结构,想利用微服务的一些优势,或者想迁移到微服务架构,那么先迁移到模块化结构可能是一个不错的举措。因为我们提供类似于微服务的模块化。

关于模块的显示方式 领域驱动设计 关于 有界上下文 我们可以利用。有界上下文是代表领域中较小问题粒子的边界;也就是说,这一切都是为了将​​应用程序分解为相互关联的业务部分。这里的 DDD 告诉我们应该如何将工作划分为有界上下文。有关此主题的详细信息,请参阅 Martin Fowler 的。 从这篇文章 你可以受益。通过这种方式,可以频繁更改的部分变得更加独立并自行获得功能。当然 不应该完全独立 .因为当它完全独立时,与其他模块的集成存在问题。在集成时,模块将需要一些信息,但这种需要应该是最少的。您将在设计模式中看到的一个原则 低依赖,高共存 ' ( 松耦合,高内聚 )。

当我们将单体结构与模块化结构进行比较时, 模块化结构给了我们

  • 职位描述对团队来说变得更容易。
  • 它有更好的分布式依赖。复杂性降低。
  • 代码重构会更容易。因为模块是根据工作粒子进行分离的。

模块化结构与微服务架构

想了解微服务架构的人 从这个笔记 他们可以受益。

模块化结构 它绝对没有微服务系统复杂。因为在不同的集群/机器中找不到服务......这就是为什么微服务需要经验丰富的团队和先进的基础设施。复杂度越高,可维护性、可读性和可观察性就越低。

我们的项目 在测试时 微服务架构更容易。因为要测试项目,我们需要以模块化结构运行整个项目。我们只需要运行微服务项目中的相关部分。除了这个问题,我们还可以推断出以下几点; 我们的生产力 将更多地出现在微服务架构中。

模块化结构 技术异质性 我们无法提供。微服务架构适合根据需要使用不同的技术。对于单体/模块化架构中的性能,他们通常将存储过程作为解决方案。

分发应用程序 为方便起见,其模块化/整体结构更容易。因为它是在单个应用程序上处理的。当然,我们是为了方便而查看的。但是如果你需要部署的独立性,当然,微服务架构会更合适。

可扩展性 微服务更有优势。两种架构都具有可扩展性。然而,在模块化/单片结构中只能进行垂直缩放,这是一种不受欢迎的(昂贵的、硬件增强的)解决方案。水平扩展可以在微服务架构中完成。

在微服务架构中,服务间 接触 需要单独的努力。但是在模块化结构中不需要这样的努力,因为所需工作/目标的地址是确定的,不会改变。除了这个问题,还有一些需要在微服务架构上努力的问题,例如序列化和加密。也因为模块之间的通信更容易 调试更容易 .

当然,在耐用性方面,微服务是领先的。因为当遇到错误时,只有相关单元被禁用,应用程序继续。

总之;

如果我们离开上述福利;模块化结构/编程比微服务架构增加了更少的复杂性。如果您是一个小团队,并且希望您的开发过程顺利进行,模​​块化编程将解决您的问题。但如果独立性、持久性和可扩展性是您的首要任务,那么微服务架构会更合适。

通过模块化结构,它允许我们将每个模块提取为微服务。一旦项目足够大,将每个模块提取为微服务以获得所有扩展优势是很有意义的。 因此,模块化结构为我们从单体架构过渡到微服务架构提供了极大的便利。

同样,一切都取决于您的需求和您会找到的解决方案。正如弗雷德布鲁克斯所说“ 没有银弹” .

如果您想更深入地了解模块化结构 本文 我强烈推荐这个系列。

[

模块化单体:入门 - Kamil Grzybek

这篇文章是关于模块化单体架构的系列文章的一部分:1. 模块化单体:入门(this)…

www.kamilgrzybek.com

](http://www.kamilgrzybek.com/design/modular-monolith-primer/)

有关领域驱动设计的更多信息,您可以使用下面的链接。

[

bliki:领域驱动设计

领域驱动设计是一种软件开发方法,将开发集中在对领域模型进行编程......

martinfowler.com

](https://martinfowler.com/bliki/DomainDrivenDesign.html)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/18450/29050608

posted @   哈哈哈来了啊啊啊  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示