如何轻松和安全地构建的满足合规要求的智能产品,实现业务需求?4月26日,告诉你答案! 了解详情
写点什么

在微服务中结合使用 DDD 与事件

  • 2015 年 7 月 07 日
  • 本文字数:935 字

    阅读完需:约 3 分钟

一年一度的 DDD Exchange 大会今年在伦敦如期举行, David Dawson 为听众带来了一场精彩的演讲。他在演讲中表示:要真正体现出微服务的强大能力,必须结合使用领域驱动设计(DDD)。在5-10 年前,DDD 曾经帮助我们解决了在软件设计中所犯下的诸多错误,而在微服务这一背景下,同样的错误又开始冒头了。

Dawson 是 Simplicity itself 公司的 CEO,他首先从哲学的角度对架构进行了重新定义:这是你处理某个问题,或对其进行推理的方式,也是你用于解决某个问题的指导原则。但它本身并不是一种解决方案,而是一种设计。你所做的并非形成某种架构,而是根据这些指导原则逐步形成某种设计。有许多组织虽然已经从技术角度实现了微服务,但并未从中受益。在 Dawson 看来,这是因为这些组织遵从了不正确的指导原则。

Dawson 曾经就微服务究竟是什么这一话题与许多人进行过交流,他发现每个人的观点都有所不同,但有一点是一致的:即通过某种网络边界实现隔离性。在他看来,这种隔离性是微服务价值的根本,也是痛苦的源头。你需要在这方面做出大量的权衡,才能够获得丰厚的回报,但其代价也同样不菲。

Dawson 相信,为了创建优秀的微服务,我们真正所需关注的内容与 DDD 中的概念是相吻合的,例如聚合根、网关、视图和事件。他认为事件改变了我们设计软件的方式,并将事件称为真正的统一语言。在与用户进行交流时,他们总是说有什么事发生了,这就是事件。如果从事件的角度进行设计,那么微服务中所存在的大量问题将烟消云散。对于他来说,整个系统中唯一有意义的事实就是一个事件流,而静止的数据,例如数据库中的数据是无用的。只有当这种数据活动起来时,你才能够从中获得价值。当你发起一次请求或查询、发送一个命令,或是对数据进行某种改变时,这些数据就开始活动起来了。

Dawson 认为,如今在开发微服务时,人们对于 HTTP 和 REST 的使用近乎痴迷,但这种技术是有局限性的。它只是一种集成风格,但只提供了请求与响应的功能,却不支持事件广播与流。而通过消息传递,你就能够得到对广播与流的支持,甚至更多的功能。他还相信,通过事件溯源所设计的微服务从根本上对你解决某个问题的方式产生了改变。

明年的DDD Exchange 大会预计于2016 年6 月10 日举办,现在已开放注册。

查看英文原文 DDD, Events and Microservices

2015 年 7 月 07 日 09:432592
用户头像

发布了 428 篇内容, 共 158.6 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

第五周作业

oooh-la

前端面试必备ES6全方位总结

我是哪吒

程序员 面试 大前端 ES6 2月春节不断更

挖矿系统APP源码搭建

luluhulian

厚积薄发!华为云7篇论文被AAAI收录,2021年AI行业技术风向标看这里!

华为云开发者社区

人工智能 卷积网络 远程监督 域泛化 油气储集层收集

话题讨论|过年回家你带电脑吗?

熊斌

话题讨论 28天写作

Python 中 sorted 如何自定义比较逻辑

zikcheng

Python sorted cmp

就算知道了答案,真的会改变吗?「幻想短篇 25/28」

道伟

28天写作

第十周 学习总结

简简单单

挖矿区块链_什么是挖矿 带你详细了解挖矿基础知识

v16629866266

安卓开发交流!一线互联网移动架构师筑基必备技能之Java篇,Android岗

欢喜学安卓

android 程序员 面试 移动开发

第三章: 产品解决方案作业

让时间说真话

产品经理 产品经理训练营

ModelArts AI Gallery与HiLens Kit联合开发丨行人社交距离风险提示Demo

华为云开发者社区

华为云 modelarts hilens 行人 社交距离

史上最清晰的Tarjan算法详解

华为云开发者社区

算法 静态分析 语法树 Tarjan 数据流

持续进步的不二法宝-PDCA

Ian哥

28天写作

高性能缓存 Caffeine 原理及实战

vivo互联网技术

Java Caffeine 本地缓存

OpenAI将k8s扩展至7500个节点以支持机器学习;Graph Diffusion Network提升交通流量预测精度

京东科技开发者

区块链 开源

产品经理训练营第0期-第三次作业

孙行者

第0期 产品经理训练营 问题

第三章:产品解决方案作业

让时间说真话

产品经理

时间约束帮助我写作

Justin

方法论 创意 习惯养成 28天写作

【WOW.js】Animate.css的黄金搭档

德育处主任

CSS 动画 js 28天写作 2月春节不断更

安卓开发软件有哪些?分析Android未来几年的发展前景,吐血整理

欢喜学安卓

android 程序员 面试 移动开发

云原生动态周报 | Google推出VM Manager

华为云原生团队

Docker 开源 云原生 华为云

第三章:产品解决方案作业

让时间说真话

产品经理

产品训练营第二章作业(二)

Arnold

不要在nodejs中阻塞event loop

程序那些事

node.js Event 事件循环 程序那些事 nodejs event

日记 2021年2月2日(周二)

Changing Lin

个人感悟 2月春节不断更

持续交付

lidaobing

持续交付 28天写作

传统线程同步通信技术

武哥聊编程

Java 多线程 28天写作

大背景 (28天写作 Day25/28)

mtfelix

28天写作 新能源汽车 新能源革命 碳中和

第十周 模块分解作业

简简单单

Elasticsearch 写一致性原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

在微服务中结合使用DDD与事件_语言 & 开发_Jan Stenberg_InfoQ精选文章