Aerospike简单使用
Aerospike概述
Aerospike是一个分布式,高可用的K-V类型的nosql数据库,提供类似传统数据库的ACID操作。
Aerospike是一个高性能、可扩展、可靠性强的NoSQL解决方案,支持RAM和SSD作为存储介质,并专门针对SSD特殊优化,广泛应用于实时竞价等实时计算领域。官方保证99%的操作在1ms内完成,并提供集群数据自动Rebalance、集群感知客户端等功能,且支持超大规模数据集(100T级别)的存储。
作为KV存储,Aerospike提供多种数据类型,其操作方式和Redis比较类似。除基础功能之外,Aerospike还支持AMC控制台、API等多种监控方式,有集群QPS、健康度、负载等多项监控指标,对运维比较友好。支持集群内数据的自动Rebalance,和Redis集群方案相比,维护成本下降不少。
Aerospike特性
- 可预见的高性能,99% 的响应可在 1 毫秒内实现,99.9% 的响应可在 5 毫秒内实现
- 混合架构 索引存储在RAM中,而数据存储在闪存或者SSD中
- 群集感知客户端软件,客户端知晓数据的存放位置,因此通常能够通过一次单跳检索到数据
- 无热点,使用复杂的哈希函数来确保数据均等地分布到所有可用节点,从而将需求平均分布到各资源上
- 数据完整性,保持了高度的一致性,或者允许对跨越多个群集和数据中心的一致性进行调节
- 线性扩展,能够根据需要安装到多个数据中心内分组为多个群集的多个节点上。添加节点,无需分片,无需人工干预
- 跨数据中心支持,不同数据中心内的群集能够自动协调,从而实现绝对的可靠性
- 提供API的语言,AS支持多种语言,诸如C/C++、 Java、 C#、 Python、 PHP、 Go、 Node.js、 Ruby、 Erlang、 libevent2 ©、 Perl等等
基本概念(名词解释)
概念 | 解释 |
---|---|
Namespace | AS数据存储的最高层级,类比于传统的数据库的库层级,一个namespace包含记录(records),索引(indexes )及策略(policies)。其中策略决定namespace的行为,包括:1.数据的存储位置是内存还是SSD。2.一条记录存储的副本个数。 3.过期时间(TTL):不同redis的针对key设置TTL,AS可以在库的层级进行全局设置,并且支持对于已存在的数据进行TTL的设置,方便了使用。 |
Set | 存储于namespace,是一个逻辑分区,类比于传统数据库的表。set的存储策略继承自namespace,也可以为set设置单独的存储策略 |
Records | 类比于传统数据库的行,包含key,Bins(value),和Metadata(元数据)。key全局唯一,作为K-V数据库一般也是通过key去查询。Bins相当于列,存储具体的数据。元数据存储一些基本信息,例如TTL等。 |
Metadata | 每一条记录包含以下几条元数据1.generation(代):表示记录被修改的次数。该数字在程序度数据时返回,用来确认正在写入的数据从最后一次读开始未被修改过。2.time-to-live(TTL):AS会自动根据记录的TTL使其过期。每次在对象上执行写操作TTL就会增加。3.10.1版本以上,可以通过设置策略,使更新记录时不刷新TTL。3.last-update-time (LUT):上次更新时间,这是一个数据库内部的元数据,不会返回给客户端。 |
Bins | 在一条记录里,数据被存储在一个或多个bins里,bins由名称和值组成。bins不需要指定数据类型,数据类型有bins中的值决定。动态的数据类型提供了很好的灵活性。AS中每条记录可以由完全不同的bins组成。记录无模式,你可以记录的任何生命周期增加或删除bins。在一个库中bins的名称最多包含32k,这是由内部字符串优化所致。(相比于HBase支持几百万列还是有一定差距,如果想直接将HBase表迁移到AS可能需要重新设计存储结构) |
学习网址
官网
https://www.aerospike.com/docs/architecture/index.html
Aerospike软件安装
Aerospike下载
修改配置文件:
cd /etc/aerospike
vi aerospike.config
配置文件示例:
配置文件解析:
NetWork Configuration:
NetWork配置示例:
Hearbeat:
Multicast(UDP):建议使用
Mesh(TCP):Mesh对心跳信号使用TCP点对点连接。群集中的每个节点都保持与所有其他节点的心跳连接,从而产生网格所需的许多连接。因此,我们建议在可用时使用多播心跳协议。
安装过程中遇到的问题
- 在执行./asinstall命令 或者 service aerospike start命令不成功,提示缺少GLIBC2.14和GLIBC2.17版本
#查看glibc版本
strings /lib64/libc.so.6 | grep GLIBC
#下载相应的glibc版本
tar -zxvf glibc-2.17.tar.gz
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install #比较慢 等一会
- 提示Python版本不对
下载并安装如下的rpm依赖包并安装:
Aerospike 运行
sudo service aerospike start
#运行服务
sudo service aerospike status
#查看服务运行状态(# asd (pid 16816) is running...)
grep cake /var/log/aerospike/aerospike.log
#查看运行日志(Jun 22 2014 03:35:33 GMT: INFO (as): (as.c::376) service ready: soon there will be cake!)
Aerospike AMC安装
准备
#python2.7安装
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/usr/local/python-2.7.9
make
make install
ln -s /usr/local/python-2.7.9/bin/python /usr/bin/python
python --version
#setuptools安装
unzip setuptools-41.6.0.zip
cd setuptools-41.6.0
python setup.py install
#pip安装
tar -zxvf pip-19.3.1.tar.gz
cd pip-19.3.1
python setup.py installtar
#pex安装
tar -zxvf pex-1.6.12.tar.gz
cd pex-1.6.12
python setup.py install
vi /etc/profie (:/usr/local/python-2.7.9/bin)
. /etc/profile
#wheel
tar -zxvf wheel-0.33.6.tar.gz
cd wheel-0.33.6cd
python setup.py install
#aerospike-asadm依赖服务安装
make
make install
asadm
#aerospike-amc安装
rpm -ivh aerospike-amc-community-4.0.22-1.x86_64.rpm