1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kevin158-redis_sync

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Описание

В ходе работы было выявлено, что для синхронизации данных между основными узлами Redis нет удобных готовых инструментов, поэтому был создан такой.

Этот открытый проект предназначен для использования в окружении Nginx + Lua, где команды Redis, требующие синхронизации, записываются в очередь ядра через сообщения, а затем сервер синхронизации, работающий на том же компьютере, выполняет асинхронную многопоточную запись данных.

Проект состоит из двух частей:

server — сервер синхронизации, который читает команды из очереди сообщений ядра и синхронизирует данные на других узлах Redis;

lua_ext — расширение Lua для вызова из скриптов Lua, которое записывает команды Redis, требующие синхронизации, в очередь сообщений ядра.

Запуск сервера синхронизации:

redis_sync_server -H /usr/local/syncserver -d

-d указывает на запуск в режиме демона.

-H указывает домашний каталог программы, то есть путь, указанный при компиляции через CMAKE_INSTALL_PREFIX.

Пример использования Lua-скрипта:

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Программа для мультизаписи на другие узлы Redis может использоваться для синхронизации данных основного узла Redis между несколькими IDC. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kevin158-redis_sync.git
git@api.gitlife.ru:oschina-mirror/kevin158-redis_sync.git
oschina-mirror
kevin158-redis_sync
kevin158-redis_sync
master