从微服务到微内核-从-揭开分布式系统架构的奥秘-DDD到-SOA (微服务发展)
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、微服务架构,主要目标是实现新功能、并可以快速拓展开发团队。
![微服务发展](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
参考资料
网络百科-SOA
网络百科-微服务架构
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。