从Redis发展成为一些数据结构后,我正在寻找具有良好磁盘/ SSD性能的其他解决方案.我最近发现Aerospike似乎在SSD环境中表现出色.
饥饿最多的结构之一是大约100.000个Redis集,每个集可以包含多达10,000个字符串.每个字符串介于10到30个字符之间.
这些集主要用于存在/唯一性检查.
对这些进行建模的最佳方法是什么?我通常会看到两个选项:*将redis设置为Aerospike lset *模型,将每个值分别设置为一组.
除了这个选择,100.000 Redis集用作键上的分区.出于本地化的原因,在Aerospike中进行类似的分区/命名空间可能是有意义的.但是,我很确定Aerospike中"命名空间"的概念并不用于这种关键分区.在Aerospike中执行此操作的正确方法(如果有的话),还是不需要?
我正在尝试在Ubuntu 14.04上设置一个三节点Aerospike集群.除了IP地址/名称,每台机器都是相同的.我根据文档在每台机器上安装了Aerospike和管理控制台.
然后我编辑了网络/服务和网络/心跳部分/etc/aerospike/aerospike.conf:
network {
service {
address any
port 3000
access-address 10.0.1.11 # 10.0.1.12 and 10.0.1.13 on the other two nodes
}
heartbeat {
mode mesh
port 3002
mesh-seed-address-port 10.0.1.11 3002
mesh-seed-address-port 10.0.1.12 3002
mesh-seed-address-port 10.0.1.13 3002
interval 150
timeout 10
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
当我sudo service aerospike start在每个节点上时,服务运行但它没有聚集.如果我尝试在管理控制台中添加另一个节点,它会通知我:"此处无法监视节点10.0.1.12:3000,因为它属于不同的集群."
你能看出我做错了什么吗?我应该aerospike.conf在每个节点上进行哪些更改,以便设置Aerospike集群而不是三个隔离的实例?
我是 Aerospike 的新手...!
当我尝试将记录插入数据库时,它显示超时错误,例如...
aql> INSERT INTO test.student (pk, emp_id, name, age) VALUES ('k003', 'BP003', 'Sai', 25)
Error: (9) Client timeout: timeout=1000 iterations=1 failedNodes=0 failedConns=0
Run Code Online (Sandbox Code Playgroud)
还有一件事情....
我关闭我的wifi,然后运行相同的命令,当时它没有显示错误并且命令成功运行。
aql> INSERT INTO test.student (pk, emp_id, name, age) VALUES ('k003', 'BP003', 'Sai', 25)
OK, 1 record affected.
Run Code Online (Sandbox Code Playgroud)
所以这是什么意思...?
谁能帮我解决这个问题.....!
如何从aerospike命名空间获取所有键,就像我可以从地图中获取键一样map.keyset.我经历了这个链接Aerospike:我如何获得记录密钥?.我做了答案中被告知的事情.我编写了代码,writePolicy.sendKey = true但是NULL当我在scanCallback功能中显示密钥时,我仍然会得到.
这是我写一条记录的代码(任何帮助将不胜感激)
def writeToAerospike(): Boolean = {
val host:Host = new Host("xx.xxx.xxx.xx", 3000)
val client = new AerospikeClient(new ClientPolicy,host)
val policy = new WritePolicy();
policy.sendKey = true;
policy.timeout = 50000;
if(client.isConnected()){
println("connection to aerospike client sucessful")
client.put(policy,new Key("test", "testSet", "1"),new Bin("name", "john"))
//verify if the record is entered correctly
println(client.get(policy,new Key("test", "testing", "1")).getValue("name"))
client.close()
return true
}
return false
}
Run Code Online (Sandbox Code Playgroud)
我使用此示例中的代码来扫描记录:http://www.aerospike.com/docs/client/java/usage/scan/scan.html
class ScanParallelTest …Run Code Online (Sandbox Code Playgroud) 我有一个复制因子为6(和6个节点)的集群.
我想在不停机的情况下将复制因子更改为3.
如果我按节点更改RF节点并重新启动每个节点会发生什么?
有可能工作吗?
我想要有一个 aerospike-server 节点的多个实例,以便实现负载平衡,因为我向服务器发出了如此多的请求,我收到一条错误消息“错误代码 22:此时不允许操作”。
我假设拥有更多 aerospike 服务器节点,我可以减轻一个节点上的负载,从而完成更多操作?我只是不知道从哪里开始。
我需要这些节点全部位于一台主机本地。任何帮助都会很棒。
我的网络知识不是很好所以请原谅我
我的 Docker 文件:
FROM aerospike/aerospike-server
MAINTAINER "xxxx"
ADD aerospike.conf /etc/aerospike/
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: "3"
services:
aerospike-server:
image: amc
container_name: aerospike-server
ports:
- "3000:3000"
- "3001:3001"
- "3002:3002"
- "3003:3003"
aerospike-amc:
image: mrbar42/aerospike-amc
container_name: aerospike-amc
ports:
- "8081:8081"
Run Code Online (Sandbox Code Playgroud)
aerospike.conf 网络节
network {
service {
address any
port 3000
# Uncomment the following to set the `access-address` parameter to the
# IP address of the Docker host. This will the allow the server to …Run Code Online (Sandbox Code Playgroud) 我在docker中运行aerospike服务器.
$ docker run -d --name aerospike aerospike/aerospike-server
0ad3b2df67bd17f896e87ed119758d9af7fcdd9b82a8632828e01072e2c5673f
Run Code Online (Sandbox Code Playgroud)
它成功启动.
$docker ps
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS NAMES
0ad3b2df67bd aerospike/aerospike-server "/entrypoint.sh asd"
4 seconds ago Up 2 seconds 3000-3003/tcp aerospike
Run Code Online (Sandbox Code Playgroud)
我使用下面的命令找到了docker的ip地址.
$ docker inspect -f '{{.NetworkSettings.IPAddress }}' aerospike
172.17.0.2
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下命令连接到aql时,它也是成功的.
$ docker run -it aerospike/aerospike-tools aql -h $(docker inspect -f
'{{.NetworkSettings.IPAddress }}' aerospike)
Aerospike Query Client
Version 3.15.0.3
C Client Version 4.2.0
Copyright 2012-2017 Aerospike. All rights reserved.
aql> select * from test.person
0 rows in set (0.002 …Run Code Online (Sandbox Code Playgroud) 我想在Google Compute Engine(GCE)上的CoreOS上由Kubernetes管理的Docker容器上运行Aerospike集群.但由于GCE不允许组播,我必须使用此处所述的Mesh心跳,必须通过指定所有节点的IP地址和端口来设置; 它似乎对我来说太不灵活了.
Kubernetes/CoreOS/GCE上的Aerospike集群是否有任何推荐的云配置设置,并保留了集群的灵活性?
我正试图运行一个空中飞行的例子:
package main
import (
"github.com/aerospike/aerospike-client-go"
"fmt"
)
func panicOnError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// define a client to connect to
client, err := NewClient("127.0.0.1", 3000)
panicOnError(err)
key, err := NewKey("test", "aerospike", "key")
panicOnError(err)
// define some bins with data
bins := BinMap{
"bin1": 42,
"bin2": "An elephant is a mouse with an operating system",
"bin3": []interface{}{"Go", 2009},
}
// write the bins
err = client.Put(nil, key, bins)
panicOnError(err)
// read …Run Code Online (Sandbox Code Playgroud) 我想使用golang连接到aerospike服务器
我无法获得任何提供此类选项的库.Redis等的默认golang库具有明确的池示例.不确定为什么他们因为空中加速器而失踪
aerospike ×10
docker ×3
go ×2
database ×1
dockerfile ×1
get ×1
key ×1
kubernetes ×1
namespaces ×1
nosql ×1
record ×1
redis ×1
replication ×1