写点什么

关于构建可进化的系统

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

评论

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

通过 Serverless Devs 部署静态网站

刘宇

云计算 Serverless cicd Serverless Devs

初章

阿丞

Serverless架构下传统框架迁移方案与策略

刘宇

Serverless Serverless Devs 传统框架

Serverless架构下如何对应用进行调试

刘宇

Serverless 代码调试

如何没话找话,聊得不那么尬?(15/28)

赵新龙

28天写作

Serverless Devs Model 与模型简介

刘宇

让发布更安全的:线上异动感知

刘宇

云计算 Serverless 云原生 Serverless Devs

Serverless架构下PaddleOCR项目开发与部署

刘宇

人工智能 paddle Serverless Serverless Devs

6 款开源 Web 性能优化辅助工具推荐

编程江湖

前端

基于Gitee Go的函数代码更新与版本发布

刘宇

Serverless cicd gitee Serverless Devs

基于Github Action的SAE自动化流程案例

刘宇

Serverless SAE Serverless Devs

Serverless 研发效能的变革:Serverless Devs | 引航计划|云原生

刘宇

Serverless 云原生 内容合集 签约计划第二季 Serverless Devs

Golang 问题排查指南

得物技术

Go golang 后端 root

从工具看函数资源评估

刘宇

Serverless 函数计算 Serverless Devs

Spring Boot 2 WebFlux 系列教程分享| 内容合集

程序员泥瓦匠

内容合集 签约计划第二季

Custom Container的CI/CD最佳实践案例

刘宇

Serverless cicd 容器镜像 Serverless Devs

Serverless Registry Model

刘宇

Vim 编辑器|批量注释与批量取消注释

AlwaysBeta

vim Linux

Serverless Devs 与 CI/CD 平台/工具集成

刘宇

Serverless cicd Serverless Devs

Serverless架构下如何上传文件与持久化文件

刘宇

在线JSON转typescript工具

入门小站

工具

Serverless User Model

刘宇

Spring Boot 2 教程:WebFlux 集成测试及部署(十)

程序员泥瓦匠

Serverless Desktop 上手

刘宇

Serverless Serverless Devs

模型升级在 Serverless 架构下的实现与应用

刘宇

人工智能 Serverless PyTorch Serverless Devs

Serverless 架构开发/优化案例

刘宇

Prometheus Exporter (二十七)Memcached Exporter

耳东@Erdong

memcached Prometheus 28天写作 exporter 12月日更

Serverless架构下Tensorflow与目标检测系统

刘宇

tensorflow Serverless 目标检测 Serverless Devs

大数据开发之常用命令大全

@零度

大数据

虎符重磅启动迎新活动:新用户注册即送VIP2和200USDT 合约体验金

区块链前沿News

Hoo虎符 虎符交易所 虎符送VIP

跟小海一起看下雪——用HTML、CSS和JS实现简单的下雪特效

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

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