Aerospike

一、NoSql

NoSQL(Not Only Sql),泛指非关系型的数据库。传统项目网站访问量一般不大,单机版数据库就很不错, 随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

常见NoSql有: Redis(K-V)、MongoDB(文本)、HBase(海量数据)、Cassandra(阿帕奇)、Memcached(K-V)

今天说的Aerospike和Redis一样都是开源的非关系型数据库,在性能表现上都非常优秀,但深挖还是有所区别。

  • 从性能上来看,二者都是用C写的,Redis是单线程的,只支持内存方式,Aerospike是多线程的,支持内存+SSD+HDD的存储方式。
  • 从数据存储上来看,二者都支持多种数据结构和操作,Redis的API是以数据结构为中心的,应用程序必须知道Redis节点且每节点最多有2的32次方个key,Aerospike所有操作都不是预定义的,应用程序不需要知道节点,每个名称空间最多有2^160个键。
  • 从持久化方面来看,二者都支持持久化,Redis支持RDB和AOF,Aerospike本身支持内存+SSD模式,也结构化日志文件系统,且支持热重启。
  • 从数据同步上来看,Redis需要主从手动配置,是异步复制方式,各节点完全是主或从节点。Aerospike主从自动分配,是同步复制方式,各节点既是主节点又是从节点。
  • 从数据分片上来看,Redis需要应用程序分片,Aerospike支持自动分片,分区被分配给节点且自动平衡各节点数据。
  • 从集群方式来看,Redis需要手动或脚本的方式形成集群,Aerospike基于组播自动集群,集群变化时自动重新平衡且重新平衡过程中允许的读/写操作。此外Aerospike自身还提供监控台,用于监视集群的活动。

二、Aerospike的安装

Aerospike安装包百度网盘地址_提取码:4lcr

上传安装包到服务器,进行解压,解压命令

#解压
[root@localhost application]# tar -zxvf aerospike-server-community-4.3.1.14-el7.tgz
#重命名,纯属个人习惯
[root@localhost application]# mv aerospike-server-community-4.3.1.14-el7 myas
#进入目录
[root@localhost application]# cd myas/
#执行安装文件
[root@localhost myas]# ./asinstall

先不用修改配置文件直接启动

三、配置

配置文件所在目录/etc/aerospike/aerospike.conf

[root@localhost myas]# vim /etc/aerospike/aerospike.conf

通过asadm命令查看as的信息

同时,aerospike还支持简单sql语句,只不过as里边叫aql

四、集群配置

其实我自己理解到的Aerospike和redis,根据他们比较其实as更突出的是他的运维成本低和高可用。相比于redis他的集群搭建更简单(同一网段自动形成集群),真正做到了高可用,同时智能负载均衡,redis搭建集群时需要ruby脚本,虽然默认是能进行了分区但是不智能。redis无论哨兵模式还是高可用集群都是需要选取master,会导致一定时间的不可用,而as集群节点发生变化时不影响读写。

as集群配置:同时启动两台虚拟机,在一个网段,全都安装之后修改配置文件如下:主要是network块里的heartbeat 之后分别重启两台as服务器。

service {user rootgroup rootpidfile /var/run/aerospike/asd.pidpaxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.proto-fd-max 15000
}
logging {file /var/log/aerospike/aerospike.log {context any info}
}
network {service {address 0.0.0.0port 3000access-address 192.168.2.12 3002}#       heartbeat {
#               mode mesh  #单播方式配置集群
#               address 192.168.2.12
#               port 3002
#               mesh-seed-address-port 192.168.2.12 3002
#               mesh-seed-address-port 192.168.2.11 3002
#               interval 150
#               timeout 10
#       }heartbeat {mode multicast  #广播方式配置集群#监控心跳的地址和端口号multicast-group 239.1.99.222  #两个as的广播地址相同port 9918# To use unicast-mesh heartbeats, remove the 3 lines above, and see# aerospike_mesh.conf for alternative.#mesh-seed-address-port 192.168.2.11 3000interval 150timeout 10}fabric {port 3001}info {port 3003}
}
namespace test {replication-factor 2memory-size 4Gdefault-ttl 30d # 30 days, use 0 to never expire/evict.storage-engine memory
}
namespace bar {replication-factor 2memory-size 4Gdefault-ttl 30d # 30 days, use 0 to never expire/evict.storage-engine memory# To use file storage backing, comment out the line above and use the# following lines instead.
#       storage-engine device {
#               file /opt/aerospike/data/bar.dat
#               filesize 16G
#               data-in-memory true # Store data in memory in addition to file.
#       }
}

在一个as中通过aql语句 INSERT INTO test.set_fir(PK,uid,uname) VALUES (‘key’,1,‘Aerospike’);

在另外一个查看 select * from test;能够查到

insert时报Error: (11) AEROSPIKE_ERR_CLUSTER,说明两边namespace配置不一致,受社区版限制,namespace配置智能配置两个。

如果启动成功集群没形成是因为防火墙没关的原因。

推荐也试试单播方式进行集群。

附:配置文件详解

#调整参数和进程所有者
service {user rootgroup rootpidfile /var/run/aerospike/asd.pidpaxos-single-replica-limit 1 # 副本数自动减少到1的节点数#service-threads 20 # 4.7+应为vCPU数量的5倍,并且至少有一个SSD名称空间,否则为vCPU数量proto-fd-max 15000
}
#配置日志记录及日志轮换
logging {# 日志文件必须是绝对路径,不会自动建目录,需要已有的目录file /var/log/aerospike/aerospike.log {context any info}
}
#用于配置集群内和应用程序节点通讯
network {#工具/应用程序通信协议,应用、工具、远程XDR通过此端口访问AS集群service {address 0.0.0.0 #服务正在侦听的NIC的IPport 3000    #服务正在监听的端口access-address 192.168.2.11  #访问该服务的客户端的IP地址}#        heartbeat {
#                mode mesh   #基于单播,即基于TCP的
#                address 192.168.2.11   #本机加入集群,用于发送心跳的IP和端口
#                port 3002
#                mesh-seed-address-port 192.168.2.12 3002  #集群中的组件
#                mesh-seed-address-port 192.168.2.11 3002  #自己也要加进去
#       interval 150
#       timeout 10
#        }#集群心跳端口,用来构建和维护集群heartbeat {mode multicast #使用多播发送心跳,基于UDP的multicast-group 239.1.99.222 # 公网组播地址#address 192.168.1.100       # 将本机加入集群,用于发送心跳和绑定交换矩阵端口的NIC的IP,不配也行port 9918                    # 组播端口 interval 150             # 心跳间隔的毫秒数timeout 10            # 节点超时等待的时间数 毫秒}#集群内部通讯、备份等操作用此端口fabric {port 3001 # 集群内通信端口(迁移,复制等)}#管理员telnet控制台协议info {port 3003 # 纯文本telnet管理端口。}
}
#定义名称空间记录策略和存储引擎,只用内存的方式
namespace test {replication-factor 2 #复制因子memory-size 4Gdefault-ttl 30d # 过期时间30天,使用0永不过期storage-engine memory
}
namespace suaf {replication-factor 2memory-size 4Gdefault-ttl 30d storage-engine memory
}
#SSD+索引
#namespace bar_ssd {
#    memory-size 4G                # 主索引和辅助索引的最大内存分配
# 警告-定义的原始分区设备中的遗留数据将被擦除。
# 这些分区不能被文件系统挂载。# storage-engine device {       #配置存储引擎以使用持久性添加原始设备。最大大小为2 TiB#     device /dev/sdb3  #      device /dev/sdc3  #      device /dev/sdd3   #      device /dev/sde3 #      # 下面的2行针对SSD进行了优化。#      heduler-mode noop#      write-block-size 128K #调整块大小以使其有效用于SSD。#      }
#}
#HDD机械硬盘就不考虑,慢
##HDD及内存混合存储方案
#namespace bar_hdd_mem {
#    memory-size 4G                # 主索引和辅助索引的最大内存分配
#    single-bin true                 #索引数据必须为true。
#    data-in-index true              #在索引整数存储中启用。
#    #配置存储引擎使用持久性
#    storage-engine device {
#          file /opt/aerospike/data1  #服务器上数据文件的位置。
#          file /opt/aerospike/data2  #服务器上数据文件的位置。
#          # device /dev/sdb3          #使用文件的可选替代方法。
#          filesize 16G                #每个文件的最大大小GB,接近这个值将不再写入数据。最大大小为2TiB
#          data-in-memory true           #设置data-in-memory设置为true,开启内存存储机制
#   }
#}

aerospike入门相关推荐

  1. Aerospike - 安装以及入门知识

    Docker安装Aerospike Aerospike镜像下载,安装指定版本(4.0.0.5) docker pull aerospike:4.0.0.5 C:\Users\guoyu.huang&g ...

  2. Aerospike之路

    Docker 重要概念 镜像:理解为某个系统 容器:镜像运行时的实体 环境准备 安装(mac系统,且已安装brew) brew docker 基本操作 # 查看.删除镜像 docker images ...

  3. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  4. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  5. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  6. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  7. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  8. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

最新文章

  1. virtual hust 2013.6.20 数论基础题目 D - Just the Facts
  2. 帮AI摆脱“智障”之名,NLP这条路还有多远?
  3. 推荐7款冷门但是非常值得推荐的windows软件
  4. lr java vuser_LR Java脚本编写方法
  5. Mac 技术篇-pip下载速度慢解决办法,pip秒速下载,阿里云镜像配置
  6. windows如何恢复默认pycharm配置
  7. jdbc map获取keys_跟我学shardingjdbc之分布式主键及其自定义
  8. 计算机系统 过程调用
  9. 蓝桥杯第四届初赛-买不到的数目-数论
  10. wpf 使子ui元素可视区域不超过父元素_对游戏UI设计的一点思考
  11. 【资源下载】《Pytorch模型训练实现教程》(附下载链接)
  12. elementui 表头错位解决方法
  13. BlogEngine.Net架构与源代码分析系列索引贴
  14. PHP之Smarty模板学习
  15. 后缀数组算法概述及习题
  16. 数据结构课程设计(基于AVL树的身份证管理系统)
  17. 金蝶云星空即时库存查询SQL语句SQLServer
  18. 组件、控件和插件的区别
  19. 公众号快速注册并认证小程序
  20. ESP32-C3 SPI salve示例错误

热门文章

  1. 《程序员》6期精彩内容:移动应用的成功法则
  2. 3D变形:平移、旋转、缩放、父子关系外间距塌陷
  3. 电脑上的串行和并行接口
  4. 如何高效地比较两个VS(Visual Studio) Project文件
  5. htc hd2连上wifi却显示无法连接服务器,HTC HD2线刷官方ROM疑难问题解答
  6. 【光学】基于matlab GUI维达尔之眼计算【含Matlab源码 2545期】
  7. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法
  8. 用友:从PLM走向All-in-one
  9. 老罗linux升级,Smartisan T2 如约登场:一次求稳的升级
  10. 知晓自己在哪个Activity以及随时随地退出程序。