AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

分布式系统实战经验

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

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

关注

评论

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

linuxc获取文件内容

linux大本营

Linux

如何系统地学习Spring Boot?

博文视点Broadview

人工智能时代来临,殊不知低代码早已出手

加入高科技仿生人

人工智能 低代码 数智化 数智融合

5.10版本的linux内核pgtable_init函数解析

linux大本营

Linux内核

攻防大牛在身边,2023首届阿里云CTF 大赛冠军揭晓

Lily

5.10版本的linux内核setup_kmalloc_cache_index_table函数解析

linux大本营

内存管理 内存泄漏 Linux内核

c++生成pdf

linux大本营

C++ libHaru

洞见数字时代的创新原力,数云原力大会暨 2023TECH 第五届数字中国技术年会开幕

通明湖

DataX助力Oracle数据库迁移

白粥

数据迁移 DataX

作为前端你还不懂MutationObserver?那Out了

不叫猫先生

JavaScript 前端 三周年连更 MutationObserver

5.10版本的linux内核create_boot_cache函数解析

linux大本营

Linux内核

Wallys/QSDK/IPQ4019 and IPQ4029 chipsets support 20 km remote transmission

Cindy-wallys

IPQ4019 ipq4029

从“捐赠”到“接受捐赠”,这背后是openEuler的两次蜕变

Geek_2d6073

HSM加密机集群&监控方案

白粥

监控 集群 加密机

PVP2多屏幕演示投放软件:PVP2 ProVideoPlayer2 中文版

真大的脸盆

Mac Mac 软件 视频播放器 视频播放

测试Java初学者建议

FunTester

iOS MachineLearning 系列(5)—— 视频中的物体运动追踪

珲少

sougou的workflow的10个技术点

linux大本营

workflow 异步框架 C++

c语言把8个char类型的值(char中存放的是16进制值)转换成一个int类型代码

linux大本营

C语言 char int

耗时72天!终于把GitHub上热度最高的Java面试八股文整理出来了,涵盖多家大厂面试真题

架构师之道

Java 面试

软件测试/测试开发丨uiautomator2 自动化测试工具使用

测试人

软件测试 自动化测试 测试开发 uiautomator

用AI赋能基础教育,小度人工智能青竹公开课现已走进6所知名小学

科技热闻

软件测试/测试开发丨Linux 常用高频命令

测试人

Linux 软件测试 自动化测试 测试开发

为什么老有人想让我们“程序员”失业? | 社区征文

不叫猫先生

人工智能 程序人生 ChatGPT 三周年征文

升级企业数智化底座是数智化2.0阶段的“最优解”

用友BIP

用友iuap 用友技术大会 数智化底座 数智化2.0阶段

在 Kubernetes 中实施零信任的七条准则

NGINX开源社区

nginx Kubernetes

用友自主研发企业商用版TimensionDB时序数据库重磅发布!

用友BIP

数据库 用友iuap 用友技术大会 升级企业数智化底座

设计模式天花板,详解23种设计模式+7大设计原则

小小怪下士

Java 程序员 设计模式

招商基金数字化转型下的研发管理|标杆案例

万事ONES

法大大发布数智化签约管理平台,赋能企业高效增长

人称T客

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