当前位置:首页 > 数码 > 从微服务到微内核-从-揭开分布式系统架构的奥秘-DDD到-SOA (微服务发展)

从微服务到微内核-从-揭开分布式系统架构的奥秘-DDD到-SOA (微服务发展)

admin7个月前 (04-14)数码64

DDD、SOA、微服务和微内核是软件架构中常见的概念。虽然它们经常被一起讨论,但它们实际上属于不同的维度。

DDD

领域驱动设计(DDD)是一种设计思想,强调根据业务领域来驱动系统的设计。DDD的核心原则是将系统分解成一系列的限界上下文,每个限界上下文代表一个特定的业务领域。

DDD与面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)密切相关。OOA和OOD关注于对象和类,而DDD则更关注业务领域和限界上下文。

SOA

面向服务架构(SOA)是一种架构风格,强调将系统分解成一系列松散耦合、自治的服务。SOA的主要目标是提高系统可重用性和可组合性。

SOA服务的特点包括:

  • 松散耦合
  • 自治
  • 可重用性
  • 可组合性

微服务

微服务是一种架构风格,强调将系统分解成一系列小、独立、自治的服务。微服务通常比SOA服务更小、更专注,并且通过轻量级通信协议进行通信。

微服务的主要目标是提高系统的敏捷性、可扩展性和可维护性。

微内核

微内核是一种架构风格,强调将系统分解成一个核心内核和一系列插件模块。核心内核提供基本服务,例如进程管理和通信,而插件模块提供特定的功能。

微内核的主要目标是提高系统的可扩展性和可维护性。由于核心内核与插件模块是分离的,因此可以轻松地添加、删除或更新插件模块,而无需影响核心内核。

四层架构和六边形架构

四层架构和六边形架构是DDD中常见的架构模式。

四层架构

四层架构将系统分为四层:用户接口层、应用层、领域层和基础层。每一层都有特定的职责,并且从下往上依赖。

四层架构的主要目标是解耦系统,提高可维护性和可重用性。

六边形架构

六边形架构将系统分为六个边形:端口、适配器、驱动程序、域、应用程序和基础设施。端口和适配器位于系统的边缘,负责与外部世界通信。驱动程序位于域和应用程序之间,负责将应用程序数据转换为域数据。

六边形架构的主要目标是提高系统的可扩展性、可维护性和可测试性。

比较

下表比较了DDD、SOA、微服务和微内核: | 特征 | DDD | SOA | 微服务 | 微内核 | |---|---|---|---|---| | 关注点 | 领域建模 | 服务化 | 分解粒度 | 可扩展性 | | 主要目标 | 提高业务理解 | 提高可重用性 | 提高敏捷性 | 提高可扩展性 | | 架构模式 | 四层架构、六边形架构 | SOA服务 | 微服务 | 插件化 | | 适合场景 | 业务复杂性高、变化频繁 | 功能复用需求高 | 系统规模庞大、变化频繁 | 系统需要可扩展性、可维护性 |

结论

DDD、SOA、微服务和微内核是不同的软件架构概念,用于解决不同的问题。DDD专注于业务建模,而SOA、微服务和微内核专注于系统架构。在选择合适的架构风格时,重要的是考虑系统的具体需求和限制。

分布式架构与微服务有啥区别

微架构也是SOA的一种,只是其component更小更多而已。 Spring等框架中,常有依赖注入,Ioc等技术,通过配置文件,决定API调用,一个不是很恰当的比喻,把这些API分开,包装成Service,放在网络上,每个有自己的process,通过与语言无关的协议通讯,类似Rest之类的,这就成了微架构。 据说,好处是容易deploy,更灵活,解耦;坏处是网络限制性能,不易确定系统state等等。 个人感觉,微架构只是把复杂性推到了其他的地方,过分强调解耦,可能造成不必要的细化,导致系统更为复杂,难以维护,不是很看好这种思路。

SOA和微服务架构的区别

SOA与微服务架构,在架构划分、技术平台选择等方面,均存在一定的区别。

一、架构划分不同

1、SOA强调按水平架构划分为:前、后端、数据库、测试等;

2、微服务强调按垂直架构划分,按业务能力划分,每个服务完成一种特定的功能,服务即产品。

二、技术平台选择不同

1、SOA应用倾向于使用统一的技术平台来解决所有问题;

2、微服务可以针对不同业务特征选择不同技术平台,去中心统一化,发挥各种技术平台的特长。

三、系统间边界处理机制不同

1、SOA架构强调的是异构系统之间的通信和解耦合;(一种粗粒度、松耦合的服务架构);

2、微服务架构强调的是系统按业务边界做细粒度的拆分和部署。

四、主要目标不同

1、SOA架构,主要目标是确保应用能够交互操作;

2、微服务架构,主要目标是实现新功能、并可以快速拓展开发团队。

微服务发展

参考资料

网络百科-SOA

网络百科-微服务架构

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: DDD

“从微服务到微内核-从-揭开分布式系统架构的奥秘-DDD到-SOA (微服务发展)” 的相关文章

内存Join——一种经过内存映射技术优化海量数据Join性能的方法-DDD死党 (内存条怎么选)

内存Join——一种经过内存映射技术优化海量数据Join性能的方法-DDD死党 (内存条怎么选)

1.为什么"内存Join"是个不可绕过的话题 首先,咱们先繁难解释下,什么是内存Join。 置信大家对相关数据库的join语句必需不生疏,其作用就是经过关联相关从多个表中查问数据,关联...

b-DDD-必备架构-b (不对等的爱情)

b-DDD-必备架构-b (不对等的爱情)

架构是钻研分和合的艺术,经过分别关注点将系统拆分为多个局部,而后在准绳和规定的解放下对组件启动装配,构成高内聚的构件;再依据需求对多个构件启动关联,构成低耦合的衔接,最终构建高内聚低耦合的软件系统...

打造强大应用的黄金组合-CQRS-DDD-与 (打造强大应用场景)

打造强大应用的黄金组合-CQRS-DDD-与 (打造强大应用场景)

在日常工作中,我们经常会遇到代码组织不合理的现象,导致系统复杂性不断叠加,陷入难以自拔的困境。 一、什么是CQRS? CQRS(Command Query Responsibility...

CQRS-与-DDD-软件开发的黄金组合

CQRS-与-DDD-软件开发的黄金组合

引言 随着数据密集型应用程序对处理和存储能力要求的不断提升,单一的工具已无法满足这些广泛的需求。为了应对这种挑战,业界逐渐采用了一种新的方法,将总体任务拆分成一系列由单个工具高效完成的较小任务,...