• 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的命令使用文档

  • 相关阅读:
    【Leetcode_easy】922. Sort Array By Parity II
    【Leetcode_easy】925. Long Pressed Name
    【Leetcode_easy】872. Leaf-Similar Trees
    【Leetcode_easy】874. Walking Robot Simulation
    【Leetcode_easy】1128. Number of Equivalent Domino Pairs
    【VxWorks工程】基于opencv创建读取摄像头数据的工程error
    【Leetcode_easy】868. Binary Gap
    【Leetcode_easy】867. Transpose Matrix
    【Leetcode_easy】860. Lemonade Change
    第11章 拾遗5:IPv6和IPv4共存技术(3)_NAT-PT技术【全书完】
  • 原文地址:https://www.cnblogs.com/sev-night/p/Aerospike.html
Copyright © 2020-2023  润新知