【架构与设计】常见微服务分层架构的区别和落地实践
作者:京东科技 康志兴
前言
从强调内外隔离的六边形架构,逐渐发展衍生出的层层递进、注重领域模型的洋葱架构,再到和DDD完美契合的整洁架构。架构风格的不断演进,其实就是为了适应软件需求越来越复杂的特点。
可以看到,越现代的架构风格越倾向于清晰的职责定位,且让领域模型成为架构的核心。
基于这些架构风格,在软件架构设计过程中又有非常多的架构分层模型。
传统三层架构
传统服务通常使用三层架构:
三层架构特点就是简单,适用于一些无复杂业务场景的小型应用,或者“数据不可变”作为基础原则的DOP(面向数据编程)服务。
但是当业务场景稍微复杂一些、调用层级较多时,可复用性、可维护性就都非常差了,很多代码都耦合在一起,牵一发动全身。
DDD架构
DDD架构可以看做是整洁架构的一种实现,分层职责如下:
优点
如此多的优点自然带来明确的缺点
简单的微服务分层架构
基于六边形架构规范的接口适配原则和防腐理念,同时借鉴了CQRS模式的优点,我们定义了一个简单的微服务分层架构。
分层定义如下:
最佳实践
优点
1. 开发效率
简单的业务开发过程中,相比较书写核心业务逻辑,更多的工作量几乎都是来自处理跨层调用时对象转换和Mapper定义,通过MapStruct和Fluent-Mybatis等组件的使用(也许再加上GitHub Copilot😁),编写一个实体的增删改查接口基本在5分钟内搞定,省下来的时间可以多走读两遍代码或者多写几个分支的测试用例,也算是降本增效了。
2. 服务隔离
通过module隔离不同的领域服务,降低不同领域服务之间的耦合程度。
3. 外部服务防腐
远程调用统一封装在基础设施层中,降低外部变化对系统内部的影响。
缺点
由于对基础设施层的依赖没有通过api包进行隔离,所以基础设施层的对象会直接暴露在领域服务层和门面层。对此可以通过使用ArchUnit组件进行架构防腐。
如果需要定义完善的领域实体充血模型,建议参考DDD架构定义gateway层来进行基础设施层的依赖倒置。
最后
软件工程的方方面面都遵循一个最基本的道理:没有银弹,架构分层模型更是如此,每一种都有各自优缺点,所以请根据不同的业务场景,并遵循简单、可演进这两个重要的架构原则选择合适的架构分层模型即可。
架构不只是工作,更是一门艺术。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes集群调度增强之超容量扩容
作者:京东科技徐宪章 1 什么是超容量扩容 超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容。通常情况下HPA、ClusterAutosacler和超容量扩容同时使用以满足负载敏感度高的业务场景。 超容量扩容功能是通过K8S应用优先级设置和ClusterAutosaler共同作用实现的,通过调整低优先级空载应用的数量,使集群已调度资源保持在较高的状态,当其他高优先级应用因为HPA或者手动调整应用分片数量时,可以通过驱逐空载的方式腾空调度资源却保高优先级应用可以在第一时间调度并创建。当空载应用从被驱逐转变为等到状态时,ClusterAutosaler此时对集群机型扩容,确保下次高优先级应用调度时,有足够的空载应用可以被驱逐。 超容量扩容功能的核心为OverprovisionAutoscaler(超容量扩容)和ClusterAutosaler(集群自动扩容),两者都需要通过不断调整参数配置去适配多重业务需求需求。 超容量扩容功能在一定程度上降低了资源使用饱和度,通过增加成本提高了集群和应用的稳定...
- 下一篇
百度CTO王海峰做客《中国经济大讲堂》:文心一言,读书破万亿
当下,大语言模型热度空前,诸如文心一言、ChatGPT 等已经能够与人对话互动、回答问题、协助创作,逐渐应用于人们的工作和生活,也引发了社会热议。近日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰再次做客 CCTV-2 《中国经济大讲堂》,阐释文心一言这类大语言模型的产品能力、技术原理和产业价值。 文心一言读书破万亿 五大能力业内领先 人工智能时代,IT 技术栈可分为“芯片层、框架层、模型层和应用层”,百度是全球为数不多、进行全栈布局的人工智能公司。从昆仑芯片、飞桨深度学习平台、文心大模型到应用,在技术栈的每一层,都有领先的关键自研技术,实现了层与层反馈,端到端优化,大幅提升效率。文心一言是百度人工智能多年技术积累和产业实践的水到渠成,尤其是飞桨深度学习平台和文心大模型的联合优化,为文心一言提供了坚实的技术支撑。 王海峰强调,文心一言完全是百度自主研发的大语言模型。百度早在 2019 年就发布文心大模型 ERNIE 1.0,经过近 4 年研发和迭代,文心大模型已经形成了产业级知识增强大模型技术体系,包括自然语言处理、视觉、跨模态、生物计算、行业大模型,以及支撑大模型应用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能