如何在 Ubuntu 14.04 上使用 Python3 安装和配置 Riak2

介绍

Riak 是一个 noSQL 非关系式数据库,专注于分布式数据库架构. 随着最新 Riak 2.1.1 版本,所有数据都可以成为 strongly consistent,其中数据在检索时是最新的,而不是 eventually consistent,其中数据更容易访问,但不是最新的。

Riak 是关键值 noSQL 实现系列中的一个选择,其竞争对手包括 Redis、MemcacheDB 和 Aerospike. 作为一个关键值数据库,因此它不适合收集整个数据集的 SQL-esque 查询。

前提条件

要遵循本教程,您将需要:

步骤 1 - 安装 Riak

在本节中,我们将安装Riak本身。

随着 2.0 的发布,Riak 已将其包从自托管的 apt 存储库迁移到 packagecloud.io 服务中,所以我们需要用 Riak 填充 `apt' 索引。

首先,我们将下载剧本。

1curl -O https://packagecloud.io/install/repositories/basho/riak/script.deb.sh

不是直接执行它,首先打开脚本,以验证它包含我们期望的内容。

1less script.deb.sh

要通过 HTTPS 获取包,脚本需要安装 apt-transport-https 包,它还会检查证书权威,导入公共密钥,并更新您的包索引。

q来关闭文件,然后执行脚本。

1sudo bash script.deb.sh

最后,安装Riak。

1sudo apt-get install riak=2.1.1-1

步骤 2 – 配置和启动 Riak

在本节中,我们将配置和启动一个Riak节点。

首先,我们需要通过一些建议的设置优化Riak的Erlang VM,我们将进行两项修改:设置排队扫描间隔和禁用计程器的负载压缩。

使用nano或您最喜欢的文本编辑器打开新 Riak 2.0 的配置文件。

1sudo nano /etc/riak/riak.conf

删除下面所突出的 erlang.schedulers.force_wakeup_interval = 500 行,请确保领先空间也被删除,以便 `e' 是行中的第一个字符。

 1[label /etc/riak/riak.conf]
 2. . .
 3
 4## Set scheduler forced wakeup interval. All run queues will be
 5## scanned each Interval milliseconds. While there are sleeping
 6## schedulers in the system, one scheduler will be woken for each
 7...
 8## Default: 500
 9##
10## Acceptable values:
11##   - an integer
12## erlang.schedulers.force_wakeup_interval = 500
13
14. . .

重复此过程,即在下列情况下,在块中的 erlang.schedulers.compaction_of_load = false:

 1[label /etc/riak/riak.conf]
 2. . .
 3
 4## Enable or disable scheduler compaction of load. By default
 5## scheduler compaction of load is enabled. When enabled, load
 6## balancing will strive for a load distribution which causes as many
 7...
 8## Default: false
 9##
10## Acceptable values:
11##   - one of: true, false
12## erlang.schedulers.compaction_of_load = false
13
14. . .

保存和退出文件。

要启动一个 Riak 节点,运行:

1sudo riak start

你会看到以下。

1[label Output]
2!!!!
3!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
4!!!!

上面的消息警告说,我们的系统有一个低的开放文件限制,这限制了在任何时候打开文件的处理数量。想想每一个处理器作为一个写作工具,我们拥有。

默认情况下,系统可用的写入工具的限制为 1024;Riak 建议将该限制提高到 65536. 要提高这个限制,请参阅 官方 Riak 开放文件限制文档

若要双重检查您的节点是否正在运行,请使用以下方法。

1sudo riak ping

如果节点正在运行,该命令将输出pong,否则将返回错误。

要运行预先构建的 Riak 测试序列,运行:

1sudo riak-admin test

上面的命令将输出如下。

1[label Output]
2Successfully completed 1 read/write cycle to '[email protected]'

您的 Riak 节点现在正在运行。

步骤 3 — 构建一个Python应用程序示例(可选)

以下是一系列可选的步骤来设置样本Python-Riak应用程序. 上面的指示是语言无效的,并且不依赖于下列操作以正常运作。

首先,检查当前的Python版本。

1python --version

你应该看到输出:

1[secondary_label Output]
2Python 2.7.6

我们希望有python运行Python 3. 所以,让我们删除旧的二进制。

1sudo rm /usr/bin/python

接下来,创建一个符号链接到Python 3二进制。

1sudo ln -s /usr/bin/python3 /usr/bin/python

如果您现在再次运行python --version,您将看到Python 3.4.0输出。

接下来,我们将安装Pip,Python包的推荐包安装程序。Pip允许我们轻松管理我们想要的任何Python3包。

要安装它,只需执行以下操作:

1sudo apt-get install python3-pip

现在,我们需要安装Python-Riak客户端,首先需要满足几个依赖性:

1sudo apt-get install python3-dev libffi-dev libssl-dev

安装客户端。

1sudo pip3 install riak

最后,我们将编码一个样本应用程序来测试Python-Riak组合,创建一个新的文件夹来容纳应用程序,并在其中创建一个新的文件。

1mkdir ~/test
2sudo nano ~/test/app.py

请将下列内容插入内部,这是来自 Riak 官方文档的样本代码。

 1[label ~/test/app.py]
 2import riak
 3
 4# connect to Riak
 5myClient = riak.RiakClient(pb_port=8087, protocol='pbc')
 6
 7# create new Bucket
 8myBucket = myClient.bucket('test')
 9
10# store key-value pairs
11val1 = 1
12key1 = myBucket.new('one', data=val1)
13key1.store()
14
15val2 = "two"
16key2 = myBucket.new('two', data=val2)
17key2.store()
18
19val3 = {"myValue": 3}
20key3 = myBucket.new('three', data=val3)
21key3.store()
22
23# fetch the data
24fetched1 = myBucket.get('one')
25fetched2 = myBucket.get('two')
26fetched3 = myBucket.get('three')
27
28print('Value 1 correct: '+str(val1 == fetched1.data))
29print('Value 2 correct: '+str(val2 == fetched2.data))
30print('Value 3 correct: '+str(val3 == fetched3.data))

现在,运行以下操作来测试此应用程序。

1python ~/test/app.py

它会发出以下警告,但这可能会被忽视。

1[secondary_label Python application warning]
2/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.
3  warnings.warn(msg, UserWarning)

Transport Layer Security (TLS) 1.2 只是建立在 TLS 1.1 上面的更严格的安全协议,TLS 反过来通常是从 SSL 升级的。 然而,Internet Explorer 并非普遍支持 TLS 1.1 和 1.2,并且 TLS 1.2 已在所有流行的浏览器的早期版本中被禁用。

它应该产出如下:

1[label output]
2Value 1 correct: True
3Value 2 correct: True
4Value 3 correct: True

这就是它!

结论

您现在已经配置了 Riak 2 并成功连接到 Python 3。 然而,这个 Riak 2 安装并非特定于 Python,并且可以很容易地适应其他语言。 有关保护 Riak 的更多信息,请参阅官方 Riak 2 建议

Published At
Categories with 技术
Tagged with
comments powered by Disqus