首页 > 其他分享 >模块化结构与微服务

模块化结构与微服务

时间:2022-09-06 08:46:16浏览次数:105  
标签:架构 模块化 模块 服务 我们 结构

模块化结构与微服务

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

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

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

单片结构简介

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

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

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

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

在进行比较之前,让我们尝试检查模块化方法。模块化方法/编程是指程序被零碎分解(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

标签:架构,模块化,模块,服务,我们,结构
From: https://www.cnblogs.com/amboke/p/16660383.html

相关文章

  • Day06页面结构分析
    页面结构分析header:标记头部区域的内容(用于页面或页面中的一块区域)footer:标记脚步区域的内容(用于整个页面或页面的一块区域)section:Web页面中的一块独立区域article:独立......
  • C++数据结构课程设计
    C++数据结构课程设计《数据结构》课程设计指导书一、课程设计的目的课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析、解决......
  • CH579M以太网控制板-多台控制板使用网线串联连接并作为TCP客户端和TCP服务器通信(连接
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/CH579_DTU_PBX"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>说明这......
  • 3【Android 12】DisplayArea层级结构
    1DisplayArea类的继承关系DisplayArea类的继承关系,之前已经分析过,这里用一张简单的类图总结:2DisplayArea层级结构的生成既然DisplayContent是作为其代表的屏幕的Disp......
  • CH579M以太网控制板-单台控制板作为TCP客户端和电脑端的TCP服务器通信(连接路由器或者
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/CH579_DTU_PBX"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明......
  • 微服务架构之服务间通信
    在单体架构中,不同模块之间可以通过项目引用的方式直接使用接口调用,单次请求在同一台机器的同一个进程内进行,这种调用方式称为本地调用,但是在微服务架构中,每个服务都是......
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05
    前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而......
  • Windows HTTP 服务器
    记录遇到的一个坑,使用HttpAddUrl方法,绑定的URL只能写成:http://localhost:8080/访问时只能用这个地址访问,127.0.0.1和局域网IP都不行因为需要添加URL保留项:用管理身......
  • 绪论:数据结构与算法
    数据结构数据 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合按照视点不同,把数据结构分为逻辑结构和物理结构 算法算法是解决特定问题求解步骤的描述......
  • 【多服务场景化解决方案】智能家居(UrbanHome)
    ​介绍UrbanHome是一款提供房屋维修服务的移动应用。如有维修需求,用户可通过该应用联系所在城市的管道工,电工,保洁,漆匠,木匠,修理工等,或是搜寻导航附近的维修商店。通过构......