Aerospike(NoSQL)-从需求到安装

一、需求与场景

   业务需要从数据库中获取产品的相关信息,搜索池为三张表总共670万行记录,所占空间为1.5g,键值集容量从200到2500之间分布,命中率为25%到80%,由于业务原因无法减少键值集,而公司内部规划没有采用分布式数据库架构。为减少搜索相关信息阶段的时间,需要将从MySQL等关系型数据库中的搜索压力转换到内存数据库。

    我们的业务场景需要NoSQL数据库在每个业务步骤进行上下文相关内容存取,数据量较大,不强调一致性,可以容忍数据丢失或出现脏数据,每次搜索键值集较大,需要有批量读的功能,以及稳定的搜索时间范围(除网络延迟之外),同时,需要控制成本。

二、Aerospike的特性

Aerospike的官方定义:Next Generation, NoSQL Data Platform。(下一代NoSQL数据平台)

Aerospike的官方描述:Powering real-time, extreme scale data solutions that require five-9’s+ uptime, predictable performance and operational simplicity。(某些数据解决方案需要5个9的正常运行时间、可预测的性能以及操作的简单性,而Aerospike恰恰支持这样实时的、极端规模的数据解决方案。)

Aerospike官方文档

    因为当前有很多性能不错的NoSQL数据库可供选择,那么我为什么要选择Aerospike呢?在看到官方简介之前,我是无从下手的。不过,有了这么高大上的定义,我瞬间有了方向。既然Aerospike 说自己是下一代NoSQL数据平台,那么我有个疑问,那下一代数据库的定义是什么样的呢 ?有什么特点吗?从它对自己性能的自信,我很好奇它采用了什么样的架构什么样的机制做到这样的性能呢?会不会存在打脸的情况呢?

    为了防止自己对Aerospike发表先入为主的意见,那么我就先从它的官方文档开始,看看它自己是怎么解释自己的特点以及它对自己定义的由来。同时为了自己的书写体验(避免它有王婆卖瓜的倾向可能会误导我的情况),我就将它描述中所有的形容词去掉,只看事实。

    1.稳定性及可靠性。通过三个方面来达到这个目的,第一,5个九的运行时间;第二,动态的集群管理机制;第三,强一致性。

    2.可预测性能。通过三个方面来达到这个目的,第一,获得专利的闪存优化存储层;第二,通过基于ML的实时决策支持高数据摄取率;第三,拓展到十亿兆字节规模。

    3.减少复杂性及总拥有成本。通过三个方面来达到这个目的,第一,解决服务器拓展问题;第二,使用低成本的Flash和PMEM来取代DRAM;第三,能在任何复杂的生产环境部署。

    假设,Aerospike官方的声明具有比较高的可信度,那么,在看到使用Aerospike可以减少复杂性以及总拥有成本的特点时,我们便有了决定(因为穷,只能节衣缩食),毕竟使用SSD+Memmory的方式比单纯使用Memmory要划算得多。同时,官方也提供了Aerosipke的监控工具,便于我们运维。剩余的信息官方说明已经很详细了,要用中文再写一遍的话,就有点反复造轮子的意思。上面三点已经绑定链接,可以直接跳转到相关的官方页面。

    补充一下,在官方对可预测性能的说明中,有与Cassandra、Redis、DynamoDB、Couchbase的基准测试,以及提供了一些选择的建议。如果你有在Aerospike与Redis中有做考虑的话,可以看看Aerospike官方给的参考项。强调一点,很多功能只有企业版才能使用,当然是需要商业许可的。

    那么,按照我的需求,到现在就已经可以安装使用Aerospike了。Aerospike数据库的限制列表

三、安装

       官方下载

企业版与社区版的对比

 

        由于企业版本需要与销售顾问联系之后,才能拿到feturekeys.conf。就不做企业版的演示了。下面选择社区版的压缩包以及Docker安装方式进行简单说明。

1.社区版压缩包安装

    1.1 环境

            Centos7 虚拟机, Xshell远程连接工具。

    1.2 下载:

            方式一:在浏览器下载,再通过Xshell将压缩包上传到虚拟机中。

                    社区版本下载地址:aerospike-community-edition。(随便填写一些信息后,即可下载)

                    使用Xshell连接虚拟机,切换到你决定放压缩包的位置,执行rz命令,在弹出框中选择压缩包后点击ok即可(若有打开screen模式,在下载过程中会有问题,可以先退出screen模式,若并未在screen模式中,可忽略该提示)。若无rz命令,可通过下面命令进行安装

 yum install lrzsz

 

            方式二:通过在虚拟机中使用wget下载压缩包。

                        使用Xshell连接虚拟机,切换到你决定放压缩包的位置,执行下面命令

wget -O aerospike.tgz 'https://www.aerospike.com/download/server/latest/artifact/el7' 

 

                        若是没有wget方法,可以通过下面命令安装

 yum install wget 

 

        1.3 解压安装

                        解压

 tar -xvf aerospike.tgz

 

                        安装(在Centos6和8中,需要安装一些额外依赖

 cd aerospike-server-community-{latest-version}-el7/
 sudo ./asinstall 

 

 

            1.4 启动、测试

                启动

systemctl start aerospike

 

                测试

[root@192 ~]# aql

Seed: 127.0.0.1 User: None Config File: /etc/aerospike/astools.conf /root/.aerospike/astools.conf

Aerospike Query Client

Version 3.23.0 C Client Version 4.6.9 Copyright 2012-2019 Aerospike. All rights reserved.

aql> show sets

[127.0.0.1:3000] 0 rows in set (0.001 secs)

OK

aql>              

 2. 社区版Docker安装

  在虚拟机中执行下面命令

docker run -tid   \

-v /opt/aerospike/data:/opt/aerospike/data \

-v /opt/aerospike/usr/lua:/opt/aerospike/usr/udf/lua \

-v /opt/aerospike/config:/opt/aerospike/etc \

--name aerospike1  \

-p 3000:3000 \

-p 3001:3001 \ 

-p 3002:3002 \ 

aerospike/aerospike-server /usr/bin/asd --foreground \

--config-file /opt/aerospike/etc/aerospike.conf

        -v {local-path}:{container-path} : 将本地文件挂载到容器中,是容器内文件于本地可见且可修改,这里挂载的目的主要为了,第一,定制化配置;第二,将容器内数据备份到本地;第三,为了持久化 lua cache;

        -p {local-port}:{container-port}:  绑定本地端口与容器端口看;

        --config-file {container-file}:使容器内的指定文件作为容器的配置文件,即使我们挂载的配置文件生效的方式之一

      

到此,最基本的安装已经完成。

Aerospike的命令使用文档

 

posted @ 2020-03-14 16:22  Sev-Night  阅读(604)  评论(0编辑  收藏  举报