DDD学习与感悟——向屎山冲锋 | 京东云技术团队

2023-12-25
阅读 8 分钟
127
软件系统是通过软件开发来解决某一个业务领域或问题单元而产生的一个交付物。而通过软件设计可以帮助我们开发出更加健壮的软件系统。因此,软件设计是从业务领域到软件开发之间的桥梁。而DDD是软件设计中的其中一种思想,旨在提供一种大型复杂软件的设计思路和规范。通过DDD思想可以让我们的业务架构、系统架构、部署架...
封面图

Batrix企业能力库之物流交易域能力建设实践 | 京东物流技术团队

2023-11-29
阅读 29 分钟
137
Batrix企业能力库,是京东物流战略级项目-技术中台架构升级项目的基础底座。致力于建立企业级业务复用能力平台,依托能力复用业务框架Batrix,通过通用能力/扩展能力的定义及复用,灵活支持业务差异化场景的快速能力编排组装,从而通过技术驱动的方式助力业务整体交付吞吐率。
封面图

如何做好架构设计,架构设计有章可循吗? | 京东云技术团队

2023-11-22
阅读 6 分钟
138
在我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非常不合理,完全影响我们正常的架构设计!对于非功能性的需求,我们是否可以得过且过,不去重视?
封面图

promise时效架构升级方案的实施及落地 | 京东物流技术团队

2023-11-16
阅读 4 分钟
266
promise时效包含两个子系统:内核时效计算系统(系统核心是时效计算)和组件化时效系统(系统核心是复杂业务处理以及多种时效业务聚合,承接结算下单黄金流程流量),后者依赖前者,分别由两组技术团队支持;因为有些业务的渗透造成两个系统的边界越来越不清晰;有些需求从PRD评审到项目上线,需要两组研发全程参与,耗...
封面图

从混乱到优雅:基于DDD的六边形架构的代码翻新指南 | 京东物流技术团队

2023-11-13
阅读 4 分钟
149
前言趁着双十一备战封板,终于又有一些时间可以梳理一下最近的心得。最近这半年跟同事讨论比较多的是分层架构,然后就会遇到两个触及灵魂的问题,一个是如何做好分层架构,二是DDD在架构层面该如何落地。为了说好分层,我们需要了解架构的意义。良好的架构是为了保证一下两点:治理应用复杂度,降低系统熵值;从随心所欲...
封面图

同城售后系统退款业务重构心得 | 京东云技术团队

2023-11-02
阅读 4 分钟
293
一、重构背景1.1、退款到家、小时购、天选退款有2套结构,代码逻辑混乱;其中小时购、天选部分售后单是和平生pop交互退款,部分是和售后中台交互退款;并且兼容3套逻辑;痛点:代码繁重,缺乏合理性的设计,后续迭代开发以及维护成本高,同时增加了系统的风险和不稳定性1.2、金额计算到家、小时购两套独立的逻辑结构计算...
封面图

代码的艺术 - Writing Code Like a Pianist | 京东云技术团队

2023-10-18
阅读 6 分钟
171
如何评定一个系统的质量?什么样的系统或者软件可以称之为高质量?可以从三个角度来看,一是架构设计,例如技术选型、分布式系统中的数据一致性考虑等,二是项目管理,无论是敏捷开发还是瀑布式开发,都应当对技术负债进行清理,对代码进行重构等,最后离不开的是代码质量,代码质量的高低直接影响系统的可维护性和可扩...
封面图

交易履约之结算平台实践 | 京东云技术团队

2023-10-10
阅读 5 分钟
370
京东科技业务在快速发展的同时,产生了众多线上化资金结算的需求。传统的线下资金结算模式有着人力成本高、耗时长、多方沟通协调成本高、结算准确率低等固有缺点,且无法满足“风法财审”对于资金流程的管控要求,在此背景下金道结算平台孕育而生。本文从系统建设的背景、设计细节、已支撑案例及适用业务场景多个层面进行...
封面图

交易日均千万订单的存储架构设计与实践 | 京东物流技术团队

2023-09-25
阅读 3 分钟
548
服务业务线:快递、快运、中小件、大件、冷链、国际、B2B合同物流、CLPS、京喜、三入三出(采购入、退货入、调拨入、销售出、退供出、调拨出)等

快速理解DDD领域驱动设计架构思想-基础篇 | 京东物流技术团队

2023-09-06
阅读 5 分钟
651
本文与大家一起学习并介绍领域驱动设计(Domain Drive Design) 简称DDD,以及为什么我们需要领域驱动设计,它有哪些优缺点,尽量用一些通俗易懂文字来描述讲解领域驱动设计,本篇并不会从深层大论述讲解落地实现,这些大家可以在了解入门后再去深层次学习探讨或在后续进阶和高级篇了解,希望通过本文介绍,可以让大家快速...
封面图

库存预占架构升级方案设计-交易库存中心 | 京东物流技术团队

2023-08-23
阅读 6 分钟
585
伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。近三年数据可以看出:
封面图

京东小程序数据中心架构设计与最佳实践 | 京东云技术团队

2023-08-22
阅读 7 分钟
1.6k
京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提供合适的服务和产品,让技术开放成为品牌的新机会。“Once Build, Run Anywhere”,一个小程序可以在多个APP运行,引擎层抹平差异,一套代码,相同页面,云端下发,...
封面图

系统架构合理性的思考 | 京东云技术团队

2023-08-21
阅读 3 分钟
425
最近牵头在梳理部门的系统架构合理性,开始工作之前,我首先想到的是如何定义架构合理性?从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。基于以上的定义可以从以下三个方面来梳理评估:1、系统的上下文清晰:明确的知道和周围系统的调用关系,数据同步机制;2、应用架构设计...
封面图

DDD项目落地之充血模型实践 | 京东云技术团队

2023-08-07
阅读 3 分钟
235
背景:充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率、提升可维护性;1、DDD项目落地整体调用关系调用关系图中的Entity为实体,从进入领域服务(Domin)时开始使用,直到最后返回。2、实体设计充血模型是实体设计的一种方法,简单来说,就是一种带有具体行为方法和聚合...
封面图

【实践篇】最全的【DDD领域建模】小白学习手册(文末附资料) | 京东云技术团队

2023-07-31
阅读 10 分钟
800
DDD领域建模被各个大小厂商提起并应用,而每个人都有自己的理解,本文就是针对小白,系统地讲解DDD到底是什么,解决了什么问题,及一些建议和实践。本文主要是思想的一种碰撞和分享,希望能对朋友们有所启发或帮助。
封面图

DDD架构为什么应该首选六边形架构? | 京东云技术团队

2023-07-18
阅读 3 分钟
321
一、传统分层架构分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合。分层架构分两种:一种是严格分层架构,规定某层只能与直接位于其下方的层发生耦合;另一种是松散分层架构,允许任意上方层与任意下方层发生耦合。下图是一个典型的DDD传统分层架构。[]()以上分层架构中各层都有自己的职责:用户接口层负责...
封面图

架构师日记-到底该如何搭建一个新系统 | 京东云技术团队

2023-07-12
阅读 9 分钟
566
架构设计按照实施过程可分为工程架构,业务架构,部署架构等多个维度,一个好的系统架构标准应该具备可扩展、可维护、可靠性、安全性和高性能等特点。尽管这些特点大家都熟知,但在实际落地时,我们更为迫切的想知道实现这些要求的关键路径,以便在架构设计中融入这些特点。只有这样,才能确保系统能够适应未来的业务增...
封面图

服务端应用多级缓存架构方案 | 京东云技术团队

2023-07-11
阅读 2 分钟
454
可使用分布式缓存来抗,比如redis集群,6主6从,主提供读写,从作为备,不提供读写服务。1台平均抗3w并发,还可以抗住,如果QPS达到100w,通过增加redis集群中的机器数量,可以扩展缓存的容量和并发读写能力。同时,缓存数据对于应用来讲都是共享的,主从架构,实现高可用。
封面图

互联网高可用架构探讨 | 京东云技术团队

2023-07-03
阅读 3 分钟
830
高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表:
封面图

稳,从数据库连接池 testOnBorrow 看架构设计 | 京东云技术团队

2023-06-21
阅读 5 分钟
468
The indication of whether objects will be validated before being borrowed from the pool.
封面图

手把手教你实战TDD | 京东云技术团队

2023-06-14
阅读 24 分钟
612
我们在《手把手教你落地DDD》一文中介绍了领域驱动设计(DDD)的落地实战,本文将对测试驱动开发(TDD)进行探讨,主要内容有:TDD基本理解、TDD常见误区、TDD技术选型,以及案例实战。希望通过本文,读者能够理解掌握TDD并将其应用于实际开发中。
封面图

当“代码农”遇上“码农”:揭秘主干开发的那些事儿 | 京东云技术团队

2023-06-07
阅读 6 分钟
298
前段时期我负责部门内部主干开发落地相关事宜,这个过程中,也真真切切的体会到了多人开发过程中,面对特性分支管理中,大家遇到的一些困扰,尤其面对敏捷迭代的开发方式,合并冲突,集成测试,代码重用等方面,都与高效两个字背离。当然,我在推进主干开发过程中,也遇到了一些问题和坎坷,在这里,集中的做一次分享。
封面图

【实践篇】手把手教你落地DDD | 京东云技术团队

2023-05-29
阅读 8 分钟
934
常见的DDD实现架构有很多种,如经典四层架构、六边形(适配器端口)架构、整洁架构(Clean Architecture)、CQRS架构等。架构无优劣高下之分,只要熟练掌握就都是合适的架构。本文不会逐个去讲解这些架构,感兴趣的读者可以自行去了解。
封面图

手把手教你用代码画架构图 | 京东云技术团队

2023-05-15
阅读 13 分钟
912
作者:京东物流 覃玉杰1. 前言本文将给大家介绍一种简洁明了软件架构可视化模型——C4模型,并手把手教大家如何使用代码绘制出精美的C4架构图。阅读本文之后,读者画的架构图将会是这样的:注:该图例仅作绘图示例使用,不确保其完整性、可行性。2. C4模型2.1 C4模型整体介绍C4是软件架构可视化的一种方案。架构可视化,指...
封面图

京东APP百亿级商品与车关系数据检索实践 | 京东云技术团队

2023-05-08
阅读 5 分钟
405
本文主要讲解了京东百亿级商品车型适配数据存储结构设计以及怎样实现适配接口的高性能查询。通过京东百亿级数据缓存架构设计实践案例,简单剖析了jimdb的位图(bitmap)函数和lua脚本应用在高性能场景。希望通过本文,读者可以对缓存的内部结构知识有一定了解,并且能够以最小的内存使用代价将位图(bitmap)灵活应用到各个...
封面图

浅谈复杂业务系统的架构设计 | 京东云技术团队

2023-04-28
阅读 6 分钟
1.1k
我们经常提到复杂系统,那么到底什么是复杂系统。我们看下维基的定义:复杂系统(英语:complex system),又称复合系统,是指由许多可能相互作用的组成成分所组成的系统。强调了两点:
封面图

关于聚合根,领域事件的那点事---深入浅出理解DDD | 京东云技术团队

2023-04-27
阅读 4 分钟
662
最近有空会跟同事讨论DDD架构的实践落地的情况,但真实情况是,实际中对于领域驱动设计中的实体,值对象,聚合根,领域事件这些战术类的实践落地,每个人理解依然因人而异,大概率是因为这些概念还是有一些抽象,同时有有别于传统的MVC架构开发。

系统认知篇:防腐层、门面模式及适配模式的本质 | 京东云技术团队

2023-04-26
阅读 3 分钟
569
Implement a façade or adapter layer between different subsystems that don't share the same semantics . This layer translates requests that one subsystem makes to the other subsystem. Use this pattern to ensure that an application's design is not limited by dependencies on outside subsystems .
封面图

一种面向后端的微服务低代码平台架构设计

2023-04-20
阅读 6 分钟
949
近期参加公司组织的极客中餐厅训练营,我们所在的小组接到的课题是微服务的低代码平台架构设计。目标是:结合京东业务研发实际情况,针对后端研发人员,设计一个微服务低代码平台,助力更高效低交付业务需求。现已结业,将我在本次项目中沉淀设计出的设计文档整理成文,期待与大家有进一步的碰撞沟通
封面图

软件架构生态化-多角色交付的探索实践

2023-04-19
阅读 3 分钟
539
作为一个技术架构师,不仅仅要紧跟行业技术趋势,还要结合研发团队现状及痛点,探索新的交付方案。在日常中,你是否遇到如下问题 “ 业务需求排期长研发是瓶颈;非研发角色感受不到研发技改提效的变化;引入ISV 团队又担心质量和安全,培训周期长“等等,基于此我们探索了一种新的技术体系及交付方案来解决如上问题。
封面图