关于 Aerospike
Aerospike 服务器向外扩展,形成一个无共享的集群,透明地对数据进行分区,并跨节点并行处理数据。集群中的节点都是相同的;您可以从使用两个硬件开始,随后添加更多的硬件。集群可以进行线性扩展。
用例
Aerospike 是一个键/值存储,通常被用作缓存,或被用作具有持久性的存储,比如上下文存储。上下文存储可用于:
- 服务器端会话存储
- cookie 存储
- 设备 ID 存储
- ID 映射
- 用户首选项或用户配置文件,以便获得实时推荐和个性化 Web 门户上的用户体验
- 电子商务
- 旅游网站
Aerospike 还是可供实时竞价平台选择的数据库,这些平台可以显示广告、移动设备内容、视频、社交媒体、游戏、本地广告和 Internet TV。
Aerospike简介
- Aerospike是什么?
Aerospike(以下简称AS)是一个以分布式为核心基础,可基于行随机存取内存中索引、数据或SSD存储中数据的数据库。它主要用于百G、数T等大数据量并且在数万以上高并发情况下,对性能也有ms读取插入要求的场景。目前主要集中于互联网广告行业,如eXelate、BlueKai、MediaV、 InMobi、 applovin等。 -
特性
-
可预见的高性能
99% 的响应可在 1 毫秒内实现,99.9% 的响应可在 5 毫秒内实现。
-
混合架构
索引存储在 RAM 中,而数据存储在闪存/固态硬盘 (SSD) 上。
-
群集感知客户端软件
客户端知晓数据的存放位置,因此通常能够通过一次单跳检索到数据
-
无热点
使用复杂的哈希函数来确保数据均等地分布到所有可用节点,从而将需求平均分布到各资源上。
-
数据完整性
保持了高度的一致性,或者允许对跨越多个群集和数据中心的一致性进行调节。
-
线性扩展
能够根据需要安装到多个数据中心内分组为多个群集的多个节点上。添加节点,无需分片,无需人工干预
-
跨数据中心支持
不同数据中心内的群集能够自动协调,从而实现绝对的可靠性
-
提供API的语言
AS支持多种语言,诸如C/C++、 Java、 C#、 Python、 PHP、 Go、 Node.js、 Ruby、 Erlang、 libevent2 (C)、 Perl等等。
-
基本概念
-
namespace
策略容器,类似RDBMS中的schema,可以设置副本数、内存大小、有效时长、存储引擎、文件存储位置
-
Sets
类似RDBMS中的表
-
Records
类似RDBMS中的行,行级的失效时间(TTL)
-
Bin
类似RDBMS中的列,一行可以有多个bins
KEY操作命令
AS 数据类型
-
基础类型
-
Integer
-
64位有符号整型,[ −(2^63) to 2^63 − 1 ]
-
每个整型占用8字节存储
-
-
String
- String是以NULL-结尾的byte数组,可以达到128KB
-
Bytes
- Byte数组,可以存储任何二进制数据
-
-
复合类型
- List
- 排序的数据集合
- Map
- key-value对集合
- List和Map都支持类型嵌套
- List
- 大数据类型
- 说明
- 超过普通bin大小1M的限制
- 大数据类型允许在一个record bin中有一个非常大并且可以在AS中高效存储和访问的元素集合
- 存储的元素可以是Integer/String/Map/List
- Large Ordered List
- 按key排序的集合
- 提供的操作有
- add()/add_all()/update()/update_all()
- find()/exists()
- scan()/filter() (with and without filter)
- range() (with and without filter)
- remove()/remove_all()/remove_range()
- size()
- 说明
函数
- 仅支持用LUA写,在server端执行
- Record UDF
- 单记录操作
- Stream UDF
- 过分布于集群上的数据集进行过滤、转换、汇总
Secondary Index和汇总
- Secondary index
- 支持integer\string类型
- 支持等于和范围过滤
- 每个namespace支持256个secondary indexes
- 汇总
- 通过lua的类mapReduce实现
AS简单测试
对AS进行了grpc封装,下面的测试结果是只选了其中的一种查询进行测试。测试的查询相当于数据库里的查询:select t.cnname,t.code_id from data_type t where t.group_name=’EVENT’ and t.enname=’connect_success’;
测试环境:
116做RPC服务器,118做AS server、RPC客户端
116 CPU 24核, 118 CPU 32核
都是万兆网
- as with grpc
- as with thrift
-
As VS redis with thrift性能测试
- AS
次数=1000000 并发=300 tps=57793 #瓶颈在server的CPU, 使用率710%
次数=1000000 并发=500 tps=58036 -
Redis
次数=100000 并发=300 tps=28413
次数=100000 并发=500 tps=30370 #瓶颈在redis CPU
- AS
AS vs Redis
-
AS优势
-
数据可存储于内存、SSD
-
同步复制,无需手工配置,可做机架感知、跨数据中心复制,不会丢失数据
-
机群自动扩展,自动平衡数据
-
客户端感知集群,app不需要知道集群节点
-
二级索引、汇总
-
概念、处理方式与RDBMS接近
-
-
Redis优势
-
多种数据结构
-
完善的文档,广泛的使用
-
丰富的客户端
-
结构简单
-
PS:
1、在做as\redis性能测试时,在并发量不大时redis性能只到as的一半,而且并发量一大redis就经常出错,故没有两者的性能测试对比
2、as对结构的支持不好,一个稍复杂的功能在redis很简单就能实现的,在AS上就得写好多,而且有并发冲突的风险,除非稍复杂的都用LUA脚本写成函数
参考资料
Redis官网 http://redis.io/
Redis命令参考 http://redis.readthedocs.org/en/latest/index.html
AS官网 http://www.aerospike.com/
AS官网文档 http://www.aerospike.com/docs/
安装 Aerospike
要安装 Aerospike,请打开您的 VM 会话,然后按照下面的步骤进行操作。
- 在命令行中,输入清单 1 中的命令。
清单 1. 获得 aerospike.tgz 文件
cd /usr wget -O aerospike.tgz 'http://aerospike.com/download/server/latest/artifact/el6'
您的屏幕将会显示 HTTP 请求和连接信息,如下例所示。
- 您会在主机中的 /usr 目录下看到 aerospike.tgz 文件,如图 2 所示。
图 2. /usr 目录中的 aerospike.tgz 文件
在安装 Aerospike 之前,您必须:
- 关闭 SELinux。在命令行中,输入
SELINUX=disabled
,如下所示。 - 关闭 IPTables。在命令行中,输入
chkconfig iptables off
,如下所示,然后输入iptable stop
。 - 打开 NTP。在命令行中,输入清单 2 中所示的命令。
清单 2. 打开 NTP
sudo /sbin/chkconfig ntpd on sudo ntpdate pool.ntp.org /etc/init.d/ntpd start
- 转到 Aerospike 目录。在命令行中,输入
cd /usr
命令。 - 解压缩 aerospike.tgz。在命令行中,输入
tar -xvf aerospike.tgz
命令。您会看到一个由包中的工具、文件和许可组成的简要列表。
安装并启动 Aerospike 服务器和工具
要安装 Aerospike 服务器和工具包:
- 在命令行中,输入清单 3 中的命令。
清单 3. 开始 Aerospike 安装
cd /usr/aerospike-server-community-3.4.1-el6 ./asinstall
在安装了 Python、许可、文件和群组之后,您会在屏幕上看到消息。
在完成安装之后,服务器应该已经做好准备,可以开始使用默认配置文件。(参见目录结构,了解有关的更多详细信息。)
- Aerospike 使用了几个目录来存储工具、系统文件和数据文件。要获得所使用的目录的描述,或者想要手动管理文件(通常通过 Aerospike 工具来管理它们),请在命令行中输入
/opt/aerospike
。
aerospike 目录是在通过 Linux 包管理来安装 Aerospike 包时由 Aerospike 包创建和管理的。它包含几个子目录,其中一些是由工具包创建的,另外一些则是由服务器包创建的,并在运行服务器期间进行维护。如下所示,子目录还包括 bin、data、doc、examples、lib、cmd、sys 和 usr。
要启动 Aerospike 服务器,请在命令行中输入清单 4 中的命令。
清单 4. 启动 Aerospike 服务器
cd /etc/init.d ./aerospike start
在屏幕上,您会看到一个与下列清单类似的清单:abrt-ccpp、abrtd、abrt-oops、acpid、aerospike、atd、auditd、blk-availability、cpuspeed、crond、functions、haldaemon、halt、htcacheclean、HTTPd、ip6tables、iptables 和 irqbalanc。
要检查服务器状态,请在命令行中输入 /aerospike status
。
安装 Aerospike 客户端 Java 包
要安装 Aerospike 客户端 Java 包,可以使用 WinSCP 工具将 aerospike-client-java-3.0.33.tgz 包复制到 /usr 目录。要解压缩该包,请在命令行中输入 tar -xvf aerospike-client-java-3.0.33.tgz
。
安装 Aerospike Management Console 手册
从 Aerospike 文档 网站下载包含 Aerospike Management Console (AMC) 手册的文件,然后通过输入清单 5 中的命令,使用 WinSCP 工具将它移动到 /usr 目录。
清单 5. 将文档放入 /usr 目录
cd /usr yum install aerospike-amc-community-3.5.0-el5.x86_64.rpm
您会看到已安装的插件和已解析的依赖关系。
启动 AMC 服务器
要启动 AMC 服务器,请转到 amc 目录,并在命令行中输入清单 6 中的命令。
清单 6. 启动 AMC 服务器
cd /etc/init.d ./amc start
要检查 AMC 服务器的状态,请在命令行中输入 ./amc status
。输出显示 AMC 正在运行。
现在,您可以通过输入清单 7 中的命令来启动 Aerospike 服务器。
清单 7. 启动 Aerospike 服务器
cd /etc/init.d ./aerospike start ./aerospike status
然后,在您的浏览器中使用 URL http://184.173.49.2:8081;这会打开如图 3 中所示的窗口。
图 3. 连接到一个节点
输入您的 Host Name
或 IP
,然后单击 Connect 来查看 Aerospike 仪表板,该仪表板已显示在图 4 和图 5 中。
图 4. Aerospike 仪表板
图 5. Aerospike 仪表板(续)
使用 Aerospike
在 Aerospike 主仪表板屏幕的顶部,可以从下面选项中进行选择(企业版会拥有其他页面):
- Dashboard
- Statistics
- Definitions
- Jobs
单击窗口右上角的 Change Cluster 链接来监视另一个集群。
您可以通过更改 Snapshot for last 值来更改抓取快照的时间间隔。图 6 中的 Statistics 面板显示了结果。
图 6. Statistics 视图
选择 Aerospike Dashboard 顶部的 Definitions 来查看名称空间的定义,如图 7 所示。
图 7. Definitions 仪表板
您可以使用 System Monitor 来检查集群的健康情况。在 VM 命令行中,输入 asmonitor
命令。示例输出显示了一个初始配置文件和集群中的一个主机的创建:10.76.60.39:3000。
输出显示了监视器的三种类型:
-
info
提供了关于 Aerospike 集群的高级信息。 -
latency
提供了集群吞吐量和延迟时间的详细信息。 -
printconfig
显示了节点的配置(其实际输出)。
要退出监视器选择,请在 VM 命令行中输入 exit
命令。
将测试数据添加到 Aerospike
要将测试数据添加到 Aerospike,请输入清单 8 中的命令。
清单 8. 将测试数据添加到 Aerospike
ascli put <ns> <set> <key> <record> ascli put test testset testkey1 '{"name": "John"}'
基于您输入到磁盘中的数据和 RAM 的使用,使用情况可能会发生改变,如图 8 所示。Cluster Throughput (Hide) 也将显示一些变化。
图 8. 集群磁盘使用情况
管理任务
要启动 Aerospike 服务器,请在命令行中输入 sudo service aerospike start
。
要验证 Aerospike 正在运行,请在命令行中中输入 sudo service aerospike status
。
AMC 服务器任务
要启动 AMC,请在命令行中中输入 sudo /etc/init.d/amc start
。
要停止 AMC 服务器,请在命令行中输入 sudo /etc/init.d/amc stop
。
要重新启动 AMC 服务器,请在命令行中输入 sudo /etc/init.d/amc restart
。
要查看 AMC 服务器是否正常并正在运行,请在命令行中输入 sudo /etc/init.d/amc status
。
要更改密码,请在命令行中输入清单 9 中的命令。
清单 9. 更改密码
sudo /opt/amc/bin/reset_password [-u <username>] [-p <password>]
此命令中的选项是:
-
-u
:可选用户名(目前只允许使用admin
)。 -
-p
:可选新密码。如果没有指定,那么默认密码将是admin
。
要查看服务器日志,请在命令行中输入清单 10 中的命令。
清单 10. 查看服务器日志
var/log/aerospike/aerospike.log grep cake /var/log/aerospike/aerospike.log
结束语
对大量的、流动的和多结构的数据执行实时分析并不容易;我们需要多层面的解决方案和平台。获取关于大数据和快速数据的可行洞察是产品供应商面临的一个关键挑战。
Aerospike 是一个创新性的解决方案,用于简化和精简实时分析,且不损害任何技术要求。借助 Aerospike,在您踏上大数据实时分析之旅之前,性能、可用性、可扩展性和安全性方面都可以得到充分保证。Aerospike 最重要的优势是系统内存中的 NoSQL 数据库,它允许进行实时数据分析。
http://www.ibm.com/developerworks/cn/analytics/library/ba-aerospike-trs/index.html
http://blog.csdn.net/dazheng/article/details/47156653
相关推荐
Aerospike从入门到深入介绍,都是本人亲自总结的,一手资料
以上知识点详细介绍了Aerospike数据库的核心特性、架构组件、安装部署方法以及实际应用中的最佳实践。通过这些知识点,我们可以了解Aerospike如何在大数据环境下,提供高效率和高性能的数据存储解决方案。
- `README`或`README.md`:文档,介绍如何安装、配置和使用客户端。 为了使用这个客户端,开发者需要按照README的指示配置Aerospike服务器的地址和端口,然后编译源代码,最后在自己的C项目中引入相应的头文件和库...
通过以上介绍,我们了解到Laravel如何与Aerospike集成,以及如何在实际项目中使用这个强大的缓存驱动。理解并掌握这些知识点,将有助于开发者充分利用Laravel和Aerospike的优势,提升应用的性能和用户体验。
在安装完成后,你可以通过导入`aerospike`模块来开始使用它。首先,你需要创建一个客户端连接到你的Aerospike服务器: ```python import aerospike config = { 'hosts': [('localhost', 3000)] # 更改为你的...
这些都使用标准安装来构建和运行Aerospike。 标准安装允许将Aerospike配置为在任何用户ID下运行,但是该服务需要使用root用户启动。 有关详细信息,请参见。 但是,对于在根ID下运行容器存在很大的担忧,详细介绍...
这个主题"Java-REST-SOAP-AeroSpike-多线程"涵盖了几个关键的技术领域,包括Java编程、RESTful API设计、SOAP协议以及AeroSpike数据库的使用,同时强调了多线程的概念。下面将详细介绍这些知识点。 首先,Java是...
Aerospike示例:最近最少使用(LRU)缓存如果您有松散的物品集合,我们希望删除未使用的物品。介绍此示例演示了如何将Aerospike命名空间配置为充当缓存。 这段代码演示了如何在内存缓存中保留项目仅存在5秒钟。 将有...
- **分步指南**:详细介绍了每个功能的使用方法,包括如何执行兼容性扫描、如何应用Shims以及如何创建和管理兼容性数据库。 **3. 常见问题解答** `ACT_FAQ`文件包含了用户可能遇到的问题及其答案,帮助解决使用...
Aerospike还提供了强大的数据一致性保证,即使在网络分区或硬件故障的情况下也能保持数据的完整性和一致性。 ### 5. **VoltDB** VoltDB是一个高度可扩展的内存SQL数据库,专为大规模事务处理和实时分析而设计。它...
本资源摘要信息中,我们将详细介绍 Java 相关技术框架的各种知识点,涵盖了 Java 语言基础、Java 虚拟机(JVM)、Java 集合框架、Java 并发编程、Java 网络编程、数据存储技术等方面的知识。 Java 语言基础 * Java...
- **Memcached/Mcrouter、Redis/Dynomite/Twemproxy/Codis/SSDB/Aerospike**:这些NoSQL数据库和缓存解决方案提供了高可用性和扩展性。 - **MySQL监控**:包括mytop、orzdba、Percona-toolkit、Maatkit等工具,支持...