写点什么

分布式系统实战经验

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

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

关注

评论

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

迎产业东风,柔性电子供应链企业的机会与挑战

华秋电子

PCB

站群服务器租用:为您的多站点网络提供支持

一只扑棱蛾子

站群服务器

Arbitrum公链系统开发丨ARB链代币质押挖矿系统开发

l8l259l3365

Pyth

小度携手可口可乐,AIGC成就未来3000年时空畅想

新消费日报

软件测试|Python基础之面向对象(二)

霍格沃兹测试开发学社

通过UltraSync减轻主节点负担、提升业务系统性能,AntDB如何做到?

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

软件测试|Python内置模块使用(一)

霍格沃兹测试开发学社

AI和语音助手:智能助手的展露头角

测吧(北京)科技有限公司

测试

AI和语言翻译:跨文化交流的帮手

测吧(北京)科技有限公司

测试

云起无垠参编的《软件物料清单(SBOM)发展洞察报告》正式发布

云起无垠

软件测试|Python基础之模块导入和使用

霍格沃兹测试开发学社

软件开发中的资料整理与归档,软件产品开发文档合集

金陵老街

项目管理 文档管理软件

AI和社交媒体:改变信息传播的方式

测吧(北京)科技有限公司

测试

HarmonyOS应用开发Web组件基本属性应用和事件

HarmonyOS开发者

HarmonyOS

SpringBoot拦截器和动态代理有什么区别?

王磊

Java Java面试题

使用br工具备份到local的一些操作

TiDB 社区干货传送门

迁移 备份 & 恢复 6.x 实践

TiDB Serverless Branching:通过数据库分支简化应用开发流程

TiDB 社区干货传送门

达梦数据库接入案例—基于EntityFrameworkCore 6.x

为自己带盐

.net core 达梦 EFCore

软件测试|Python基础之数据库

霍格沃兹测试开发学社

软件测试|Python基础之面向对象(四)

霍格沃兹测试开发学社

软件测试|Python基础之包的使用和软件开发目录规范及常用内置模块

霍格沃兹测试开发学社

AI和智能家居:打造智慧生活

测吧(北京)科技有限公司

测试

软件测试|MySQL安装最全教程

霍格沃兹测试开发学社

OpenHarmony系统能力SystemCapability使用指南

OpenHarmony开发者

OpenHarmony

干货 | Elasticsearch Java 客户端演进历史和选型指南

腾讯云大数据

ES

【华秋干货铺】软硬结合板的阻抗计算,你会吗?

华秋电子

PCB

软件测试|Python基础之面向对象(三)

霍格沃兹测试开发学社

如何用华为云ModelArts平台玩转Llama2

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号9月PK榜

软件测试|Python内置模块使用(二)

霍格沃兹测试开发学社

AI和安全性:网络安全的挑战与机会

测吧(北京)科技有限公司

测试

在Mac上浏览Android设备文件:MacDroid pro最新中文版

胖墩儿不胖y

Mac软件 传输文件 文件传输工具

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