写点什么

数据是实现微服务的难点

  • 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:003287

评论

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

YashanDB数据库的智能索引设计与查询加速方法

数据库砖家

YashanDB数据库调优实战:提升系统性能的关键技巧

数据库砖家

揭秘 TikTok 达人营销高效履约之道

Wolink

海外推广 沃链Wolink 达人营销

DeepSeek-V3.1上线百度智能云千帆,业内首发支持思考模式下Function Calling能力

科技热闻

YashanDB数据库的自定义函数与存储过程技术详解

数据库砖家

YashanDB数据库多节点负载均衡配置详解

数据库砖家

轻匠招生系统:微擎云端助力教育招生全流程高效化

微擎应用市场

得物灵犀搜索推荐词分发平台演进3.0

得物技术

架构 AI 算法

真正的产品迭代,源于更好的理解用户需求

Feedalyze

产品运营 产品迭代 用户反馈 用户需求 企业发展

EMNLP 2025|vivo 等提出 DiMo-GUI:模态分治+动态聚焦,GUI 智能体推理时扩展的新范式

vivo互联网技术

人工智能 推理模型 多模态大语言模型 GUI Agent Test-time Scaling

震坤行商品列表API秘籍!轻松获取商品列表数据

tbapi

震坤行API 震坤行商品详情API 震坤行商品数据采集

YashanDB数据库的自动故障检测及容错机制

数据库砖家

YashanDB数据库的自动扩容功能及配置技巧

数据库砖家

YashanDB数据库的自动扩展能力及应用方法

数据库砖家

YashanDB数据库多副本同步与容错策略

数据库砖家

AI 超聚合系统,一站式 AI 功能解决方案

微擎应用市场

AI‘’

5 个最佳 ServiceNow 开源替代品(含价格对比)

NocoBase

开源 低代码 零代码 ITSM ServiceNow

获高瓴光速数千万美元投资,质变科技发布首款类人决策智能体Bloom

AI数据云Relyt

数据智能 智能体 AI Agent 决策智能 Agentic AI

YashanDB数据库多副本同步技术详解

数据库砖家

AI赋能驱动下的容器化应用开发范式升级

xuyinyin

元图CAD:破解离散文字提取难题,释放工程设计效率新潜能

元图CAD

OCR 元图cad 提取文字 离散文字

YashanDB数据库的自适应负载均衡技术介绍

数据库砖家

YashanDB数据库多版本控制与数据一致性保障

数据库砖家

AI+仿真:驱动工业智能变革新引擎(内含100个AI应用案例下载)

Altair RapidMiner

人工智能 AI 仿真 CAE hyperworks

新华三 Polaris X20000 登顶 MLPerf Storage v2.0,ScaleFlux 助力实现高性能表现

ScaleFlux

YashanDB数据库的自动化管理与运维工具技术分析

数据库砖家

抖音家政小程序融合版:助力家政服务高效接入多平台

微擎应用市场

小程序 抖音

YashanDB数据库的自动化运维机制与应用效果研究

数据库砖家

RAGFlow+TextIn:RAG 实战教程!1 分钟实现解析性能提升

合合技术团队

人工智能 大数据 算法

融云十周年程序员纪录片《十字路口》:三十而立,35+ 而已

融云 RongCloud

YashanDB数据库多版本控制及数据一致性保障

数据库砖家

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