【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

关于构建可进化的系统

  • 2011-06-30
  • 本文字数:892 字

    阅读完需:约 3 分钟

在最近一篇帖子上, Mike Amundsen 写了构建可进化的系统,对他的演讲“超越 REST:一个打造稳定、可进化的 Web 应用程序的方案”做了补充。在那场演讲里,他希望回答的问题是“我们如何设计和实现分布式网络解决方案,使之随着时间的推移仍然保持稳定和灵活?”他说:

……把一个“应用”放到可以触及的“Web 上”一点都不难,难就难在实现一个解决方案,随着时间的推移能够成功地进化。我认为一个成功的方案包括接受和采纳分布式网络架构的一些现实,隔离环境里的临时因素,以及把你的大部分创造力放在以一种灵活和可进化的方式来表达重要的问题域信息上。

根据 Mike 的说法,回答这个问题的关键在于着眼于系统的三个方面:

* 传输协议——他认为目前创建分布式系统的工具都在向开发者隐藏了底层的协议,为了提高抽象性,通常牺牲了传输协议与生俱来的优点。

处理 HTTP 的最好方式是接纳它,让 HTTP 把系统设计师引向有损耗的(lossy)、零散的(chunky)和无状态的设计,接受 HTTP 的稳定性对于你的实现来说很少改变这个本性……这样你的所有分布式网络设计都会体现 HTTP 本身的强大、稳定和可靠。

* 状态管理——作为识别和接纳协议的不同方面的一个特例,状态管理通常用在本来没有状态的协议上(在这里是 HTTP)维护有状态的通讯。

与其不断地发明新的方式,企图忽视分布式网络交互中的无状态本性,设计师和开发者应该停止使用他们的临时个性化数据污染公共网络,客户端应该记录用户所需的信息(这正是为什么它们通常被称作用户代理)。

* 领域语义——他接着解释如何使用媒体类型在客户端和服务器之间共享领域语义。

正是媒体类型为各方定制消息提供了可能;共享它们对每个数据元素和超链接的含义的理解。正是媒体类型专门提供了注册表,各方都可以在这里找到共享出来的对问题域的理解,以便在相互认可的领域层面实现解决方案。

最后,他总结道

构建可进化的系统并不是非常复杂。它需要清除地理解传输协议,小心地隔离临时数据,并专注于通过共享消息恰当地表达问题域。这未必是一个复杂的过程,但确实需要付出努力。

你能举出企业或者其他地方的例子,同时具备所有这些方面的吗?

查看英文原文: On Building Evolvable Systems

2011-06-30 08:441880

评论

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

redis工作原理(上)

Sakura

28天写作 3月日更 21天挑战

如何用python优雅的写论文

张鹤羽

28天写作 3月日更

vm

梅花鹿鹿

28天写作 3月日更

《接口测试入门》 学习笔记

有梦想的tester

七日更 3月日更

算法喜刷刷

Kylin

算法 3月日更 21天挑战

面试被吊打系列 - Redis原理

数据库 架构 面试

Python 数据类型

HoneyMoose

几千次的重复提交,我用 SpringBoot+Redis 居然扛住了!

Java小咖秀

redis 后端 springboot 幂等

Wireshark数据包分析学习笔记Day5

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

优雅编程 | javascript代码优化的15个小知识

devpoint

ES6 JS代码优化 JS迭代

如何在 Python 中清屏

HoneyMoose

不一样的软件们——GitHub 热点速览 v.21.10

HelloGitHub

数据库 GitHub 开源

搞定计算机网络的常见面试问题

【动态规划/总结必看】从一道入门题与你分享关于 DP 的分析技巧 ...

宫水三叶的刷题日记

面试 算法 LeetCode

事务消息应用场景、实现原理与项目实战(附全部源码)

中间件兴趣圈

RocketMQ 实战 消息中间件 事务消息

(28DW-S8-Day17) 讲故事能力

mtfelix

28天写作 讲故事能力 复述能力

《精通比特币》学习笔记(第五章)

棉花糖

区块链 读书笔记 3月日更

鼎昂量化交易系统APP开发|鼎昂炒币机器人软件开发

系统开发

什么是职业

ES_her0

28天写作 3月日更

程序员成长第二十三篇:员工不符合预期,怎么办?

石云升

程序员 28天写作 职场经验 管理经验 3月日更

线上MySQL读写分离,出现写完读不到问题如何解决

程序员历小冰

MySQL 读写分离

LeetCode题解:518. 零钱兑换 II,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

准备参加软考的小伙伴注意了!

IT蜗壳-Tango

IT蜗壳 3月日更

进步

lenka

3月日更

Apache Ranger的部署安装

大数据技术指南

大数据 3月日更

雪花算法,到底是个啥?

架构精进之路

算法 七日更 3月日更

更新60篇的复盘:持续书写,见证文字的力量

boshi

写作 七日更

今日随想

Nydia

正则表达式.04 - 引用

insight

正则表达式 3月日更

冰河公开了进大厂的核心技能,服了!

冰河

程序员 面试 大厂技能 硬核技能图谱

Elasticsearch Dynamic Mapping

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

关于构建可进化的系统_SOA_Dilip Krishnan_InfoQ精选文章