阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

分布式系统实战经验

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

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

关注

评论

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

Baklib知识分享|制作网站FAQ需要注意哪些内容?

Baklib

2022-10-12:以下go语言代码输出什么?A:1;B:2;C:panic;D:不能编译。 package main import “fmt“ func main() { m := m

福大大架构师每日一题

golang 福大大 选择题

内网渗透-IPC$横向控制OA系统【网络安全】

网络安全学海

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

2022 Java零基础必备 简单易学 Eclipse免费下载安装+JDK环境搭建一站式捆绑服务到底的教程 足够全、足够详细、足够劲爆 最关键可以一直让你免费使用!

极客小俊

eclipse 工具 开发工具 环境搭建 Java 开发

我决定以后一直使用Eclipse了 因为它也可以安装集成PyDec插件来实现Python开发了 哇哈哈哈

极客小俊

Python 开发环境搭建 eclipse+pyhton Python编译器 新手学编程

Java Lambda 表达式

Yeats_Liao

后端 Java core 10月月更

企业级低代码中“自动化工作流”的5大优势!

优秀

自动化 工作流 企业级低代码

数字经济时代,企业应该如何搭建数字体验平台(DXP)?

Baklib

客户体验管理

【愚公系列】2022年10月 Go教学课程 026-结构体

愚公搬代码

10月月更

重磅 | 九科加入麒麟生态图谱,携手共建自主可控信创生态

九科Ninetech

VUE 组件的计算属性

默默的成长

Vue 前端 10月月更

又一家!天数智芯天垓100 产品卡与龙蜥操作系统完成产品兼容互认证

OpenAnolis小助手

开源 适配 龙蜥操作系统 天数智芯 兼容

支撑阿里“双十一”的消息中间件,带你云淡风轻面对高并发

图灵社区

RocketMQ 中间件 架构师 消息中间件

Baklib知识分享|企业办公必备利器,在线协作文

Baklib

在线协作文档

Vue组件入门(三)插槽和动态组件

Augus

Vue 3 10月月更

MySQL高级--性能优化查询截取分析

Java学术趴

10月月更

Go 语言泛型编程之切片

宇宙之一粟

Go 泛型 泛型编程 10月月更

Java 序列化与反序列化

Yeats_Liao

后端 Java core 10月月更

数据质量监控,你一直都做错了

雨果

数据质量

干货|什么是特性团队/功能团队(FeatureTeam)

laofo

Scrum 研发效能 PMO 敏捷精益 敏捷研发

Vue-监听使用方法和过滤器

默默的成长

Vue 前端 10月月更

一颗石榴给QA带来的启示

BY林子

软件测试 敏捷测试 测试工程师 敏捷QA

DevOps 与 DataOps 相关吗?

雨果

DataOps

贤鱼的刷题日常--P1548 [NOIP1997 普及组] 棋盘问题

贤鱼很忙

c++ CSP 10月月更

贤鱼的刷题日常--P2671 [NOIP2015 普及组] 求和

贤鱼很忙

c++ 10月月更 题解

记录第三天-Vue组件

默默的成长

Vue 前端 10月月更

设备端零改动迁移实战——实践类

阿里云AIoT

安全 物联网 开发工具 迁移 企业实例

Spring Boot「04」Annotations 01

Samson

Java spring 学习笔记 spring-boot 10月月更

【Go】gitlab 内部 Go 组件 Module 私有化

非晓为骁

go语言 包管理 go module go mod

同行四载,法大大携手SAP共筑数智未来

ToB行业头条

微服务与 API有什么区别?

雨果

微服务 数据api

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