2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

分布式系统实战经验

  • 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:005273
用户头像

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

关注

评论

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

Docker Compose快速部署多容器服务实战

闫同学

Docker 容器 11月月更

分布式系统设计之常见的负载均衡算法

闫同学

负载均衡 11月月更 分布式系统设计

前端面试中小型公司都考些什么

loveX001

JavaScript

数据指标体系搭建步骤

穿过生命散发芬芳

11月月更 数据指标体系

React源码分析4-深度理解diff算法

goClient1992

React

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

前端代码规范常见错误 一

默默的成长

前端 Vue 3 11月月更

教学:制作 GitHub 同步近期博客卡片

小鑫同学

前端 Github' 11月月更

IO原理(二):多路复用

苏格拉格拉

reactor nio epoll IO多路复用 IO模型

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

前端二面react面试题(附答案)

beifeng1996

React

kubernetes下的jenkins如何设置maven

程序员欣宸

maven jenkins 11月月更

主成分分析PCA与奇异值分解SVD-降维的实现方法

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

网络安全之命令执行漏洞复现

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

JS in CSS:一键支持响应式布局

iofod jude

前端 后端 低代码 iofod

裁员潮血洗硅谷是坏事还是好事

HoneyMoose

更快更稳更易用: Flink 自适应批处理能力演进

Apache Flink

大数据 flink

React源码分析2-深入理解fiber

goClient1992

React

2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,

福大大架构师每日一题

算法 rust 福大大

简单组合逻辑电路

芯动大师

Verilog LED数码管 11月月更

Go易错集锦、优秀开源包、实战案例合集

Go学堂

Go 内容合集 签约计划第二季 技术专题合集

通宵整理的react面试题并附上自己的答案

beifeng1996

React

官宣|Apache Flink 1.16 发布公告

Apache Flink

自制操作系统日记(6):静态桌面初步

操作系统

拿到大厂前端offer的前端开发是怎么回答面试题的

loveX001

JavaScript

面试官:说说React-SSR的原理

beifeng1996

React

【愚公系列】2022年11月 微信小程序-app.json配置属性之requiredBackgroundModes

愚公搬代码

11月月更

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

当前API安全产品现状

阿泽🧸

API 11月月更

一个程序员眼中的裁员潮

HoneyMoose

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