免费注册!6月19-20日,「亚马逊云科技中国峰会」重磅来袭! 了解详情
写点什么

针对微服务应重新领会功能服务设计:来自 microXchg 大会的报告

  • 2017-02-22
  • 本文字数:1220 字

    阅读完需:约 4 分钟

今年 microXchg 微服务大会上, Uwe Friedrichsen 做了开幕报告。报告中探讨了“弹性功能服务设计”的核心理念,要点包括:微服务开发人员应该了解容错设计模式与缓存,但不能用于改善完全不好(过度耦合)的系统设计;理解领域驱动设计(DDD,Domain-Driven Design)和模块化的重要性;组件重在可替换性而非可重用性。

Friedrichsen 是 Codecentric 公司的 CTO,他在演讲一开始就指出了软件开发的目的在于交付业务价值。为实现该目标,软件必须在生产环境中运行并(高度)可用。微服务这样的现代架构风格意味着凡事皆分布(很多情况下是在不少于一个LAN 上的分布),因此故障在系统中是常见的并且是不可预测的

容错设计模式应该被开发人员所熟知,诸如电路熔断器(Circuit Breaker)、舱壁(Bulkhead)、超时与重试(Timeout and Retry)等。容错设计模式借助Michael Nygard 所著的《[Release It!( https://pragprog.com/book/mnee/release-it )》一书而广为人知。缓存虽然十分有用,但是在部署中应慎重使用,并非简单地应用就可以达到克服不好系统设计的效果,例如涉及多个独立服务的长激活路径。

Friedrichsen 展示了一系列用于微服务的“设计基础”(如下图所示),其中包括了一些侧重于高内聚、低耦合和分离关注的设计原则。这些原则在系统边界处尤为关键,虽然他们的理论早在上世纪 70 年代就由 David Parnas (PDF 链接)详细阐明了,但是他们依然常被错误地理解。

领域驱动设计(DDD,Domain-Driven Design)是一个十分有用的工具,但是不少开发人员过度聚焦于被 Friedrichsen 称做“实体 DDD”的领域静态上下文模型。通常系统的动态行为对业务行为、领域时间和数据流更具描述力。

不要从静态领域模型着手,魔法存在于系统的动态行为之中。

微服务开发人员不应纠结于可重用性,而是应该瞄准于可替换性。Friedrichsen 引用了 Fred Brooks 的说法,讨论多年来一直被开发人员所追求的软件重用承诺问题。Brook 建议对于需要创建可重用组件(超越那些适用单一用例目标的组件)的工作,通常需要付出三倍以上的工作投入。这意味只有当组件被无修改地被使用了四次以上,才会看到些许在可重用性上投入的反馈。

微服务系统中使用的交流模式也很大程度上影响了功能性服务设计,Friedrichsen 建议应将关注置于会限制未来更改和扩充能力的前期架构选取之上。

报告的结论和核心关键要点在于,当实现微服务这样的分布式系统时,系统的特性会使得多年来一直为我们所熟知的设计问题影响得以呈现出来并会倍增,因此开发人员和架构师需要重新领会功能服务设计。

Uwe Friedrichsen 演讲“弹性功能服务设计”的视频可以在microXchg 大会的YouTube 频道上看到。

查看英文原文: Relearning Functional Service Design for Microservices: Uwe Friedrichsen at microXchg


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-22 18:001503

评论

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

AI模型的回调能力的理解和实现

不在线第一只蜗牛

php 人工智能

RocketMQ实战—订单系统面临的技术挑战

量贩潮汐·WholesaleTide

数据库 RocketMQ

高能预警!Community Day 20+议题大公开

声网

Arthas getstatic(查看类的静态属性 )

刘大猫

监控 Arthas 监控工具 getstatic 查看类静态属性

深度解读「摩根士丹利」双研报:头部人形机器人、核心供应链公司梳理和投资分析(附报告)

机器人头条

机器人 科技 人形机器人 具身智能

Arthas 全攻略:让调试变得简单

刘大猫

人工智能 算法 监控 Arthas 监控工具

Doris Manager 24.3 版本正式发布,增强集群巡检能力

SelectDB

Apache 数据库 数据分析 实时数仓 OLAP

CouchDB 可观测最佳实践

观测云

couchdb

NotebookLM 推出移动版本,音频概览支持实时互动;豆包 AI 耳机支持外教语音智能体 Owen丨日报

声网

模型即组件的技术实现路径 ——iVX 量子化架构对 GPT-4o/Mediapipe 的封装解析

代码制造者

低代码 组件化 封装 组件化开发

对比解读发币平台:从野蛮爆发走向精细化运营

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

使用kookeey代理IP配置Undetectable指纹浏览器教程

kookeey代理严选

代理IP 跨境电商 代理商 kookeey代理 Undetectable指纹浏览器

自己动手,从零开始编写Raft算法来实现分布式一致性算法

程序员高级码农

程序员 分布式 算法

鸿蒙带来的机会比想象中更大

最新动态

【浪潮海岳inDatax数据中台专栏】主数据管理中基于属性的物料编号生成技术

inBuilder低代码平台

全职接单后才发现,其实不只是技术重要

程序员郭顺发

数据仓库是什么?常见问题解答

镜舟科技

数据仓库 数据湖 OLAP 数据模型 数据存储

没有设计稿也能很漂亮,非常适合独立开发:Trae + 飞个马MCP

秦少卫

#开源项目 开源图片编辑器 #AI编程

共话科学智能!航遥中心于峻川老师分享LLM技术演进与AI+遥感实证研究

ModelWhale

人工智能 AI4S 航遥中心

智机器人推出具身智能一站式开发平台,Genie Studio 想让“训机器人”像搭积木一样简单?

AgiBot World

DApp开发全流程解析:模式设计、功能参考与合约管理实践

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!

SelectDB

数据库 大数据 数据分析 实时数仓 可视化工具

深度解读「摩根士丹利」双研报:头部人形机器人、核心供应链公司梳理和投资分析(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

数据脱敏的这6种方案,真香!

电子尖叫食人鱼

Java

虚拟币制度钱包开发:功能设计与成本全解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

Flink从入门到实战,经历了30个日日夜夜,终于悟道了!

程序员高级码农

大数据 flink 程序员

非凸科技受邀出席“第二届人工智能应用大会”,共话AI赋能产业新未来

非凸科技

RocketMQ原理—高可用+高并发+高性能架构

量贩潮汐·WholesaleTide

架构 RocketMQ

「华为」持续加码人形机器人赛道!

机器人头条

华为 大模型 人形机器人 具身智能

联想控股·和鲸科技首期AI通识课圆满举办

ModelWhale

深入解析 Spring AI 系列:解析请求参数处理

不在线第一只蜗牛

人工智能 spring

针对微服务应重新领会功能服务设计:来自microXchg大会的报告_语言 & 开发_Daniel Bryant_InfoQ精选文章