BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年7月8日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

一年一度的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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT