Zum Inhalt

riak: Lua riak Protokollpuffer-Clienttreiber für nginx-module-lua basierend auf der cosocket API

Installation

Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.

CentOS/RHEL 7 oder Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-riak

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-riak

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-riak v2.0.0, das am 05. Dezember 2013 veröffentlicht wurde.


lua-resty-riak - Lua riak Protokollpuffer-Clienttreiber für ngx_lua basierend auf der cosocket API.

Ursprünglich basierend auf der lua-resty-memcached Bibliothek.

Beeinflusst von riak-client-ruby

Beschreibung

Diese Lua-Bibliothek ist ein riak Protokollpuffer-Clienttreiber für das ngx_lua nginx-Modul.

Diese Lua-Bibliothek nutzt die cosocket API von ngx_lua, die ein 100% nicht blockierendes Verhalten gewährleistet.

Beachten Sie, dass mindestens ngx_lua 0.5.0rc29 oder ngx_openresty 1.0.15.7 erforderlich ist.

Hängt von den folgenden Lua-Modulen ab:

Synopsis

location /t {
    content_by_lua '
        require "luarocks.loader"
        local riak = require "resty.riak"
        local client = riak.new()
        local ok, err = client:connect("127.0.0.1", 8087)
        if not ok then
            ngx.log(ngx.ERR, "connect failed: " .. err)
        end
        local bucket = client:bucket("test")
        local object = bucket:new("1")
        object.value = "test"
        object.content_type = "text/plain"
        local rc, err = object:store()
        ngx.say(rc)
        local object, err = bucket:get("1")
        if not object then
            ngx.say(err)
        else
            ngx.say(object.value)
        end
        client:close()
    ';
}

Verwendung

Siehe die generierten Dokumente für Verwendung und Beispiele.

Hinweis Die hochgradige API sollte als stabil betrachtet werden - d.h. sie wird zwischen den Minor-Versionen nicht brechen. Die niedriggradige oder rohe API sollte nicht als stabil betrachtet werden.

Potenziell brechende Änderung in 2.0

2.0.0 verwendet jetzt Vektorklokken für das Abrufen, Setzen und Löschen von Objekten. Wenn Sie einen Bucket verwenden, der mehrere Werte (Geschwister) zulässt, kann dies Ihre Anwendung brechen.

Einschränkungen

  • Diese Bibliothek kann nicht in Codekontexten wie set_by_lua, log_by_lua und header_filter_by_lua verwendet werden, in denen die ngx_lua cosocket API nicht verfügbar ist.
  • Die resty.riak Objektinstanzen können nicht auf Modulebene in einer Lua-Variablen gespeichert werden, da sie dann von allen gleichzeitigen Anfragen, die vom selben nginx-Arbeiterprozess bearbeitet werden, geteilt werden (siehe Datenfreigabe innerhalb eines Nginx-Arbeiters) und zu schlechten Wettlaufbedingungen führen können, wenn gleichzeitige Anfragen versuchen, dieselben Instanzen zu verwenden. Sie sollten diese Objekte immer in lokalen Funktionsvariablen oder in der ngx.ctx Tabelle initialisieren. Diese Orte haben alle ihre eigenen Datenkopien für jede Anfrage.

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-riak.