写点什么

Vaughn Vernon 使用反应式 DDD 对微服务中的不确定性建模

  • 2017-10-12
  • 本文字数:1135 字

    阅读完需:约 4 分钟

微服务和反应式模型虽然很强大,但也带来了不确定性。开发人员总是对消息驱动的系统持有疑问:

  • 有人接收到我发出的消息了吗?
  • 他们对消息做出回应了吗?
  • 消息的顺序会不会被打乱了?

Vaughn Vernon 在 DDD 探索大会的演讲中提到,DDD 是回答上述问题的基础。使用通用语言( Ubiquitous Language )来描述由边界上下文( Bounded Context )组成的系统可以降低分布式系统的复杂度。不确定性应该成为通用语言的一部分,比如边界上下文之间的交互问题。

Vernon 是“ Implement Domain Driven Design ”和“ Reactive Messaging Patterns with the Actor Model ”的作者,他认为为项目创建好上下文映射是至关重要的。从实际情况来看,业务的核心领域总会包含多个边界上下文,而上下文映射体现了边界上下文之间的关系。在建立上下文映射关系时,要专注在团队之间的关系上,而不是去关注技术细节,比如究竟是使用 REST 还是使用 RPC。Vernon 说,“集成对象比如何集成更加重要”。

Vernon 看到了反应式系统的发展趋势,反应式行为存在于微服务之中,同时又超越了微服务。这并非什么新概念,他说, Eric Evans 早就在业界推广事件模式。其核心思想就是对过去发生的事件作出反应,进而达到和谐的状态。

微服务和反应式行为带来了不确定性,包括事件顺序的不确定性和事件的重复性问题。Vernon 强调说,“就算你使用的是 Kafka,认为自己是在按顺序消费消息,但其实是在自欺欺人。如果任何一个消息可能出现乱序,那么所有消息都有可能出现乱序,你要为之做好应对准备”。

Vernon 认为这种不确定性是很难得到消除的,因为我们已经习惯于阻塞调用、数据库锁等事物,并总是期待事物是按照一定顺序进行的。在反应式系统里,一些长久以来的信念开始土崩瓦解。或许,开发者会本能地创建出门面(facade)来隐藏不确定性,写出传统的非反应式代码,但 Vernon 认为我们应该要反其道而行之。

Vernon 总结了自己处理不确定性的方式——“更少的查询,更多的事件”。事件告诉我们在过去某个时刻发生了什么。我们不知道系统现在处于什么状态,只知道事件发生时的状态以及在这一过程中发生了哪些变化。如何对这些事件作出反应式属于业务决策,包括如何处理乱序问题。Vernon 引用了 Pat Helland 的论文“ Life Beyond Distributed Transactions ”:“在一个不能依赖分布式事务的系统里,必须在业务层面管理不确定性”。

Vernon 列举了几中不同形式的不确定性,并提供了用于管理不确定性的简短代码。他强调这些代码只是业务决策的实现。业务必须拥抱不确定性,必须让业务决策者来对其进行建模,而不是在软件开发团队内部完成这件事情。不要通过创建门面来隐藏不确定性,而是尽你所能对不确定性进行建模。

查看英文原文: Vaughn Vernon Uses Reactive DDD to Model Uncertainty in Microservices

2017-10-12 19:001433
用户头像

发布了 322 篇内容, 共 143.3 次阅读, 收获喜欢 148 次。

关注

评论

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

GPT-5紧急叫停?千名专家联名呼吁,AI技术的未来又该何去何从?

加入高科技仿生人

人工智能 AI技术 ChatGPT GPT-4

共铸国云繁荣生态!天翼云华东中心生态合作大会圆满举行

天翼云开发者社区

小白线下学习前端培训怎么样

小谷哥

全国首个政企采购云平台:政采云基于 Dubbo 的混合云跨网方案实践

阿里巴巴云原生

阿里云 云原生 dubbo

聚焦云原生 | MIAOYUN入选开源GitOps产业联盟生态图景2.0

MIAOYUN

云计算 开源 云原生 开源社区 开源生态

智能、高效、便捷问题定位利器 —— 应用诊断分析平台 ATP 上线

OpenAnolis小助手

内存泄露 龙蜥社区 应用诊断 ATP 异常行为

欢迎大家来到不可思议又有趣的SQL世界

图灵教育

sql 数据库、 SQL sever

超级MMM互助盘DAPP系统开发源代码(案例演示)

开发微hkkf5566

“易+”开源 | 基于 ijkplayer 的 LLS-Player 移动端应用实践

网易云信

开源 实时音视频 低延时直播

智慧公厕:现代科技与城市卫生的完美结合

光明源智慧厕所

智慧城市 智慧物业 智慧机场

共铸国云智领未来| “云游”华夏?山西美景正当时!

天翼云开发者社区

前端培训怎么学习好?

小谷哥

NFTScan 与 Dmail 达成合作伙伴,双方在 NFT 数据领域展开合作

NFT Research

NFT

常见的项目管理问题如何应对?| 得物技术

得物技术

超越 ChatGPT,GPT-4 将成为下一个“顶流”?

Zilliz

ChatGPT

风云变幻,尽收眼底!天翼云为气象信息化发展注智赋能

天翼云开发者社区

CloudQuery 社区版重启 | 我们做了哪些准备?

BinTools图尔兹

数据库 社区版 数据库管理系统

“易+”开源 | 基于 ijkplayer 的 LLS-Player 移动端应用实践

网易智企

开源 实时音视频 低延时直播

云行| 三大重磅发布,助力重庆数字经济新发展!

天翼云开发者社区

分享:从数据库开发者的视角,预测5个开发趋势

OceanBase 数据库

数据库 oceanbase

一个有效的图表图像数据提取框架

合合技术团队

人工智能 计算机视觉 表格识别 图象识别

社招内推!JAVA、测开、数仓、前端均有坑

Qunar技术沙龙

互联网 工作 社招

【4月1日 上海站】融云社交泛娱乐出海赋能会,干货、礼品在等你!

融云 RongCloud

互联网 融云 泛娱乐 出海 通讯

如何轻松应对偶发异常

阿里巴巴云原生

阿里云 微服务 云原生

无线WiFi信号强度统计:WiFi Signal Strength Explorer 激活版

真大的脸盆

Mac wifi Mac 软件 无线管理 WiFi统计

Excel 进阶|只会 Excel 也能轻松搭建指标应用啦

Kyligence

数据分析 Excel数据分析 指标平台

最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇

极客飞兔

本地化 汉化教程 AI绘画 Stable Diffusion Chinese

私有化部署chatGPT,告别网络困扰

南城FE

人工智能 前端 ChatGPT

全球开源盛会!GOTC 2023 即将拉开帷幕,15 大分论坛不容错过!

kk-OSC

大会 #开源

智慧公厕系统:提高管理效率与用户体验的创新解决方案

光明源智慧厕所

智慧城市 智慧物业 智慧屏 智慧机场

Vaughn Vernon使用反应式DDD对微服务中的不确定性建模_语言 & 开发_Thomas Betts_InfoQ精选文章