【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

响应式世界中的可伸缩性

  • 2014-05-06
  • 本文字数:808 字

    阅读完需:约 3 分钟

关于可伸缩性, Jonas Bonér 最近在第一届 React Conference 上的演讲中指出,要使系统真正地可伸缩,我们必须将访问局部性( locality of reference )最大化,同时将竞争( contention )最小化。

Jonas 是 Akka 项目的创建者, Typesafe 的 CTO。他认为,通过使用无共享架构( share nothing architecture ),并基于事件驱动基础设施构建( event-driven foundation ),我们可以编写真正可伸缩的系统。

Jonas 将性能定义为一个系统能够提供特定响应时间的能力,主要有三个方面:延迟、吞吐量和可伸缩性。他对可伸缩性的定义是,系统能够维持该响应时间的能力。

纵向伸缩(Scale up)意味着我们需要以有效的方式利用多核架构,而且在 Jonas 看来,干净的代码和良好的实践对实现纵向伸缩至关重要——使用做一件事和简单逻辑的小方法。有两个方面非常重要:最大化访问局部性,确保数据保存在处理上下文的本地极为重要;竞争是可伸缩性的第二个杀手,例如过度使用同步锁。

一个一般性的原则是不要阻塞。通过使用异步,完全拥抱异步消息传递,我们将得到一个设计上支持并发的系统。不同于处理低层次的线程与锁,我们可以将抽象级别提高到处理流经系统的事件。

Jonas 认为,从异步编程入手,一开始碰到的本质复杂性(essential complexity)的冲击会更高一些,但这种复杂性通常比较稳定,伴生的偶发复杂性非常低。而在同步系统中,一开始会感觉很熟悉,只有较低的本质复杂性,但随着系统的成长,很容易失控,我们可能会沉没在使用共享互斥状态和紧耦合的系统所伴生的偶发复杂性中。

要真正地可伸缩,我们需要一种方式来向系统中添加资源,水平伸缩(scale out)就是关于管理弹性、添加节点或资源的。

按需伸缩是一个重要因素,有效利用集群云计算架构,能够在线添加资源,从而支持我们的应用对负载的增减做出反应。

Jonas 的结论是,通过坚守那些长期以来已经证明有效的核心原则,我们可以编写真正可伸缩的系统。

查看英文原文: Scalability in a Reactive World

2014-05-06 02:381630
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 129.2 次阅读, 收获喜欢 34 次。

关注

评论

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

开源星「001号」落地 OpenMLDB,欢迎登陆赢神秘大礼包!

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

谈谈产品如何定位

产品海豚湾

产品经理 产品定位 商业洞察 10月月更 SaaS 产品

打造友邻式多元生态,支撑工商银行、平安科技、中国人寿财险、杭州银行的创新实践

TiDB 社区干货传送门

数据库前沿趋势

一个 ExpressionChangedAfterItHasBeenCheckedError 错误的解决过程

Jerry Wang

typescript 前端开发 angular web开发 10月月更

C++学习---cstdio的源码学习分析07-刷新文件流函数fflush

桑榆

c++ 源码分析 10月月更

Python基础(九) | time random collections itertools标准库详解

timerring

random Collections time 10月月更

学习大数据培训是否比较靠谱

小谷哥

Surpass Day——Java语法基础

胖虎不秃头

Java 10月月更 se

大数据ELK(十五):Elasticsearch SQL简单介绍

Lansonli

ES 10月月更

刘奇:能否掌控复杂性,决定着分布式数据库的生死存亡

TiDB 社区干货传送门

数据库前沿趋势

拼搏一周!刷了1000道Java高频面试题喜提阿里offer,定级P7

Geek_0c76c3

Java 数据库 开源 程序员 架构

Python基础(八) | 万字详解深浅拷贝、生成器、迭代器以及装饰器

timerring

装饰器 Python Monad 迭代器 生成器 10月月更

前端培训机构选择需要注意什么?

小谷哥

大数据开发的方法有哪些

小谷哥

Surpass Day——Java面向对象的封装、构造方法

胖虎不秃头

Java 10月月更 se

OpenMLDB Meetup No.5 会议纪要

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

直播预告 | 第四范式Tech Day火热来袭,OpenMLDB 与你 8月11日线上见

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

免费申请和使用IntelliJ IDEA商业版License指南

程序员欣宸

ide 10月月更 ieda

深度解密 OpenMLDB 毫秒级实时在线特征计算引擎

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

TiKV缩容下线异常处理的三板斧

TiDB 社区干货传送门

实践案例 管理与运维 故障排查/诊断 扩/缩容

Python基础(十) | Numpy详细教程

timerring

Numpy库 10月月更

【Nacos源码之配置管理 五】为什么把配置文件Dump到磁盘中

石臻臻的杂货铺

nacos 10月月更

java培训与线上自学哪个比较好

小谷哥

【LeetCode】最大升序子数组和Java题解

Albert

LeetCode 10月月更

【Nacos源码之配置管理 六】集群模式下服务器之间是如何互相感知的

石臻臻的杂货铺

10月月更 nacso

前端培训学习路线比较靠谱

小谷哥

Surpass Day——Java面向对象的创建和使用

胖虎不秃头

Java 10月月更 se

TiDB 数据冷热存储分离测试

TiDB 社区干货传送门

实践案例 管理与运维 新版本/特性解读 数据库架构设计

OpenMLDB 开源一周年,感恩遇见

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Redis--Redis集群、缓存穿透、缓存击穿、缓存雪崩

Java学术趴

10月月更

OpenMLDB + OneFlow: 手把手教你快速链接特征工程到模型训练

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

响应式世界中的可伸缩性_语言 & 开发_Jan Stenberg_InfoQ精选文章