【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Vaughn Vernon 谈微服务和领域驱动设计

  • 2016-08-02
  • 本文字数:979 字

    阅读完需:约 3 分钟

虽然单体应用程序也可以实现相当好地建模,但它们常常会演变成一团乱麻。究其原因是单体应用程序内的多个领域模型错综复杂地交织在一起。根据 Vaughn Vernon 的经验,这种情况在几周或几个月内就会出现。在今年早些时候举行的 Scala Days 大会上,他在演讲中表达了这样的观点。

Vernon 是《实现领域驱动设计》和《通过Actor 模型实现响应式消息处理模式》这两本书的作者。他指出,当应该保持独立的领域模型混在了一起,互相无法区分时,就很难或者不可能和业务及领域专家一起从逻辑上推断模型,让应用或系统比单体应用程序还糟糕。

单体应用程序的一个替代方案是微服务,但我们如何定义一个微服务?它有多大?有时候,人们提出使用代码行定义微服务的大小,Vernon 见过以数十行为标准的,也见过一上千行为标准的,但他不主张采用这样一种既宽泛又不准确的定义。

此外,有些企业号称有数以百计的微服务,但又不知道或者不关心准确数值。他们认为,不值得花费时间和精力去弄清它们的实际使用情况,因为,只是让它们运行起来的话,成本会很低。Vernon 对此作出了回应。他不同意这样的观点。他指出,别的不说,基础设施对于许多微服务如何运行,如何在故障情况下保持弹性,有重大的影响。

Vernon 建议采用一种规定性的方法确定一个系统里微服务的大小和数量:使用领域驱动设计(DDD)的方法,尤其是有界上下文。他指出,在微服务社区里,有时候会将有界上下文定义成只有一个实体,但他发现那不大可能。相反,Vernon 支持借助通用语言在大小确定的有界上下文中建模微服务,并提到了Sam Newman 的著作《构建微服务》。

在开始使用微服务的时候,Vernon 建议从每个有界上下文一个微服务开始。他认为,即使我们能够在一个有界上下文中找出多个本身可以视为微服务的组件,但它们的内聚性和协同关系意味着它们应该一起放在一个服务里。他还建议,一个服务和一个有界上下文应该是一个可部署的单元。尽管如此,根据经验,他们可能会采用更细的粒度,为一个有界上下文创建更多的微服务和可部署单元,可能是因为扩展性方面的原因。

除了实体之外,通用语言还包括命令和事件消息。通过发布最终供其他微服务使用的事件,消息可以用在事件驱动的架构中。在演讲总结阶段,Vernon 展示了一个构建微服务的例子。该例子使用了 Actor 模型,并使用 Akka Scala 实现。

查看英文原文: Vaughn Vernon on Microservices and Domain-Driven Design

2016-08-02 19:002428
用户头像

发布了 1008 篇内容, 共 374.1 次阅读, 收获喜欢 340 次。

关注

评论

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

最大输出 18W,集成 Type-C PD 输出和各种快充输出协议

二哈侠

文心一言 VS 讯飞星火 VS chatgpt (173)-- 算法导论13.3 2题

福大大架构师每日一题

福大大架构师每日一题

详解Sei V2的并行EVM逻辑与叙事,添加主网至Bitget钱包

长安区块链

AudFree Audio Capture for Mac v2.7.1永久激活版下载

iMac小白

DevOps|产研运协作工具链上的皇冠-项目管理工具

laofo

项目管理 DevOps cicd 敏捷开发 研发效能

【Java技术深入解析】「核心技术提升」最流行的Java模拟框架Mockito入门指南(Java单元测试)

洛神灬殇

Java Mock 服务 技术分析 2024年第四篇文章

IDC报告:网心科技以11.8%的市场份额位居中国边缘公有云第三

网心科技

分布式系统设计: 从1千到10亿用户的跨越

俞凡

架构

CnosDB容灾方案概述

CnosDB

开源 时序数据库 tsdb CnosDB

Sei新手完全指南科普,以及钱包介绍测评(bitget)

石头财经

解读 $mash 通证 “Fair Launch” 规则,公平的极致?(Staking 玩法)

EOSdreamer111

Receipts for Mac(财务文件管理)v1.15正式激活版下载

iMac小白

TrashMe for Mac(mac软件卸载工具)v3.5.6激活版下载

影影绰绰一往直前

通过聚道云软件连接器实现钉钉与自研主数据系统的完美融合

聚道云软件连接器

案例分享

FSNotes for mac(mac文本处理工具)v6.6.4中文免激活版下载

iMac小白

DRmare Audio Converter Mac v2.9.0激活版下载

iMac小白

工赋®新思直播预告 | 1月9日晚19:00,基于运营数字孪生的工艺质量控制与优化

工赋开发者社区

服务器日志处理,文件截取关键字教程。

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

工信部:5项工业互联网平台国家标准正式发布实施

工赋开发者社区

Eassiy Data Recovery for mac(硬盘数据恢复工具)v5.1.6激活版下载

iMac小白

Avdshare Video Converter for Mac(视频转换器)v7.5.2激活版下载

iMac小白

Navicat for MongoDB mac(MongoDB 数据库管理和开发)v16.3.4激活版下载

iMac小白

URL Manager Pro for Mac(浏览器标签管理应用)v6.4.2激活版下载

iMac小白

AudFree Audio Converter for mac激活版下载

iMac小白

2024-01-06:用go语言,在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧 在桥上有一些石子,青蛙很讨厌踩在这些石子上 由于桥的长度和青蛙一次跳过的距离都是正整数 我们可以把独木桥

福大大架构师每日一题

福大大架构师每日一题

AudKit Apple Music Converter for Mac 1.2.0激活版下载

iMac小白

一文了解 DeFi 原生公链 Sei,以及钱包添加教程 什么是Sei?

大瞿科技

Sei新手完全指南科普,以及钱包介绍测评(bitget)

BlockChain先知

有什么安全处理方案可以有效防护恶意爬虫

德迅云安全杨德俊

爬虫 安全 CDN

webSocket的使用详解。

百度搜索:蓝易云

Linux 运维 Web websocket 云服务器

Linux route命令实战:route 命令实战教程,配置静态路由,删除路由表项

百度搜索:蓝易云

云计算 Linux 运维 云服务器 Route

Vaughn Vernon谈微服务和领域驱动设计_语言 & 开发_Jan Stenberg_InfoQ精选文章