推理、部署与算力3014 字

京东物流DDD微服务架构落地实践

·全库 416 / 611

《京东物流DDD微服务架构落地实践》共 0.3 万字,通篇围绕 架构、微服务、场景、落地 展开,归在「推理、部署与算力」这一层。

覆盖架构微服务场景落地供应链上下文

适合要把模型跑起来,还得跑得起的人

目录骨架(5 节)
  1. 第一个难点, 微服务的服务治理和流量治理。
  2. 第二个难点, 微服务拆分的架构思想
  3. a. 白马是马。
  4. b. 服务治理
  5. c. 十二要素
目录 · 6 节

分享内容

  1. 微服务架构设计要素
  2. 微服务的服务治理和流量治理
  3. 微服务拆分的架构思想
  4. 京东SAAS 云平台 DDD架构方案

一. 前言

现在对于一个后端开发工程师来说,微服务,DDD 都是挂在嘴边的东西,感觉大家接触到多,也了解的多。但我个人的感受是,对微服务架构的理解就像我小时候读三国,在不同年龄读的时候感触都不一样。微服务对于开发人员来说亦是如此,一千个人有一千种解读,而随着每个人自己的业务经验和架构能力的提升,每个人看到的风景也会不一样的。今天我们分享一下基于微服务架构实践后的心路历程。

二. 首先,我们需要思考一下: 什么是微服务架构?

image.png

在我看来,微服务架构并没有一个准确的定义,但他会有很多特征,通过描述他的特征用来把控它是什么。

a. 白马是马。

这是一个哲学命题,表明个别和一般的关系。我认为,任何的技术和架构都不是凭空出现的,一定是发展而来,而微服务架构的前身就是 SOA,面向服务的编程。SOA 是一种架构设计模式,也是一种思想。所以微服务理应继承了 SOA 的这种架构思想,所以我认为微服务就是那个白马,他将一个复杂系统,以业务的视角,分成独立的模块,每个模块都有提供服务的能力,基于这些能力,去构建一个复杂的系统架构,在此基础上,再演化出去中心化,和分布式思想。

b. 服务治理

以上说的是思想层级,在战术层级,微服务架构的核心诉求和能力是服务治理,包括服务寻址,流量管理,可观测性等。

c. 十二要素

Heroku 创始人 Adam Wiggins 提出的微服务十二要素,下面,我贴出我对微服务十二要素的解读:

image.png

这十二要素可以说是微服务架构的方法论,有了思想,方法论和战术维度,我觉得就可以完整的描绘出一个微服务架构的全景图。然后,我将我理解的微服务架构总结成一句话:

微服务架构是 : 一种去中心化的分布式服务架构,架构拥有服务寻址,故障容错,流量调度,控制访问和可观测性的服务治理能力,从而实现服务的隔离性,可移植性,可扩展性,稳定性。

三. 其次,我们的问题焦点:微服务架构的难点是什么?

我认为,微服务的两个核心点正是他的难点:

第一个难点, 微服务的服务治理和流量治理。

对于这个难点,现阶段已经有了很好的解决,因为服务治理和流量治理是去业务场景化的,所以有很多前人通过他们的努力,以及贡献的开源框架,让我们可以直接可以拿来落地的,并且可以做到很好的兼容。下图是一个比较标准的微服务治理架构图:

image.png

第二个难点, 微服务拆分的架构思想

如何基于 DDD 方法论落地服务的分解。该处设计很多核心能力,包括子域划分,限界上下文定义,实体,聚合根的抽象,基于领域事件的事件驱动设计,除此之外,还有工厂模式,策略等等设计模式的应用。

这第二个难点是很难做到直接的迁移,因为我们面对的业务场景千差万别,前人的经验只能总结成思想来指导我们,但具体的落地就会考验每个架构师自己的过往经验和理解。 就像一为画家,对与同一片风景的理解不同,画出的画面也是不同的,所以,就会出现有的人是梵高,有的人是毕加索。而对于现阶段来说,可能只是一个刚入门的素描者,不过我愿意在此抛砖引玉,介绍一下采灵通项目对于微服务落地的经验,供大家做一个简单参考。

四. 采灵通系统 -- 微服务架构落地实践

采灵通业务是一个相对复杂的系统,带领了 20 人的开发团队总共历时 5 个月,完成从 0 到 1 的设计,开发和上线。该系统基本涵盖了一个 ToB 全供应链数字化相关的全场景业务。我将通过 业务场景分析, 技术架构解析,和服务落地几个方面对该系统的落地实践进行解读。

  1. 业务场景解析

理解 DDD 的前提是先要理解业务场景,业务场景是采灵通 SAAS 系统,在此简单做一个业务介绍:

采灵通是一个标准的提供 B 商城触达的,同时解决企业数字化采购供应链的 SAAS 平台,核心能力包括多供应商协同,订单管理,商品管理,客户管理,及 B 商城的搭建和管理,具体如下图所示:

image.png

  1. 技术架构解析

基于以上业务场景,我们构建出我们的技术架构方案,如下图所示:

image.png

在技术架构上,整体分为四层,自上而下为: 业务前端层, 网关层, 业务服务层,技术底座层。

  1. 业务前端层:前端根于业务场景,有多个触达端,最主要的端有供应商管理端,伙伴管理端,PC 商城端,H5 商城端, 页面装修系统。前端封装有统一的组件库,保证了整个系统的前端交互风格一致性。
  2. 网关层:入口网关为 nginx 反向代理,主要功能是对不同域名的 SSL 解析和路径映射,部分前端静态资源的直接映射。入口网关下为业务网关,包括 COP 网关和通用业务域网关。

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求