写点什么

关于构建可进化的系统

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

评论

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

HTML 开发者的智能助手:通义灵码在 VSCode 中的应用

阿里巴巴云原生

html 前端

嘉为蓝鲸应急灾备管理中心 V1.6 移动应急系统,让灾难响应快人三步

嘉为蓝鲸

AIOPS 智能运维 应急灾备管理中心

我对于AI领域商业模式的思考

老张

人工智能 商业模式 智能体 大模型

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

阿里云云效

php

2025 程序员财富密码:巧用这 4 款 AI 工具,私单收入暴涨 5 倍

飞算JavaAI开发助手

芯盾时代OIAM解决方案

芯盾时代

iam 统一身份认证 身份治理与管理

AidaV2荣获全球DEAI黑客松奖项,革新去中心化金融生态

科技汇

多线程开发常见问题汇总

量贩潮汐·WholesaleTide

多线程

Java 地位岌岌可危?Python、JavaScript 借 AI 疯狂 “攻城略地”,Java 反击战打响

飞算JavaAI开发助手

当心!片段代码正悄然侵蚀你的编程思维根基

飞算JavaAI开发助手

天润融通AI Agent打造“AI金牌导购”,全面升级车企客户服务体验

天润融通

告别"运维盲区":基于LLMOps的智能观测系统实践指南

嘉为蓝鲸

可观测性 AIOPS 智能运维

ITSM运营:ITSM事件管理的持续改进策略

嘉为蓝鲸

AIOPS ITSM 智能运维

如何使用通义灵码学习JavaScript和DOM

阿里云云效

JavaScript 云计算

亮数据爬取API爬取亚马逊电商平台实战教程

知识浅谈

爬虫技术

天润融通走进天虹|大模型驱动,助力零售行业服务质效飞跃

天润融通

告别数据孤岛:Telegraf-loTDB 实现一站式监控数据闭环

Apache IoTDB

《Operating System Concepts》阅读笔记:p587-p596

codists

操作系统

黑龙江三级等保-信息安全等级保护制度中的重要级别

黑龙江陆陆信息测评部

Python并发总结:多线程、多进程与异步编程

不在线第一只蜗牛

Python Linux

JVM实战—频繁YGC和频繁FGC的后果

量贩潮汐·WholesaleTide

Java JVM

HTML 开发者的智能助手:通义灵码在 VSCode 中的应用

阿里云云效

html 云计算 前端

吐血整理:3 款小众但超强的免费 AI 编程利器,开发效率一飞冲天

飞算JavaAI开发助手

自动化 + 智能化重构运维价值:从成本中心到业务增长引擎的蜕变

嘉为蓝鲸

AIOPS 智能运维 降本增效

什么是模型上下文协议(MCP)?

镜舟科技

数据交互 模型上下文协议 AI交互范式 统一接口 StarRocks MCP 服务器

多云原生,更稳更省,火山引擎多云CDN推出免费使用3个月,1元10TB特惠专场

火山引擎边缘云

CDN CDN加速 CDN带宽

SvelteKit 最新中文文档教程(18)—— 浅层路由和 Packaging

冴羽

Vue 前端 React Svelte SveteKit

互联网寒冬再临,掌握这个编程技能让你稳如泰山(附转型秘籍)

飞算JavaAI开发助手

如何使用通义灵码学习JavaScript和DOM

阿里巴巴云原生

JavaScript 人工智能 前端

从神话到现实:大模型在运维中的三大核心价值重构

嘉为蓝鲸

智能运维 #WeOps

获权威推荐!融云荣登「铸基计划」年度全景图三大核心板块

融云 RongCloud

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