介绍
Riak是一个noSQL,非关系数据存储,关注分布式数据库架构。 与最新了Riak 2.1.1版,所有数据都可以制成强一致性 ,其中,最多为最新时检索数据是,相对于最终一致的 ,其中数据是更容易获得,但没有达到最新。
Riak是一系列键值NoSQL实现的一个选择,竞争对手包括Redis,MemcacheDB和Aerospike。 因此作为键值数据库,它不会优化用于抓取整个数据集的SQL-esque查询。
先决条件
要遵循本教程,您需要:
一个新鲜的Ubuntu 14.04 Droplet
sudo的一个非root用户,您可以设置按照第2步和3 本教程
第1步 - 安装Riak
在本节中,我们将安装Riak本身。
随着2.0的发布,已了Riak迁移其从套餐自托管APT仓库到packagecloud.io的服务,所以我们需要来填充apt
用了Riak指数。 幸运的是,Riak提供了一个自定义脚本。
首先,我们将下载脚本。
curl -O https://packagecloud.io/install/repositories/basho/riak/script.deb.sh
而不是直接执行它,首先打开脚本,以验证它包含我们期望的。
less script.deb.sh
获取通过HTTPS包,该脚本需要安装apt-transport-https
包。 它还检查证书颁发机构,导入公钥,并更新您的包索引。
按q
关闭文件,然后执行该脚本。
sudo bash script.deb.sh
最后,安装Riak。
sudo apt-get install riak=2.1.1-1
第2步 - 配置和启动Riak
在本节中,我们将配置和启动Riak节点。
首先,我们需要使用一些推荐的设置来优化Riak的Erlang VM。 我们将做两个修改:设置队列扫描间隔和禁用负载的调度程序压缩。
利用打开新的了Riak 2.0的配置文件nano
或您喜爱的文本编辑器。
sudo nano /etc/riak/riak.conf
取消对erlang.schedulers.force_wakeup_interval = 500
线,如下。 确保主导空间也被删除,因此, e
是该行的第一个字符。
. . .
## Set scheduler forced wakeup interval. All run queues will be
## scanned each Interval milliseconds. While there are sleeping
## schedulers in the system, one scheduler will be woken for each
...
## Default: 500
##
## Acceptable values:
## - an integer
## erlang.schedulers.force_wakeup_interval = 500
. . .
重复此过程中erlang.schedulers.compaction_of_load = false
在后直接块:
. . .
## Enable or disable scheduler compaction of load. By default
## scheduler compaction of load is enabled. When enabled, load
## balancing will strive for a load distribution which causes as many
...
## Default: false
##
## Acceptable values:
## - one of: true, false
## erlang.schedulers.compaction_of_load = false
. . .
保存并退出文件。
要启动Riak节点,请运行:
sudo riak start
您将看到以下内容。
!!!!
!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
!!!!
上述消息警告我们的系统具有低打开文件限制,这限制了在任何给定时刻打开的文件句柄的数量。 想想每个句柄作为我们自己的写作工具。 每个计算机过程都需要一个写工具,来写
默认情况下,系统对可用写入工具的限制为1024; 建议了Riak提高这一限额65536为了提高此限制,请参见官方了Riak打开文件限制文件 。
要检查您的节点是否正在运行,请使用以下命令。
sudo riak ping
该命令将输出pong
如果节点正在运行,否则将返回一个错误。
要运行一系列预构建的Riak测试,请运行:
sudo riak-admin test
以上命令将输出以下内容。
Successfully completed 1 read/write cycle to 'riak@127.0.0.1'
您的Riak节点现在已启动并正在运行。
第3步 - 构建示例Python应用程序(可选)
以下是设置示例Python-Riak应用程序的一系列可选步骤。 上述指令是语言不可知的,不依赖于以下功能正常工作。 如果你对示例Python应用程序不感兴趣,可以跳过到“结论”部分。
首先,检查你当前的Python版本。
python --version
您应该看到输出:
OutputPython 2.7.6
我们希望有python
运行Python 3。所以,让我们删除旧的二进制文件。
sudo rm /usr/bin/python
接下来,创建一个指向Python 3二进制文件的符号链接。
sudo ln -s /usr/bin/python3 /usr/bin/python
如果您运行python --version
现在又说,你会看到输出Python 3.4.0
。
接下来,我们将安装Pip,Python软件包的推荐软件包安装程序。 Pip允许我们轻松地管理任何我们想要的Python3包。 画中画的概述,可以读出这个教程 。
要安装它,只需运行以下命令:
sudo apt-get install python3-pip
现在,我们需要安装Python-Riak客户端。 首先需要满足几个依赖关系:
sudo apt-get install python3-dev libffi-dev libssl-dev
安装客户端。
sudo pip3 install riak
最后,我们将编写一个示例应用程序来测试Python-Riak组合。 创建一个新文件夹来容纳应用程序并在其中创建一个新文件。
mkdir ~/test
sudo nano ~/test/app.py
粘贴以下内容。 这是从样本代码官方了Riak文档 。
import riak
# connect to Riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc')
# create new Bucket
myBucket = myClient.bucket('test')
# store key-value pairs
val1 = 1
key1 = myBucket.new('one', data=val1)
key1.store()
val2 = "two"
key2 = myBucket.new('two', data=val2)
key2.store()
val3 = {"myValue": 3}
key3 = myBucket.new('three', data=val3)
key3.store()
# fetch the data
fetched1 = myBucket.get('one')
fetched2 = myBucket.get('two')
fetched3 = myBucket.get('three')
print('Value 1 correct: '+str(val1 == fetched1.data))
print('Value 2 correct: '+str(val2 == fetched2.data))
print('Value 3 correct: '+str(val3 == fetched3.data))
现在,运行以下测试此应用程序。
python ~/test/app.py
它将输出以下警告,但这可以忽略。
Python application warning/usr/local/lib/python3.4/dist-packages/riak/security.py:54: UserWarning: Found OpenSSL 1.0.1f 6 Jan 2014 version, but expected at least OpenSSL 1.0.1g. Security may not support TLS 1.2.
warnings.warn(msg, UserWarning)
传输层安全(TLS)1.2只是一个建立在TLS 1.1之上的更严格的安全协议,TLS反过来通常是从SSL升级。 但是,Internet Explorer不普遍支持TLS 1.1和1.2,并且在所有流行的浏览器的早期版本中禁用TLS 1.2。 因此,我们可以通过SSL来安全地管理应用程序和Riak数据存储之间的连接。
它应该输出以下内容:
Value 1 correct: True
Value 2 correct: True
Value 3 correct: True
而已!
结论
您现在已配置Riak 2并成功连接到Python3。 这个Riak 2安装不是特定于Python,但是,可以轻松适应其他语言。 有关保护了Riak的更多信息,请参阅官方了Riak 2的建议 。