“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

分布式系统实战经验

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

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

关注

评论

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

浅谈服务接口的高可用设计

京东科技开发者

负载均衡 接口 后端 混沌工程 企业号 1 月 PK 榜

还在自建MQTT物联网平台?快来试试开源MQTT托管型物联网平台——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

Python报错:ImportError cannot import name 'imresize'

代码的路

Python

Linux安装与卸载软件

代码的路

Linux

电脑音视频暂停再继续,声音突然变大

代码的路

windows

如何使用免适配云鹰模组实现多网可切?——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

微信小程序实验案例:简易成语小词典

TiAmo

小程序 微信小程序

软件测试/测试开发 | 静态扫描体系集成

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

pip安装报错:UnicodeDecodeError 'utf-8' codec can't decode byte 0xc3 in position 4

代码的路

Python

conda安装报错:PermissionError [Errno 13] Permission denied

代码的路

Python

粒子滤波 PF(Particle filter)算法

代码的路

机器学习

再获殊荣!图数据库 NebulaGraph 获得 ITPUB 2022 创新产品奖

最新动态

2022年IAA行业品类年度表现总结

易观分析

视频 IAA

互联网医疗月度观察:规范化、合法化的网络售药新时代到来

易观分析

互联网医疗

如何使用企业账户进行协作?

Towify

智能图像处理:基于边缘去除和迭代式内容矫正的复杂文档图像校正

合合技术团队

图像处理 图像预处理 人工智能’

Vue实现登录功能

代码的路

Vue

35张图,直观理解Stable Diffusion

OneFlow

人工智能 深度学习 Stable Diffusion

【1.6-1.13】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

PyFlink 最新进展解读及典型应用场景介绍

Apache Flink

大数据 flink 实时计算

Python报错:ModuleNotFoundError: No module named 'xxx'

代码的路

Python

中移链合约常用开发介绍 (二)多索引表的使用

BSN研习社

如何使用滑块实现切换图片功能?

Towify

10分钟玩转阿里云物联网平台设备接入、管理、运维——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

Win10桌面图标显示问题

代码的路

windows

数维图可视化编辑器超10项功能升级,您的需求就在其中

2D3D前端可视化开发

数据可视化 数字孪生 三维可视化 web3d web组态软件

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

九章云极DataCanvas

JDBC的基本概念

代码的路

Java

Spring获取Bean的9种方式

小小怪下士

Java spring 程序员 springboot

mmdetection训练数据遇到的问题

代码的路

Python 机器学习

收官!OceanBase第五届技术征文大赛获奖名单公布!

OceanBase 数据库

数据库 oceanbase

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