riak: pilote client de buffer de protocole riak en Lua pour nginx-module-lua basé sur l'API cosocket
Installation
Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.
CentOS/RHEL 7 ou 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
Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.
Ce document décrit lua-resty-riak v2.0.0 publié le 05 décembre 2013.
lua-resty-riak - pilote client de buffer de protocole riak en Lua pour ngx_lua basé sur l'API cosocket.
À l'origine basé sur la bibliothèque lua-resty-memcached.
Influencé par riak-client-ruby
Description
Cette bibliothèque Lua est un pilote client de buffer de protocole riak pour le module nginx ngx_lua.
Cette bibliothèque Lua tire parti de l'API cosocket de ngx_lua, qui garantit un comportement 100 % non-bloquant.
Notez qu'au moins ngx_lua 0.5.0rc29 ou ngx_openresty 1.0.15.7 est requis.
Dépend des modules Lua suivants :
- lua-pb - https://github.com/Neopallium/lua-pb
- struct - http://www.inf.puc-rio.br/~roberto/struct/
- lpack - http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#lpack
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, "échec de la connexion : " .. 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()
';
}
Utilisation
Voir la documentation générée pour l'utilisation et des exemples.
Remarque L'API de haut niveau doit être considérée comme stable - c'est-à-dire qu'elle ne changera pas entre les versions mineures. L'API de bas niveau ou brute ne doit pas être considérée comme stable.
Changement Potentiellement Casseur dans 2.0
2.0.0 utilise désormais des horloges vectorielles pour les récupérations, les ensembles et les suppressions d'objets. Si vous utilisez un bucket qui permet plusieurs valeurs (frères), cela peut casser votre application.
Limitations
- Cette bibliothèque ne peut pas être utilisée dans des contextes de code comme set_by_lua, log_by_lua, et header_filter_by_lua où l'API cosocket ngx_lua n'est pas disponible.
- Les instances d'objet
resty.riakne peuvent pas être stockées dans une variable Lua au niveau du module Lua, car elles seront alors partagées par toutes les requêtes concurrentes gérées par le même processus de travail nginx (voir Partage de données au sein d'un travail Nginx) et entraîneront de mauvaises conditions de concurrence lorsque des requêtes concurrentes essaient d'utiliser les mêmes instances. Vous devez toujours initier ces objets dans des variables locales de fonction ou dans la tablengx.ctx. Ces emplacements ont tous leurs propres copies de données pour chaque requête.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-riak.