Einführung
Riak ist ein nicht relationaler noSQL-Datenspeicher mit Schwerpunkt auf verteilter Datenbankarchitektur. Mit der neuesten Version von Riak 2.1.1 können alle Daten stark konsistent gemacht werden, wobei die Daten beim Abrufen auf dem neuesten Stand sind, im Gegensatz zu häufig konsistenten Daten, bei denen die Daten zugänglicher, aber nicht auf dem neuesten Stand sind.
Riak ist eine Wahl in einer Familie von NoSQL-Implementierungen mit Schlüsselwerten, zu denen Konkurrenten wie Redis, MemcacheDB und Aerospike gehören. Als Schlüsselwertdatenbank ist sie daher nicht für SQL-ähnliche Abfragen optimiert, die einen gesamten Datensatz erfassen.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
-
Ein frisches Ubuntu 14.04 Droplet
-
Ein sudo-Benutzer ohne Rootberechtigung, den Sie einrichten können, indem Sie die Schritte 2 und 3 unter https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-an-ubuntu- ausführen. 14-04-vps [dieses Tutorial]
Schritt 1 - Riak installieren
In diesem Abschnitt werden wir Riak selbst installieren.
Mit der Veröffentlichung von 2.0 hat Riak seine Pakete von einem selbst gehosteten apt-Repository auf den packagecloud.io-Dienst migriert. Daher müssen wir den "+ apt +" - Index mit Riak füllen. Glücklicherweise stellt Riak ein benutzerdefiniertes Skript zur Verfügung, das genau das tut.
Zuerst laden wir das Skript herunter.
curl -O https://packagecloud.io/install/repositories/basho/riak/script.deb.sh
Öffnen Sie das Skript, anstatt es direkt auszuführen, um sicherzustellen, dass es das enthält, was wir erwarten.
less script.deb.sh
Um Pakete über HTTPS abzurufen, muss das Skript das Paket "+ apt-transport-https +" installieren. Außerdem wird nach einer Zertifizierungsstelle gesucht, ein öffentlicher Schlüssel importiert und der Paketindex aktualisiert.
Drücken Sie + q +
, um die Datei zu schließen, und führen Sie dann das Skript aus.
sudo bash script.deb.sh
Schließlich installieren Sie Riak.
sudo apt-get install riak=2.1.1-1
Schritt 2 - Konfigurieren und Starten von Riak
In diesem Abschnitt werden wir einen Riak-Knoten konfigurieren und starten.
Zunächst müssen wir Riaks Erlang VM mit einigen empfohlenen Einstellungen optimieren. Wir werden zwei Änderungen vornehmen: Festlegen der Warteschlangen-Scan-Intervalle und Deaktivieren der Scheduler-Komprimierung der Last.
Öffnen Sie die Konfigurationsdatei des neuen Riak 2.0 mit "+ nano +" oder Ihrem bevorzugten Texteditor.
sudo nano /etc/riak/riak.conf
Kommentieren Sie die Zeile "+ erlang.schedulers.force_wakeup_interval = 500 " aus, die unten hervorgehoben ist. Stellen Sie sicher, dass das führende Leerzeichen ebenfalls gelöscht wird, sodass das " e +" das erste Zeichen der Zeile ist.
/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
. . .
Wiederholen Sie diesen Vorgang für "+ erlang.schedulers.compaction_of_load = false +" im Block direkt nach:
/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
. . .
Speichern und schließen Sie die Datei.
Führen Sie zum Starten eines Riak-Knotens Folgendes aus:
sudo riak start
Sie werden folgendes sehen.
Ausgabe
!!!!
!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
!!!!
Die obige Meldung warnt Sie davor, dass in unserem System ein niedriges Limit für geöffnete Dateien festgelegt ist, wodurch die Anzahl der zu einem bestimmten Zeitpunkt geöffneten Dateihandles begrenzt wird. Stellen Sie sich jeden Griff als Schreibwerkzeug vor, das wir besitzen. Jeder Computerprozess benötigt zum Schreiben ein Schreibwerkzeug
Die Systembeschränkung für verfügbare Schreibwerkzeuge beträgt standardmäßig 1024; Riak empfiehlt, diese Grenze auf 65536 anzuheben. Informationen zum Anheben dieses Grenzwerts finden Sie unter official Riak Open Files Limit documentation.
Gehen Sie folgendermaßen vor, um zu überprüfen, ob Ihr Knoten ausgeführt wird.
sudo riak ping
Der Befehl gibt "+ pong +" aus, wenn der Knoten ausgeführt wird, und gibt andernfalls einen Fehler zurück.
Führen Sie Folgendes aus, um eine Sequenz vorgefertigter Riak-Tests auszuführen:
sudo riak-admin test
Dieser obige Befehl gibt Folgendes aus.
Ausgabe
Successfully completed 1 read/write cycle to '[email protected]'
Ihr Riak-Knoten ist jetzt betriebsbereit.
Schritt 3 - Erstellen einer Beispiel-Python-Anwendung (optional)
Im Folgenden finden Sie eine optionale Reihe von Schritten zum Einrichten einer Python-Riak-Beispielanwendung. Die obigen Anweisungen sind sprachunabhängig und hängen nicht von den folgenden ab, um normal zu funktionieren. Wenn Sie nicht an einer Python-Beispielanwendung interessiert sind, können Sie zum Abschnitt Fazit springen.
Überprüfen Sie zunächst Ihre aktuelle Python-Version.
python --version
Sie sollten die Ausgabe sehen:
OutputPython 2.7.6
Wir möchten, dass + python
Python 3 ausführt. Entfernen wir also die alte Binärdatei.
sudo rm /usr/bin/python
Erstellen Sie als Nächstes eine symbolische Verknüpfung zur Python 3-Binärdatei.
sudo ln -s /usr/bin/python3 /usr/bin/python
Wenn Sie jetzt "+ python --version " erneut ausführen, wird die Ausgabe " Python 3.4.0 +" angezeigt.
Als Nächstes installieren wir Pip, das empfohlene Paketinstallationsprogramm für Python-Pakete. Mit Pip können wir jedes Python3-Paket, das wir haben möchten, einfach verwalten. Eine Übersicht über Pip finden Sie unter dieses Tutorial.
Führen Sie zum Installieren einfach Folgendes aus:
sudo apt-get install python3-pip
Jetzt müssen wir den Python-Riak-Client installieren. Einige Abhängigkeiten müssen zuerst erfüllt werden:
sudo apt-get install python3-dev libffi-dev libssl-dev
Installieren Sie den Client.
sudo pip3 install riak
Schließlich werden wir eine Beispielanwendung zum Testen der Python-Riak-Kombination codieren. Erstellen Sie einen neuen Ordner, in dem sich die Anwendung befindet, und erstellen Sie eine neue Datei.
mkdir ~/test
sudo nano ~/test/app.py
Fügen Sie folgendes ein. Dies ist ein Beispielcode aus der offiziellen Riak-Dokumentation von http://docs.basho.com/riak/latest/dev/taste-of-riak/python/.
~ / test / 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))
Führen Sie nun Folgendes aus, um diese Anwendung zu testen.
python ~/test/app.py
Es wird die folgende Warnung ausgegeben, die jedoch ignoriert werden kann.
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 ist einfach ein strengeres Sicherheitsprotokoll, das auf TLS 1.1 aufbaut, und TLS ist im Allgemeinen ein Upgrade von SSL. Internet Explorer unterstützt TLS 1.1 und 1.2 jedoch nicht allgemein, und TLS 1.2 ist in früheren Versionen aller gängigen Browser deaktiviert. Infolgedessen können wir uns mit SSL begnügen, um die Verbindungen zwischen der Anwendung und dem Riak-Datenspeicher sicher zu regeln.
Es sollte Folgendes ausgeben:
Ausgabe
Value 1 correct: True
Value 2 correct: True
Value 3 correct: True
Das ist es!
Fazit
Sie haben Riak 2 jetzt konfiguriert und erfolgreich mit Python3 verbunden. Diese Riak 2-Installation ist jedoch nicht spezifisch für Python und kann leicht an andere Sprachen angepasst werden. Weitere Informationen zum Sichern von Riak finden Sie unter den offiziellen Riak 2-Empfehlungen.