В ходе работы было выявлено, что для синхронизации данных между основными узлами Redis нет удобных готовых инструментов, поэтому был создан такой.
Этот открытый проект предназначен для использования в окружении Nginx + Lua, где команды Redis, требующие синхронизации, записываются в очередь ядра через сообщения, а затем сервер синхронизации, работающий на том же компьютере, выполняет асинхронную многопоточную запись данных.
Проект состоит из двух частей:
server — сервер синхронизации, который читает команды из очереди сообщений ядра и синхронизирует данные на других узлах Redis;
lua_ext — расширение Lua для вызова из скриптов Lua, которое записывает команды Redis, требующие синхронизации, в очередь сообщений ядра.
redis_sync_server -H /usr/local/syncserver -d
-d
указывает на запуск в режиме демона.
-H
указывает домашний каталог программы, то есть путь, указанный при компиляции через CMAKE_INSTALL_PREFIX
.
package.cpath = '/usr/local/lib/lua/5.1/?.so;/usr/local/openresty/lualib/?.so;;'
local syncr = require("libsyncr")
local msgid, err = syncr.sync_init()
if msgid < 0 then
ngx.log(ngx.ERR, "sync_init failed : ", err)
return
end
local ok, err = syncr.sync_command(msgid, "set bcc 8907")
if not ok then
ngx.log(ngx.ERR, "sync_command failed : ", err)
return
end
[log]
config_file=${SYNC_SERVER_HOME}/etc/log.conf
[server]
pid_file=${SYNC_SERVER_HOME}/logs/sync.pid
cwd=${SYNC_SERVER_HOME}
[redis]
sync_nodes_list=10.255.209.66:6379
thread_num=1
timeout_secs=1
jemalloc — используется для замены malloc; zlog — для вывода логов; hiredis — клиент для доступа к Redis.
Используйте cmake для компиляции.
Перейдите в каждый подкаталог, создайте там директорию build, перейдите в неё и выполните cmake && make && make install.
Рекомендуется модифицировать CMakeLists для достижения своих целей, либо обратиться ко мне.
По умолчанию lua_ext устанавливается в /usr/local/openresty/lualib/
, но это можно изменить.
По умолчанию server устанавливается в /usr/local/
, рекомендуется использовать CMAKE_INSTALL_PREFIX для изменения этого пути.
Дон Кихот
421093703@qq.com
http://my.oschina.net/xuhh
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )