写点什么

关于构建可进化的系统

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

评论

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

深入浅出 Java FileChannel 的堆外内存使用

Apache IoTDB

数字医疗时代的数据安全如何保障?

CECBC

墨天轮访谈 | 华为云温云博:从客户视角出发,GaussDB(for Redis)究竟“香”在哪里?

墨天轮

数据库 redis 华为云 国产数据库 键值数据库

JS Array数组几个循环实用方法总结

MegaQi

JavaScrip 测试发开 web前端开发

前端食堂技术周刊第 30 期:Vercel 支持零配置部署使用 pnpm 项目、React 新文档更新、Angular Roadmap、Remix Stacks

童欧巴

JavaScript 编程 前端 周刊 资讯

Flutter 路由及路由拦截跳转404

岛上码农

flutter ios Android开发 移动端 3月月更

Paxos vs. Raft:我们对共识算法达成共识了吗?

多颗糖

分布式系统 raft PAXOS

如何快速实现持续交付

阿里云云效

云计算 阿里云 软件开发 CI/CD 持续交付

《LeetCode 刷题报告》题解内容Ⅱ

謓泽

3月月更

VuePress 博客搭建系列 33 篇正式完结!

冴羽

JavaScript Vue 前端 vuepress 博客搭建

区块链等技术助力北京海关监管

CECBC

kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析

良凯尔

容器 云原生 kubeadm #Kubernetes# Kubernetes 集群

小程序电商业务微服务拆分及微服务基础设施选型

Geek_36cc7c

服务器防渗透--信息收集

喀拉峻

网络安全

黑匣子为什么难成为“云匣子”?

脑极体

Facebook 开源 Golang 实体框架 Ent 现已支持 TiDB

极客天地

云时代,租电脑还是初创型企业最好的选择吗?

阿里云弹性计算

远程办公 无影云电脑 初创型企业

异构注册中心机制在中国工商银行的探索实践

SOFAStack

GitHub 开源 分布式架构 注册中心 工商银行

[Day3]-[快慢指针]解决链表问题

方勇(gopher)

LeetCode 数据结构与算法

基于微信小程序的实验室预约小程序平台详细设计

CC同学

URL的四种形式对比说明

源字节1号

前端开发 后端开发 网站开发

融云猿桌派:35 岁程序员,正值当打之年,尚有星辰大海

融云 RongCloud

程序员

一文带你了解 Python 中的生成器

踏雪痕

Python 生成器 3月程序媛福利 3月月更

明天直播:如何测试硬件设备与龙蜥操作系统的兼容性?

OpenAnolis小助手

硬件 直播 开源社区 sig 兼容性

从二十年开源经历出发,70 后大龄程序员谈成长、困境与突围

TDengine

数据库 tdengine 开源

OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap

OceanBase 数据库

oceanbase OceanBase 开源

360大数据技术专家 程建云:IoTDB在360的落地实践 | Apache IoTDB Talk

Apache IoTDB

时序数据库 IoTDB Apache IoTDB

高层次人才一站式服务平台系统开发

a13823115807

“中本聪岛”加密乌托邦

CECBC

加密货币监控和区块链分析如何帮助避免加密货币欺诈?

CECBC

区块链架构下 智慧城市发展加速

CECBC

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