Aerospike-Architecture系列之系统概述(System Overview)

系统概述(System Overview)

Aerospike是一个分布式可扩展的NoSql数据库,为一下三个主要目标而构建:

  • 创建一个满足当今网络平台应用的弹性,可扩展平台
  • 提供与传统数据库一样的鲁棒性和可靠性(例如,ACID)
  • 提供操作效率(最小人工参与)

最早发布于Proceedings of VLDB (Very Large Databases) in 2011,Aerospike架构包括三层:

  1. 集群可感知客户端层(Client Layer )包括实现Aerospike API的开源客户端函数库,追踪节点并感知数据在集群中的所在位置
  2. 自管理集群( Clustering)与数据分布层( Data Distribution Layer)监控集群通讯与自动故障转移,数据复制,跨数据中心同步,智能再平衡,数据迁移
  3. flash-optimized数据存储层(Data Storage)可靠存储数据于内存和闪存

客户端层

Aerospike“智能客户端”为速度而设计。它被实现为一个开源可链接库用于C、c#、Java、PHP和Python开发,开发者可用自由按需发布或修改。客户端包括以下内容

  • 实现Aerospike API,通过客户端-服务器协议与集群直连
  • 追踪节点感知数据存储位置,当节点启动或停止时立即感知集群配置变化。
  • 为提高效率实现TCP/IP连接池。检测非集群节点失败级别的事务失败并从新路由事务到数据副本
  • 透明地将请求直接发送到节点的数据并根据需要重试或重新请求,一个例子是在集群重新配置期间。

这种架构减少了事务延迟,分流集群工作并消除开发者工作量。它确保在节点启停是应用不必重启。总之,它消除了对于额外集群管理服务器或代理服务器的需要。

分布层

Aerospike “shared nothing”架构被设计目的是可以可靠存储TB及数据并支持自动容错、复制、跨数据中心同步。本层实现线性扩展及ACID
guarantees
。分布层也旨在消除手工操作,实现系统所有集群管理功能的自动化。它包括3个模块:

  • Cluster Management Module用于追踪集群节点。关键算法是确定哪些节点是集群的一部分的Paxos-like一致投票过程。Aerospike实现专门的心跳检测(主动与被动),用于监控节点间的连通性。
  • 当一个节点被添加或移除并且集群成员被确定,每个节点使用哈希算法讲主索引空间切分为数据切片并指派其拥有者。Data Migration Module(数据迁移模块)然后智能平衡跨集群中各节点的数据分布,并按照系统配置的复制因子确保每个数据块夸节点和夸数据中心复制。数据分割是纯粹算法,系统扩展无master,从而消除了在共享环境下的其他额外配置。
  • Transaction Processing Module(事务处理模块) 用于读写数据请求并保障一致性与隔离性,该模块负责

    1. Sync/Async Replication(同步/异步复制):为保证写一致性,在提交数据之前向所有副本传播更新并将结果返回客户端。
    2. Proxy (代理):集群重配置期间客户端可能出现短暂过期,透明代理请求到其他节点。
    3. Duplicate Resolution(副本解析):当集群从活动分区恢复时,解决不同数据副本之间的冲突。

      • 自动,以数据最晚的时间戳为标准
      • 用户驱动,为判定数据等级,所有数据副本返回应用。

Clustering

一旦启动集群,你可以在其他数据中心安装配置cross data-center replication的其他集群,如果集群崩溃,远端集群可以承接负载。

数据存储层

Aerospike以无模式数据模型存储键值对。组织数据的容器称作命名空间(namespaces),相当于RDBMS系统中库(databases )的概念。在namespace中数据被细分为各个集合(set)(类似数据库中的表)和记录(records )(类似数据库中的行)。在set中每个record有一个唯一的索引key以及一个或多个bin(类似数据库中的列)与之相关联。

  • set和bin不需要预先定义,可以再运行时添加。
  • bin中的值是强类型,包括任何被支持的数据类型。bin本身不是类型,所以相同的bin名可以是不同类型的数据。

为了快速访问,索引( primary keys 和 secondary
keys
)存储于内存,数据可以存储于内存或SSD硬盘。每个namespace可以分别配置,这样小的namespace可以存储在内存而大的namespace可以存储在SSD上。

数据层特别为提高速度同时减少硬件成本而设计。它可以作为缓冲层所有操作在内存中进行或者利用优化过的flash存储,后者数据不会丢失。

  • 1亿个keys只占用6.4GB空间。虽然key没有大小限制,每个key的有效存储也只有64bytes
  • 原生,多线程,多核Flash I/O以及Aerospike日志结构文件系统利用低水平的SSD读写模式。此外,写盘执行块写操作以减少延迟。这种方式绕过标准文件系统优化传统磁盘。
  • Smart Defragmenter(建智能碎片整理)和 Intelligent
    Evictor(
    智能清理器)。这些进程协同工作确保内存中的数据不丢失并安全的写入磁盘
    • 碎片整理程序跟踪活动记录在每一块并回收那些低于最低使用率的块
    • 清理器移除过期的记录并在系统达到高水位线时回收内存。过期时间配置在每个namespace中,record存活期从最后一次修改的时间开始计算,应用可以越过默认的数据生命周期重新指定过期时间,可以设定数据永不过期。

操作Aerospike

在传统(非分布式)数据库系统中,安装完软件你需要设置schema、创建数据库和表。这与Aerospike数据库有很大不同。

在分布式数据库中,数据分布在集群中的各个服务器上。这意味着你不能在一台服务器上访问到所有数据。

使用Aerospike 数据库,将按如下步骤创建和管理数据库:

  • 通过配置初始化数据库设置。按Aerospike的术语,当安装系统时一个库被称作一个namespace,集群中的每个节点必须指明每个namespace如何创建及副本数量。数据库讲在你重启服务的时候被创建
  • 通过应用程序执行数据库操作。当应用程序第一次引用set和bin的时候数据库schema被创建,应用程序简单地将数据存储于指定的bin。在Aerospike数据库中,任务通常由DBA通过命令行程序执行。
  • 根据需要修改配置文件。要更新namespace的配置参数,你需要动态修改或使用新的配置文件重启服务。

为满足性能和冗余需求,Aerospike需要规划和配置具体的节点数量,具体细节请参考 Capacity
Planning

可以通过management utilities 和 monitoring
tools
管理和监控急群众的节点。当添加节点或因升级维护需要宕机时集群会自动配置。当节点发生故障集群会再平衡负载,以便达到对最终用户影响最小的目的。

构建应用程序

一旦创建namespace,Aerospike提供了工具,允许您验证数据库存储数据正确性。在生产数据库,数据分布于集群当中。为了操作数据库你需要在应用程序中实例化智能客户端。智能终端是位置感知的,知道如何在集群中存储/检索数据而不影响性能。

Aerospike提供多种语言的API用于构建大数据应用程序。详情参考客户端手册

编译应用程序时,API函数库随智能终端被包含。为了在任何给定的时间确定数据位置,智能终端持续监控集群状态。智能客户端的位置感知技术确保在大多数情况下,可以再一跳之内检索到需要的数据。

当涉及到大数据应用时,例如基于web 的应用程序,情形如下:

智能客户端允许应用程序忽略数据分布细节。具体细节请参阅architecture guide

此文档中,我们将使用术语API及client interchangeably-集成Aerospike API的应用程序会同时集成智能终端。

原文链接: <http://www.aerospike.com/docs/architecture/>

时间: 2024-10-08 21:29:21

Aerospike-Architecture系列之系统概述(System Overview)的相关文章

Unix System Overview

Unix System Overview Introduction All operating systems provide services for programs they run. Typicalservices include executinga new program, opening a file, reading a file, allocatinga region of memory, getting the current time of day, and so on.

[MODX] 0. Mangement System Overview

In Modex, there are three tabs: Resoources, Elements & Files First: 'Files' is the place where to put javascript, css & images. I also want to put font, but it doesn't allow me to upload. Maybe upload fonts by SSH could be possible. Resources is t

Android 中文翻译:Build System Overview

Andrioid 编译系统是你用于build,test,runapp的工具箱.编译系统的运行,可以通过Android Studio的菜单或者是独立的命令行.通过编译系统的特性你可以做以下的事情: (1)      自定义,配置,扩展编译进程. (2)      用同一个project and modules创建拥有不同特性的apk. (3)      通过来源设置重用代码和资源. Android编译系统的自由性,能够在不修改您应用程序的核心源文件的基础上实现您想要的一切. 如何使用Android

Architecture of a Database System论文——第一章:概述

2019-12-01 09:50:06 让我们来考虑这样一个简单却很典型的数据库在机场的应用实例:查询某次航班的所有 旅客名单.这个操作所引发的的查询请求大致按如下方式被处理: 1.机场登机口的 PC 机(客户端)调用 API 与 DBMS 的客户端通信管理器(Client Communications Manager)建立网络连接.在一些情况下,客户端直接通过 ODBC 或 JDBC 连接协议与数据库服务器建立这种连接.这种处理方式被称为“两层”或者“客户端-服务器”.还有一些情形中,客户端与

AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读

又开了一个新的坑,笔者工作之后维护着一个 NoSQL 数据库.而笔者维护的数据库正是基于社区版本的 Aerospike打造而来.所以这个踩坑系列的文章属于工作总结型的内容,会将使用开发 Aerospike 的各种问题进行总结梳理,希望能够给予大家启发和帮助.第一篇开山之文,就先从Aerospike 公司在16年数据库顶会 VLDB的一篇论文 <Aerospike: Architecture of a Real Time Operational DBMS>展开,来高屋建瓴的审视一下 Aeropi

分布式系统(Distributed System)资料

这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多. <Reconfigurable Distributed Storage for Dynamic Networks> 介绍:这是一篇介绍在动态网络里面实现分布式系统重构的paper.论文的作者(导师)是MIT

Android Build System Ultimate Guide

Android Build System Ultimate Guide April 8,2013 Lately, Android Open Source Project has gone through various changes. For instance, Since JB Google decided to replace bluez bluetooth stack with an open source stack implemented by Broadcom claiming t

java io系列01之 &quot;目录&quot;

javaIO系列转载出处:http://www.cnblogs.com/skywang12345/p/io_01.html 该分类所有博文,均转载同一作者,后边不再累赘标名. java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream) 03. java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括Ou

MSDN Webcast 系列课程

云计算(Cloud) 云起龙骧系列课程 网络开发(Web) ASP.NET 4 风云之旅系列课程 ASP.NET 开发实践系列课程 MOSS2007 最佳实战 StepByStep 系列课程 Silverlight 3.0 探秘之旅系列课程 微软互联网平台系列课程 如何创建更好的 Silverlight 程序系列课程 Clubof.net 社交网站代码分析系列课程 ASP.NET 3.5 开发系列课程 IE8 开发新特性系列课程 Windows Live 汇聚你世界系列课程 Windows Li