写点什么

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:002738
用户头像

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

关注

评论

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

明明已部署EDR,服务器为什么还是被入侵了?

青藤云安全

安全攻防 网络安全 主机安全

企评家|广州白云国际机场股份有限公司成长性报告简述

企评家

李俊刚:我是如何在OpenHarmony完成ap6275s WiFi驱动的HDF适配工作的?

OpenHarmony开发者

OpenHarmony WiFi驱动

柏拉图会成为元宇宙风险标吗?PlatoFarm的机会很大

小哈区块

三、云原生安全关键要素

穿过生命散发芬芳

云原生安全 5月月更

接口测试工具简介!

Liam

测试 自动化测试 测试工具 测试自动化 测试管理工具

在线TSV转YAML工具

入门小站

工具

HDD·耀星领航出海峰会:华为游戏中心联运服务加速游戏出海获量增长

最新动态

Redis「5」事件处理模型与键过期策略

Samson

学习笔记 Redis 核心技术与实战 5月月更

druid 源码阅读(七)Druid Filter 介绍

爱晒太阳的大白

5月月更

Dubbo3 落地实践及 Mesh 解决方案

阿里巴巴中间件

阿里云 开源 云原生 dubbo 中间件

直播预告丨Hello HarmonyOS进阶课程第三课——游戏开发实践

HarmonyOS开发者

游戏开发 HarmonyOS

linux中vi,vim操作技巧

入门小站

Linux

OpenHarmony浏览器上新,在Dayu200开发板上终于能优雅地浏览网页

离北况归

浏览器 OpenHarmony Openharmony啃论文俱乐部 PIMF OpenHarmony应用安装

HIVE3 深度剖析 (下篇)

明哥的IT随笔

大数据 hive

【JavaScript】数值转换为数值

恒山其若陋兮

5月月更

腾讯云发布全新非关系型数据库KeeWiDB 搭载全自研存储引擎

科技热闻

不会吧不会吧!听说还有人在手动迁移Vault密钥?

Jianmu

自动化 数据迁移 密钥 建木CI vault

服务网格接口 SMI 规范解读

Flomesh

云原生 服务网格 SMI OpenServiceMesh

小白福利!教你用低代码实现一个简单的HarmonyOS页面跳转功能

HarmonyOS开发者

HarmonyOS 低代码开发

在线文本列表补集计算工具

入门小站

工具

你中奖了吗?低代码开发师(高级)认证中奖名单揭晓啦!

一只大光圈

钉钉宜搭

6 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

JavaWeb 数据库操作

Emperor_LawD

sql javaWeb 5月月更

FinClip+系列 | VUE前端开发框架核心原理

Speedoooo

Vue 前端框架 移动开发 移动端开发 小程序容器

漏洞扫描器并非100%靠谱,那么容器镜像安全又当如何保证?

青藤云安全

网络安全 安全管理 漏洞修复

一文彻悟容器网络通信

阿里巴巴中间件

阿里云 容器 云原生 中间件

Cocos 常用功能介绍

空城机

Cocos 5月月更

抢先预约 | 阿里云无影云应用线上发布会预约开启

阿里云弹性计算

无影云电脑 云应用

企评家,企业数据分析评价提供投资信息支撑

企评家

企评家 | 白银有色集团股份有限公司成长性评价简介

企评家

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