阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

分布式系统实战经验

  • 2016-08-11
  • 本文字数:1066 字

    阅读完需:约 3 分钟

Camille Fournier 在接受 Stefan Tilkov 采访时指出,作为软件架构师和开发人员,我们生活在一个分布式的世界中,为了简化分布式系统的构建,我们要形成一种意识,企业的价值在哪里,哪里可以合理地去冒险,哪里不可以。我们应该只处理那些真正需要解决的问题。

Fournier 以前曾在 Rent the Runway Goldman Sachs 任职,她最喜欢 Leslie Lamport 的分布式系统定义:

分布式系统是其中一台计算机出现故障,可以导致你自己的计算机不可用的系统。

在 Fournier 看来,Lamports 的定义真正地抓住了分布式系统的本质,那不是一件简单的事情,它会出问题,而且其复杂性是如此之高,都不可能很容易地推断出来。

人们常常因为流程中有网络就将系统看作是分布式的,但一个只有一台服务器和一个 Web 浏览器构成的系统,或者一个传统的三层架构,不是Fournier 通常所定义的分布式系统。她认为,那只会让问题不必要地复杂化;我们无需为尚未遇到的问题担心。即使你构建了一个有一定复杂性的联网系统,那也并不一定意味着,你要为构建好一个可用的系统而必须考虑整个分布式系统领域的复杂性。

在Fournier 看来,只有当你真地要贯穿许多不同的系统时,分布式才开始成为应该处理的问题。使用一种服务架构,尤其是微服务类型的架构,就会开始遇到一些复杂的问题,但未必是可能在大规模分布式系统中出现的所有问题。她指出,分布式系统是一个工程问题,同时也是一个理论问题。也就是说,你必须运用工程问题所需要的理论解决它,但也不需要更多,只要足够解决问题就可以了。

Fournier 认为,在考虑具有一定规模(不需要像 Netflix 那么庞大)的软件的时候,服务架构,不管你是否称之为微服务,是一个非常明智的方式。在有几十名开发人员的时候,考虑将系统分成可以独立操作的实体非常有价值。把那些实体放入服务,就可以实现独立开发和数据所有权。单体架构本身并没有错,但她指出,分布式系统数量增加的原因并不只是因为我们真正需要,还是因为云的存在让构建这样的系统更加简单了。

状态让一切变得复杂。在 Fournier 看来,在考虑构建分布式系统时,其中一个重要的方面是哪里关注相干和一致状态,即在哪些部分你不希望丢失数据或让人们看到不同的状态。对于这些部分,她一般喜欢使用事务和传统的关系型数据库。一个例子是订单处理,在这种情况下,你希望确保能够完成所有的订单。在其他部分,你可能不那么关心一致性,人们看到稍微有点过期的数据,或者数据丢失,都没有问题,因为很容易重新创建。这时,Fournier 认为完全可以使用 NoSQL 数据库。

查看英文原文 Experiences Working with Real World Distributed Systems

2016-08-11 19:004921
用户头像

发布了 1008 篇内容, 共 374.3 次阅读, 收获喜欢 341 次。

关注

评论

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

编辑距离的计算

zikcheng

算法 编辑距离

识别代码中的坏味道(四)

Page

敏捷开发 面向对象 重构 CleanCode 代码坏味道

程序员的晚餐 | 5 月 19 日 蒜香鸡腿,味道令人惊讶

清远

美食

视频 | 5款免费翻译软件实测对比,从花花董花花的被删微博到北京话“你丫给我站住了”都能翻译

赵新龙

翻译

【教你如何写作】参与创作,领取 InfoQ 编辑训练营内训课程

InfoQ写作社区官方

写作平台 投稿 热门活动

单例模式——独一无二的对象

大头星

Java 面试 设计模式 单例模式

物联网技术栈之通信技术

老任物联网杂谈

物联网 通信

SQL 找出 100 以内的质数

zero

sql MySQ

比特币为什么值两万亿?

Haiyung

比特币

Java开发架构篇:初识领域驱动设计DDD落地

小傅哥

设计模式 领域驱动设计 DDD 小傅哥 架构设计

工信部报告显示:电话越打越少 、短信越发越多……这是怎么回事?

赵新龙

短信 工信部

spring事务原理

年轮

spring 源码分析

干货分享:分布式场景之刚性事务-2PC详解

奈学教育

分布式

Flink Weekly | 每周社区动态更新-20200513

Apache Flink

大数据 flink 实时计算

MySQL实战四十五讲基础篇总结(一)

一个有志气的DB

MySQL

为什么window.open只是打开了一个空白页

阡陌r

Java 踩坑 网络协议

你是不是对副业有什么误解?

一尘观世界

程序员 副业 认知提升 思维方式 格局

Flink 与 Hive 的磨合期

Apache Flink

大数据 flink 实时计算

回顾 | Apache Flink Meetup 杭州站圆满结束(附PPT下载)

Apache Flink

大数据 flink 流计算 实时计算

都在这儿了!5月 Flink 社区发版、更新汇总

Apache Flink

大数据 flink 流计算 实时计算

亲密爱人

Janenesome

爱情

有趣的解谜:Python Challenge

封不羁

Python

一款Python实用神器,5 行 Python 代码 实现一键批量扣图

狂师

Python 学习 效率工具 开发者工具 开发

如何讲好故事

Bob Jiang

【玩转写作社区】Markdown & 快捷键详解

InfoQ写作社区官方

写作平台 markdown 编辑器 快捷键 玩转写作平台

MySQL实战四十五讲基础篇总结(三)

一个有志气的DB

MySQL mysql事务

MySQL实战四十五讲基础篇总结(二)

一个有志气的DB

MySQL 日志

任何事物当中的百分之九十都是垃圾?

池建强

互联网 信息噪声

如何成为一名具备产品思维的软件工程师?

顾强

产品 开发者 职场

使用gitlab ci构建IOS包并发送通知消息到企业微信

Zoe

ios ci gitlab

霸榜 GitHub,一款开源的 Linux 神器!

GitHubDaily

GitHub Linux 编程 开发者工具 计算机网络

分布式系统实战经验_语言 & 开发_Jan Stenberg_InfoQ精选文章