关于扩展技术的几个基本概念

简介: 关于扩展技术的几个基本概念

  如何进行扩展

  关于扩展技术的几个基本概念:

  Scale-up vs Scale-out

  Scale-up 即直接提升机器的配置规格,是最直接的扩展手段,计算和存储均可通过 Scale-up 的方式来进行扩展,但扩展空间有限,相对成本较高。Scale-out 即增加更多的机器进来,是相对成本更低、更灵活的手段,但需要相关组件具备能 Scale-out 的能力。

  存储和计算分离

  存储和计算是两个不同维度的资源,如果强绑定会极大限制扩展性。对数据系统来说,应用节点和存储节点分离就是应用了存储计算分离的设计思想,让应用和存储都能独立扩展。

  Scale-out 具备更好的灵活性和经济性,计算和存储进行 Scale-out 的常见技术手段包括:

  存储 Scale-out

  通常采用数据分片技术,将数据分散到多台机器上。

  计算 Scale-out

  基于状态路由计算:通常用于状态迁移代价大的数据架构,比如数据库的分库分表。分库分表的扩展需要进行数据复制,所以通常需要提前规划,根据数据所在分片来路由计算。

  基于计算复制状态:如果状态能非常灵活的复制或者是共享,那可基于计算来复制状态,是一种更灵活的计算扩展架构。比如说基于共享存储的大数据计算架构,可灵活调度任意计算节点对数据进行处理。

  无状态计算:计算不依赖任何状态,可以发生在任意节点上,所以计算节点可非常容易实现 Scale-out,但需要解决计算调度问题。常见 Web 应用中的 LoadBalancer 后置一堆 Web Server 就是一个简单的无状态计算扩展架构。

  有状态计算:计算依赖状态,计算的扩展依赖状态的迁移。如果状态不可迁移,那计算的扩展只能采取 Scale-up 的方式。如果状态可迁移,那计算就可实现 Scale-out,此时计算的可扩展性依赖于状态迁移的灵活性。对于可 Scale-out 的计算我们分为两类实现方式

目录
相关文章
|
2月前
|
网络协议 网络虚拟化 数据安全/隐私保护
NAPT特性与配置实践分享
【4月更文挑战第1天】NAPT特性与配置实践分享
95 5
|
11月前
|
安全 编译器 C语言
c++学习之c++对c的扩展1
c++学习之c++对c的扩展1
88 0
|
11月前
|
编译器 C语言 C++
【C++】---基础特性
【C++】---基础特性
65 0
|
12月前
|
存储 Kubernetes 负载均衡
K8S基础篇:概念与架构
**Kubernetes** 是一个可移植的、可扩展的开源平台,用于**管理容器化的工作负载和服务,可促进声明式配置和自动化**。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用
299 2
K8S基础篇:概念与架构
|
11月前
|
编译器 C语言 C++
c++学习之c++对c的扩展2
c++学习之c++对c的扩展2
57 0
|
弹性计算 容灾 网络架构
如何创建一个多活容灾的应用底层架构
如何创建一个多活容灾的应用底层架构
|
设计模式 开发框架 前端开发
设计概念的统一语言
设计概念的统一语言
|
存储 Java 编译器
|
域名解析 缓存 网络协议
前端基础的几个概念
《基础系列》
121 0
|
存储 缓存 关系型数据库
LotusDB 设计与实现—1 基本概念
LotusDB 是一个基于 LSM Tree 进行设计,并结合 B+ 树优势的单机 KV 存储引擎,读写性能稳定、快速。
161 0
LotusDB 设计与实现—1 基本概念