写点什么

数据是实现微服务的难点

  • 2016-09-04
  • 本文字数:996 字

    阅读完需:约 3 分钟

企业在创建和开发微服务的过程中,最困难的问题之一就是他们的数据。如果我们采用领域驱动设计(Domain-Driven Design,DDD)来分析业务领域并剖析数据所代表的含义,将会有助于实现微服务架构 Christian Posta 在一个关于微服务实现的系列博客文章中阐述了该理念。

Posta 是 Red Hat 的中间件主架构师,对于他来说,选择微服务架构的主要原因在于这种架构能够让负责系统不同组成部分的团队按照不同的进度来开展工作,并且能够让他们之间的相互干扰达到最小。当按照这种方式来组织团队的时候,系统架构能够反映出这种变化,并且会向微服务架构来演化。

但是,如何让团队之间的这种自治真正运转起来,这一点其实并不简单。在单体架构中,通常会使用事务并且只有一个数据库,如果每个服务都具有一个数据库,那么这会变成一项挑战,对于传统的企业来讲更是如此。

Posta 指出,在实现微服务方面,互联网公司和传统企业之间有着巨大的差异。互联网公司采用微服务的目的主要是解决大量数据和扩展性的问题,而传统企业要同时处理业务和扩展性方面的复杂性。播放影片或发送推文的复杂性要远远低于保险索赔系统的复杂性。

在为相对复杂的企业域构建微服务时,我们需要找到在这个域中不同责任的边界。在每个边界中,我们会创建领域模型,这个模型是针对业务责任所设计的,并反映了这种业务责任。针对每个边界的数据模型会由同一个边界中的领域模型来驱动。采用 DDD 的方式我们能够找到这些边界,并会为每个边界创建一个有界上下文(bounded context),每个上下文将会成为一个微服务。

在Posta 的经验中,开发人员在构建分布式系统时,会倾向于假设只有一个关系型数据库,并试图将网络的不稳定性抽象出来。跨多个服务所带来的分布式数据问题通常会通过二阶段提交来解决。与这种做法不同,Posta 相信,我们必须要寻找每个有界上下文中的事务性边界,并找到满足业务限制和不变量的最小原子单元,不要让事务传播到其他的上下文之中。

我们还需要有一种机制,能够让服务通知其他的服务发生了什么,针对这种需求,Posta 推荐使用事件。我们的服务会发布事件,描述在这个域中发生了什么,其他的服务会读取这些事件,调整它们自己的模型并将变更进行持久化。

关于这些理念的更深入描述,Posta 引用了Vaughn Vernon 发布的一系列博客文章,这些文章基于DDD 理念,描述了聚集、事务边界和有界上下文。

查看英文原文 Data is the Hard Part Working with Microservices

2016-09-04 19:002910

评论

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

【布隆过滤】大数据+查重过滤+爬虫领域精选算法

cv君

AI 引航计划

手把手带你做好项目管理|引航计划|管理

石云升

项目管理 管理 引航计划 技术专题合集

Vue3 + TypeScript 开发实践总结

程序员海军

大前端 Vue3 引航计划

设计电商秒杀系统

gawaine

架构训练营

原创万字总结人工智能技术栈与学习路线 上集 基础篇

cv君

AI 引航计划

为什么赛博朋克里总少不了日本元素?

脑极体

数据库:B/B+树

正向成长

B+树 B树

如虎添翼!6款备受欢迎的Edge浏览器插件

Jackpop

自定义Vue脚手架模板之:Vue-Cli源码分析

Brave

源码 vue cli 10月月更

推荐2个网站,牛x就完事了!

Jackpop

基于深度学习的医学图像分割(一)

cv君

AI 引航计划

JavaScript 脚本优化的 10 个技巧

devpoint

JavaScript 性能优化 10月月更

自我提升:高效能人士的7个习惯学习笔记

程序员架构进阶

自我管理 自我提升 10月月更

模块九作业

VE

架构实战营

AI驱动!7款开发者必备生产力工具

Jackpop

从头开始(概率)学HMM:精讲第二课-学习问题(BW算法)

herosunly

AI 引航计划 内容合集

从头开始(概率)学HMM:精讲第三课-概率计算问题

herosunly

AI 引航计划 内容合集

【设计模式】第一篇 - 组合模式

Brave

组合模式 10月月更

linux之history使用技巧

入门小站

Linux

在线HTTP请求/响应头转JSON工具

入门小站

工具

中国法定数字货币(DCEP)全面启航!全国普及势在必行

CECBC

浅谈人工智能的历史

Nydia

决策树——从原理走向实战

cv君

AI 引航计划

手把手带你做好团队管理|引航计划|管理

石云升

团队管理 管理 引航计划 技术专题合集

电商秒杀系统

feitian

uni-app 在mac电脑连接安卓手机进行真机调试

达摩

uni-app app调试

架构实战营 模块九 作业

脉醉

架构实战营

从头开始(概率)学HMM:精讲第一课-隐马尔可夫模型定义

herosunly

AI 引航计划 内容合集

原创万字总结人工智能技术栈与学习路线 下集 进阶篇

cv君

AI 引航计划

924清退在即,你的币转入数字货币钱包了吗?

CECBC

仁兄,可曾听闻OpenVINO

cv君

AI 引航计划

数据是实现微服务的难点_语言 & 开发_Jan Stenberg_InfoQ精选文章