50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

分布式系统实战经验

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

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

关注

评论

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

Spring Boot 实战(11)整合MyBatis-Plus,mysql原理相关文章

Java 程序员 后端

Spring Boot 谷粒学院、谷粒商城项目问题汇总,tomcat面试题

Java 程序员 后端

Spring--JdbcTemplate基本使用,三年老Java经验面经

Java 程序员 后端

spring-cloud-kubernetes的服务发现和轮询实战(含熔断)

Java 程序员 后端

Springboot 使用Quartz定时器执行多个定时任务 配置篇

Java 程序员 后端

springboot+mybatis+druid整合笔记,java程序设计案例教程课后答案

Java 程序员 后端

Spring Cloud 分布式事务详解及LCN解决方案,mybatis底层原理

Java 程序员 后端

Spring Cloud入门-Consul服务注册发现与配置中心(Hoxton版本)

Java 程序员 后端

Spring Cloud Stream 编程模型的基础知识,很多老司机都不知道

Java 程序员 后端

Spring Retry不为人知的技巧,你知道几个?,java程序设计精编教程第三版答案耿祥义

Java 程序员 后端

【LeetCode】提莫攻击Java题解

Albert

算法 LeetCode 11月日更

spring boot增删改查,javassm框架面试重点

Java 程序员 后端

Spring Cloud Gateway限流实战,万字详解微服务的哨兵机制

Java 程序员 后端

Spring Cloud:第四章:Hystrix断路器,mybatis面试常问问题

Java 程序员 后端

Spring MVC框架:第十二章:运行原理,腾讯Java面试题

Java 程序员 后端

002|CocoaPods 优化知多少?

棒棒彬👻

CocoaPods 认知偏差 工程能力 开源软件

Spring Cloud入门-Admin服务监控中心(Hoxton版本),java开发面试视频

Java 程序员 后端

springboot+Redis+Shiro,java编程技术高级八大类

Java 程序员 后端

Spring-boot使用logback实现日志配置,java自学视频网站

Java 程序员 后端

SpringBoot 实战:优雅的使用枚举参数(原理篇,这一次带你搞懂Spring代理创建过程

Java 程序员 后端

Springboot 整合Shiro 轻量级权限框架,从数据库设计开始带你快速上手shiro

Java 程序员 后端

【Flutter 专题】13 图解最基础的 http 请求方式

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

Spring Boot核心技术之Rest映射以及源码的分析,java从入门到放弃

Java 程序员 后端

SpringBoot + Vue 开发前后端分离的旅游管理系统,unixlinux编程实践教程

Java 程序员 后端

Spring 全家桶,永远滴神,spring框架教程

Java 程序员 后端

Spring02:基本配置与依赖注入,贼好用的Java学习路线集合

Java 程序员 后端

Spring cloud stream【入门介绍】,java开发实例大全云盘

Java 程序员 后端

Spring 使用Validation 验证框架的问题详解,springboot原理

Java 程序员 后端

SpringBoot+Redis基本操作,实现排行榜功能(1),springmvc教程下载

Java 程序员 后端

Spring Boot 实战(9) springboot 整合 JPA,2021必看

Java 程序员 后端

spring boot 整合Swagger2 构建API文档,linux学习路线图

Java 程序员 后端

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