国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > 数据库应用 > Aerospike-Architecture系列之系统概述(System Overview)

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

来源:程序员人生   发布时间:2015-04-13 08:20:06 阅读次数:4477次

系统概述(System Overview)

Aerospike是1个散布式可扩大的NoSql数据库,为1下3个主要目标而构建:

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

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

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

客户端层

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

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

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

散布层

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

  • Cluster Management Module用于追踪集群节点。关键算法是肯定哪些节点是集群的1部份的Paxos-like1致投票进程。Aerospike实现专门的心跳检测(主动与被动),用于监控节点间的连通性。

  • 当1个节点被添加或移除并且集群成员被肯定,每一个节点使用哈希算法讲主索引空间切分为数据切片并指派其具有者。Data Migration Module(数据迁移模块)然后智能平衡跨集群中各节点的数据散布,并依照系统配置的复制因子确保每一个数据块夸节点和夸数据中心复制。数据分割是纯洁算法,系统扩大无master,从而消除在同享环境下的其他额外配置。

  • Transaction Processing Module(事务处理模块) 用于读写数据要求并保障1致性与隔离性,该模块负责
     
    1. Sync/Async Replication(同步/异步复制):为保证写1致性,在提交数据之前向所有副本传播更新并将结果返回客户端。
    2. Proxy (代理):集群重配置期间客户端可能出现短暂过期,透明朝理要求到其他节点。
    3. Duplicate Resolution(副本解析):当集群从活动分区恢复时,解决不同数据副本之间的冲突。
       
      • 自动,以数据最晚的时间戳为标准
      • 用户驱动,为判定数据等级,所有数据副本返回利用。

Clustering

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

数据存储层

Aerospike以无模式数据模型存储键值对。组织数据的容器称作命名空间(namespaces),相当于RDBMS系统中库(databases )的概念。在namespace中数据被细分为各个集合(set)(类似数据库中的表)和记录(records )(类似数据库中的行)。在set中每一个record有1个唯1的索引key和1个或多个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存活期从最后1次修改的时间开始计算,利用可以超出默许的数据生命周期重新指定过期时间,可以设定数据永不过期。

操作Aerospike

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

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

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

  • 通过配置初始化数据库设置。按Aerospike的术语,当安装系统时1个库被称作1个namespace,集群中的每一个节点必须指明每一个namespace如何创建及副本数量。数据库讲在你重启服务的时候被创建

  • 通过利用程序履行数据库操作。当利用程序第1次援用set和bin的时候数据库schema被创建,利用程序简单地将数据存储于指定的bin。在Aerospike数据库中,任务通常由DBA通过命令行程序履行。

  • 根据需要修改配置文件。要更新namespace的配置参数,你需要动态修改或使用新的配置文件重启服务。

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

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

构建利用程序

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

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

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

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


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

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

原文链接: <http://www.aerospike.com/docs/architecture/>
 
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生