說明:分兩篇介紹凰狞,第一篇為基本概念介紹篇裁,第二篇為Java客戶端操作。
1赡若、什么是AeroSpike?
??Aerospike是一個分布式茴恰,可擴展的NoSQL數(shù)據(jù)庫。T級別大數(shù)據(jù)高并發(fā)的結(jié)構(gòu)化數(shù)據(jù)存儲解決方案斩熊,讀寫操作達微妙級,99%的響應(yīng)可在1毫秒內(nèi)實現(xiàn)伐庭,99.9%的響應(yīng)可在5毫秒內(nèi)實現(xiàn)粉渠。
??采用混合架構(gòu)分冈,索引存儲在 RAM 中,而數(shù)據(jù)存儲在閃存/固態(tài)硬盤(SSD) 上霸株,自動感知集群雕沉,可以隨意增加節(jié)點線性擴容,無需分片去件,無需人工干預(yù)(性能與節(jié)點成正比上升)坡椒,支持多語言集成;與redis相比不太會遇到性能瓶頸尤溜,客戶端SQL介入對RDBMS支持友好倔叼,對玩轉(zhuǎn)數(shù)據(jù)庫的朋友來說,可以無縫接入宫莱。
??缺點嗎丈攒?半開源狀態(tài),免費的有社區(qū)版下載授霸,企業(yè)版是收費的巡验,居說社區(qū)版不太穩(wěn)定(本人使用感覺還很OK)。
??架構(gòu)概述可參考:https://www.aerospike.com/docs/architecture/index.html
2碘耳、基本概念介紹
??大家可以自行下載world.js文件打開看一下源碼显设,這里只拿出一行核心代碼說明,registerMap里面的world.json就是我們要自定義的json(原world.js中world.json參數(shù)位置坐標(biāo)是不包含中國省份的)辛辨,這里我們要做的就是把中國省份地理坐標(biāo)加入捕捂,因為registerMap支持的是標(biāo)準(zhǔn)的geo坐標(biāo)系(不了解的可自行搜索),關(guān)于中國省份的坐標(biāo)愉阎,大家可以從網(wǎng)上自行下載china.js绞蹦,很容易找到,記得要稍微轉(zhuǎn)換一下格式榜旦。
? namespace 策略容器幽七,類似RDBMS中的schema,可以設(shè)置副本數(shù)溅呢、內(nèi)存大小澡屡、有效時長、存儲引擎咐旧、文件存儲位置驶鹉。
? Sets 類似RDBMS中的表。
? Records 類似RDBMS中的行铣墨,行級的失效時間(TTL)室埋。
? Bin 類似RDBMS中的列,一行可以有多個bins。
Aerospike | Mysql |
---|---|
namespace | database |
set | table |
bin | column |
record | row |
key | pk |
Aerospike支持的數(shù)據(jù)類型(v3.6+):早期的版本可能不太一樣姚淆。
? integers
? doubles
? strings
? blobs
? lists
? maps
? geoJSON
? natively serialized types
3孕蝉、坑爹的限制遵守
Aerospike server item | limits |
---|---|
namespace名稱 | <= 31個字符(名稱空間名稱中不允許使用’:‘或’;’) |
命名空間中所有鍵的總分類數(shù) | < 32 K |
命名空間中的總二級索引 | <= 256 indices |
每個鍵的bin | < 32 K |
索引名稱 | <= 255個字符(索引名稱中不允許使用’:‘或’;’) |
hist-track-back | 86400秒(切片10秒) |
復(fù)制因子 | =節(jié)點數(shù)是集群 |
命名空間的每個文件或磁盤的最大可配置大小 | = 2 TiB |
接口數(shù)量 | <= 500(對于3.15之前的服務(wù)器版本,限制為50) |
4腌逢、下載安裝
上傳文件:aerospike-server-community-3.9.1.1-el6.zip
解壓:unzip aerospike-server-community-3.9.1.1-el6.zip
添加執(zhí)行權(quán)限:
cd aerospike-server-community-3.9.1.1-el6
chmod a+x asinstall
chmod a+x aerospike-tools-deps/install.sh
執(zhí)行腳本安裝:./asinstall
默認(rèn)安裝目錄:/etc/aerospike
4.1降淮、aerospike.conf 配置
??參數(shù)說明參考配置中注解 。
# Aerospike database configuration file.
service {
user root
group root
paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.
pidfile /var/run/aerospike/asd.pid
service-threads 4
transaction-queues 4
transaction-threads-per-queue 4
proto-fd-max 15000
}
logging {
# Log file must be an absolute path.
file /home/plugin/logs/aerospike.log {
context any info
}
}
network {
service {
address any
port 3000
access-address 192.168.75.142
}
heartbeat {
# To use unicast-mesh heartbeats, remove the 3 lines above, and see
# aerospike_mesh.conf for alternative.
mode mesh #mesh模式配置
port 3002
address 192.168.75.142
# mesh-seed-address-port vmhost 3002
interval 150
timeout 10
}
fabric {
port 3001
}
info {
port 3003
}
}
namespace testMemory {
replication-factor 1 #備份副本1個
memory-size 1G
default-ttl 30d # 有效期30天搏讶,設(shè)置0為永久有效
storage-engine memory
}
namespace testFile {
replication-factor 1
memory-size 1G
default-ttl 30d # 30 days, use 0 to never expire/evict.
storage-engine device {
file /home/plugin/logs/aerospike.data
filesize 2G
data-in-memory true # 內(nèi)存和文件中同時存儲.
}
}
4.2佳鳖、啟動
service aerospike start –啟動
service aerospike status–查看狀態(tài)
service aerospike restart –重啟動
service aerospike stop –關(guān)閉
說明:確保配置文件的目錄是存在的,否則你可能會看到下面的異常
WARN Failed to connect to seed 127.0.0.1:3000. AEROSPIKE_ERR_CLIENT Socket write error: 111