Вступление
Riak - это нереляционное хранилище данных noSQL с упором на архитектуру распределенных баз данных. В новейшей редакции Riak 2.1.1 все данные могут быть сделаны сильно согласованными, в которых данные являются актуальными после извлечения, в отличие от существенно согласованными, в которых данные более доступны, но не обновлены.
Riak - один из вариантов семейства реализаций noSQL с ключами-значениями, с конкурентами, включая Redis, MemcacheDB и Aerospike. Как база данных ключ-значение, она, следовательно, не оптимизирована для запросов SQL-esque, которые захватывают весь набор данных.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Одна свежая капля Ubuntu 14.04
-
Пользователь без полномочий root, который можно настроить, выполнив шаги 2 и 3 https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-an-ubuntu- 14-04-vps [этот урок]
Шаг 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 +
является первым символом строки.
/etc/riak/riak.conf
. . .
## 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.compaction_of_load = false +
в блоке сразу после:
/etc/riak/riak.conf
. . .
## 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
. . .
Сохраните и выйдите из файла.
Чтобы запустить узел Riak, запустите:
sudo riak start
Вы увидите следующее.
Выход
!!!!
!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
!!!!
Приведенное выше сообщение предупреждает, что в нашей системе установлен низкий предел количества открытых файлов, что ограничивает количество дескрипторов открытых файлов в любой данный момент. Думайте о каждой ручке как о пишущем инструменте, которым мы владеем. Каждый компьютерный процесс требует пишущего инструмента, чтобы написать
По умолчанию ограничение системы на доступные инструменты для записи составляет 1024; Riak рекомендует повысить этот предел до 65536. Чтобы поднять этот лимит, см. Http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/[official Riak Открытые лимиты документации].
Чтобы дважды проверить, что ваш узел работает, используйте следующее.
sudo riak ping
Команда выведет + pong +
, если узел работает, и в противном случае выдаст ошибку.
Чтобы запустить последовательность предварительно созданных тестов Riak, выполните:
sudo riak-admin test
Эта команда выше выведет следующее.
Выход
Successfully completed 1 read/write cycle to '[email protected]'
Ваш узел 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, который мы хотели бы иметь. Чтобы ознакомиться с обзором Pip, вы можете прочитать story это руководство.
Чтобы установить его, просто запустите следующее:
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
Вставьте следующее внутри. Это пример кода из official Riak документации.
~ / Тест / app.py
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)
Transport Layer Security (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.