松耦合无界零售系统搭建和微服务实战_第1页
松耦合无界零售系统搭建和微服务实战_第2页
松耦合无界零售系统搭建和微服务实战_第3页
松耦合无界零售系统搭建和微服务实战_第4页
松耦合无界零售系统搭建和微服务实战_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

松耦合无界零售系统搭建之

DDD和微服务实战复杂性和规模增长的解决之道DDD设计实践DDD和微服务的关系DDD编码实践7FRESH面临的复杂性挑战线上线下融合,场景多种多样业务深度整合,集成无处不在业态创新活跃,应用随需应变复杂性和规模增长的解决之道分治 知识抽象衡量分治的标准高内聚低耦合行李李⻋车厢观光⻋车厢普通⻋车厢连接“每个车厢都要符合承重要求,行李车厢承重能力要高于其他车厢,车厢间的连接要牢固且易于拆卸,有足够的灵活性方便转弯”“大件行李应该单独存放,避免占用普通车厢中的空间,餐车应该在整个列车的中间,方便乘客用餐”运行时进程间通信,能够容错和故障隔离去中心化管理数据和去中心化治理服务可以独立的开发、测试、构建、部署按业务组织全功能团队高内聚低耦合,职责单一关注业务领域,建立边界并构建通用语言,高效沟通对业务进行抽象,和业务专家一起建模尽可能维持代码和业务的低表示差异微服务和DDD不同的关注点微服务DDD设计模型系统的/解决方案的维度真领实的域/业务模的维型度DDD概览关注按领域定义,在限界上下文内形成统一语言,提升业务和技术的沟通效率关注领域设计在落地时和设计模型及实现模型的低差异,减小业务和技术之间的鸿沟战略战术✔✔✔✔✔

表示本次演示中药用到的概念✔复杂性和规模增长的解决之道DDD设计实践DDD和微服务的关系DDD编码实践DDD设计实践按业务划分限界上下⽂消除隐式数据依赖明确定义上下游关系下游的⾃我保护按业务划分限界上下文识别业务领域使用工具行业经验从业务能力的角度识别核心域/支撑域/通用域⻔门店仓库⽣生产加⼯工多维度抽象按业务划分限界上下文哪些部分应用了DDDAndroidAppGatewayiOSAPP⼩小程序服务1 服务2服务nHTTPS浏览器器HTTPSWEBAPPJSFJSFOPENAPI第三方JSF基础设施第三方服务BFF模式微服务模式JSFJSFMQ消除上下文间的隐式数据依赖用户上下文商户上下文商品上下文交易上下文……服务上下文跨上下文之间不存在实体引用是否要抽象一个值对象取决于上下文的边界范围关注对象胜于关注表结构使用微服务架构,服务之间的确在变量量层面做到了彼此隔离,然⽽而……任何形式的共享数据行为都会导致强耦合……如果给服务之间传递的数据记录中增加了⼀个新字段,那么每个需要操作这个字段的服务都必须要做出相应的变更,服务之间必须对这条数据的解读达成⼀致,那其实这些服务全部都是强耦合与这条数据结构的,他们是间接彼此耦合的。--《架构整洁之道》订单上下文DEMO订单号 购买者标识 购买者类型1zhangsan12apple2明细标识 订单号 商品品标识 商品类型11100112110012T_ORDERT_ORDER_ITEM订单上下文明确定义依赖方向领域间的协作关系U

表示

“上游”(Upstream),D

表示

”下游”(Downstream)技术实现保障上游和下游解耦插件在线销售库存DUWMS远程调用MQ监听U商品U订单U物料料U⽀支付U地址⽣生产调度D交易

服务DUWMS依赖代表的是对知识的理解区分模块耦合和组件耦合只有单向依赖可以结合整洁架构的Entity和UseCase理解下游的自我保护防腐层(AnticorruptionLayer):对于下游来说,需要根据⾃己的领域模型创建⼀个单独的层,该层作为上游系统的代理理向你的系统提供功能。它在你⾃己的模型和他方模型之间进行翻译转换。引⼊入防腐层,RPC客户端/SDK的模式相对于REST在开发的易用性方面

没有明显的优势了。用Feign作为REST的客户端,自然生成了防腐层RPC更易用……但在分布式环境下,REST方式的服务依赖要⽐

RPC方式的依赖更为灵活。--《微服务设计》插件在线销售库存DUWMS远程调用MQ监听餐饮排班表UACL⻔门店U下游通过防腐层做自我保护就这个例子,顺便说一下,在面对同类型多上游的情况下,对下游来说,策略模式依然是最好用的自我保护模式,虽然保障的是内部架构质量复杂性和规模增长的解决之道DDD设计实践DDD和微服务的关系DDD编码实践DDD和微服务的关系逻辑划分是否要演变为物理隔离?系统架构的逻辑划分可以细于部署单元的物理隔离反思和质疑

-

Modulithic/MicroserviceEnvy演进式架构系统架构是由系统内部的架构边界,以及边界之间的依赖关系所定义的,与系统中个组件之间的调用和通信方式⽆关……所谓的服务本身只是⼀种⽐函数调用方式成本稍⾼的,分割应用程序行为的⼀种形式,如系统架构⽆关。--《架构整洁之道》复杂性和规模增长的解决之道DDD设计实践DDD和微服务的关系DDD编码实践按DDD编码的意义让代码体现设计,保持二者的低表示差异,难点在于对聚合根的实现。聚合根的设计要点聚合根封装其内部实体和值对象,并保证数据的最终一致性一个聚合根一个repository而不是一个实体一个聚合根之间不能建立关系,只能通过ID引用聚合根通过ID引用聚合根封装多个实体聚合根的设计难点SpringDataJDBCMyBatis/JDBC常用ORM框架的⽐较JPA/HibernateD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论