
Futriix
Futriix's полная документация (команды идентичны)
Изучить полную документацию
Сообщить об ошибке
·
Предложение новой функциональности
Краткая документация проекта Futriix
Содержание
О проекте
Проект Futriix является форком проекта Valkey. Futriix-Распределённая СУБД на языке "C", построенная на базе Valkey, с поддержкой модулей на базе Искусственного интеллекта и модулей на языке Golang.
СУБД поддерживает модуль c распределённым JSON, ИИ-модуль "Виртуальный помощник", SQL-модуль.
Ниже приведён пример того, инструкции по настройке вашего проекта локально. Чтобы запустить локальную копию проекта, выполните следующие простые шаги.
Подготовка
Ниже приведены шаги, которые помогут вам скомпилировать и установить Futriix.
- Устанавливаем язык программирования C, соопутствующие утилиты (autoconf и другие)
unix:$ sudo apt update && sudo apt upgrade
unix:$ sudo apt install build-essential nasm autotools-dev autoconf libjemalloc-dev tcl tcl-dev uuid-dev libcurl4-openssl-dev git
- Устанавливаем язык программирования Golang по инструкции с официального сайта
Компиляция
Для того, чтобы успешно скомпилировать проект, выполните шаги ниже:
- Скопировать репозиторий
git clone https://source.futriix.ru/gvsafronov/Futriix
- Перейти в каталог с исходном кодом src
cd src/
(К началу)
- Скомпилировать Futriix с помощью утилиты Make
Futriix может быть скомпилирован для Linux, OSX, OpenBSD, NetBSD, FreeBSD. Мы поддерживаем архитектуры endian и little endian, и 32-битные и 64-битные системы.
unix:$ make
Для сборки проекта с поддержкой TLS, вам необходима библиотека OpenSSL (например, libssl-dev для Debian/Ubuntu).
Для сборки проекта с поддержкой TLS выпоните команды ниже:
unix:$ make BUILD_TLS=yes
To build TLS as Futriix module:
unix:$ make BUILD_TLS=module
Для сборки проекта с экспериментальной поддержкой RDMA вам необходимо установить библиотеку разработки RDMA (например, librdmacm-dev and libibverbs-dev для Debian/Ubuntu).
Для сборки Futriix c поддержкой RDMA просто выполните следующие команды:
unix:$ make BUILD_RDMA=yes
To build RDMA as Futriix module:
unix:$ make BUILD_RDMA=module
Для сборки проекта с поддержкой systemd, вам необходимо установить соответсвующие библиотеки разработки (такие как libsystemd-dev для Debian/Ubuntu или systemd-devel для CentOS) и выполнить следующие команды:
unix:$ make USE_SYSTEMD=yes
Для добавления суффикса в имя проекта Futriix, выполните следующие команды:
unix:$ make PROG_SUFFIX="-alt"
После сборки Futriix, мы рекомендуем запустить утилиту для проверки корректности сборки:
unix:$ make test
Команда выше запустит интегрированные в проект тесты. Additional tests are started using:
unix:$ make test-unit # Юнит-тесты
unix:$ make test-modules # Тесты модулей API
unix:$ make test-cluster # Тест Futriix для проверки работы кластера
Более подробную информацию вы найдёте ознакомившись со следующими источниками: tests/README.md а также src/unit/README.md.
(К началу)
Исправление проблем сборки с зависимостями или кэшированными параметрами сборки.
Futriix содержит некоторые зависимости, которые хранятся в директории deps
.
Утилита make
автоматически не пересобирает зависимости даже если вносятся каие-либо изменения в код зависимостей.
Когда вы обновляете код проекта командой git pull
или когда код внутри
дерева зависимостей изменен каким-либо другим способом, обязательно используйте следующее
команду для того, чтобы действительно все почистить и пересобрать с нуля:
unix:$ make distclean
В результате работы команды выше будут очищены: аллокатор памяти jemalloc, язык lua, библиотеку hiredis, библиотеку linenoise а также другие зависимости.
Кроме того, если вы принудительно используете определенные параметры сборки, такие как 32-битная версия для 32-битной системы, оптимизации компилятора C в данном случае не будут выполнены. Оптимизации (для целей отладки) и другие подобные параметры времени сборки,
кэшируются на неопределенный срок, пока вы не выполните команду make distclean
.
(К началу)
Аллокатор
Выбор аллокатора памяти не по умолчанию при сборке Futriix выполняется путем установки
параметра MALLOC
переменной окружения. Futriix компилируется и компонуется с libc
malloc по умолчанию, за исключением jemalloc, который используется по умолчанию в дистрибутивах Linux.
Это значение по умолчанию было выбрано потому, что в jemalloc меньше
проблем c фрагментацией, чем libc malloc.
Чтобы принудительно скомпилировать libc malloc, выполните следующую команду:
unix:$ make MALLOC=libc
To compile against jemalloc on Mac OS X systems, use:
unix:$ make MALLOC=jemalloc
Монотонные часы
По умолчанию Futriix будет использовать функцию POSIX clock_gettime в качестве монотонный источник тактовой частоты. В большинстве современных систем внутреннюю тактовую частоту процессора можно использовать для улучшения производительности. Предостережения можно найти здесь: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/
Для сборки с поддержкой внутренней тактовой частоты процессора, используйте команду ниже:
unix:$ make CFLAGS="-DUSE_PROCESSOR_CLOCK"
Расширенный вариант сборки
Futriix по умолчанию создает удобный для пользователя цветной вывод. Если вы хотите увидеть более подробный вывод, выполните следующую команду:
unix:$ make V=1
- Если вы хотите запустить сервер Futriix с параметрами по-умолчанию (без указания файла конфигурации) выполните следующую команду:
`./futriix-server`
- Также вы можете использовать файл конфигурации, располагающийся в директории "Futriix"
futriix.conf
для конфигурирования вашего сервера. Для запуска Futriix с файлом конфигурации используйте команду ниже:
./futriix-server /path/to/futriix.conf
-
Запустите утилиту futriix-cli (Client Futriix) для подключения к локальному серверу Futriix, а также для того чтобы начать работу с инстансом:
./futriix-cli
-
Для подключения с помощью утилиты futriix-cli к конкретному узлу в сети, добавьте параметр
h
-указание удалённого хоста по его ip-адресу и параметрp
- указания номера порта:./futriix-cli -h 11.164.22.7 -p 50000
(К началу)
Запуск Futriix с RDMA:
Обратите внимание, что поддержка RDMA в Futriix— экспериментальная функция. Она может быть изменена или удалена в любой дополнительной или основной версии. В настоящее время она поддерживается только в Linux.
-
Команда для включения RDMA :
./src/futriix-server --protected-mode no \ --rdma-bind 192.168.122.100 --rdma-port 9880
-
Режим работы модуля RDMA:
./src/futriix-server --protected-mode no \
--loadmodule src/Futriix-rdma.so --rdma-bind 192.168.122.100 --rdma-port 9880
Можно изменить адрес/порт привязки RDMA с помощью команды времени выполнения:
unix:$ 192.168.122.100:9880> CONFIG SET rdma-port 9380
Также возможно наличие одновременно RDMA и TCP, но нет конфликт TCP(9880) и RDMA(9880), например:
unix:$ ./src/futriix-server --protected-mode no \
--loadmodule src/Futriix-rdma.so --rdma-bind 192.168.122.100 --rdma-port 9880 \
--port 9880
Примечание: Ваша сетевая карта (с ip-адресом 192.168.122.100 в данном примере) должна поддерживать режим RDMA. Для того что понять поддерживает сервер режим RDMA или нет, выполните команду ниже:
unix:$ rdma res show (a new version iproute2 package)
Или команду ниже:
unix:$ ibv_devices
Использование
unix:$ cd src
unix:$ ./futriix-cli
127.0.0.1:futriix:~> ping
PONG
127.0.0.1:futriix:~> set foo bar
OK
127.0.0.1:futriix:~> get foo
"bar"
127.0.0.1:futriix:~> incr mycounter
(integer) 1
127.0.0.1:futriix:~> incr mycounter
(integer) 2
127.0.0.1:futriix:~>
(К началу)
Кластер
- Откройте директорию Futriix
unix:$ cd futriix
- Откройте файл конфигурации futriix.conf в любом текстовом редакторе, например nano, как в примере приведённом ниже:
unix:$ nano futriix/futriix.conf
- Найдите и установите значения "yes" для параметров "active-replica" и "multi-master". После чего добавьте в файл конфигурации ip-адреса, узлов вашего кластера. Если вы всё сделали правильно у вас должны отробразится строки в файле конфигурации
futriix.conf
как показано ниже:
active-replica yes
multi-master yes
replicaof 192.168.11.5 9880
replicaof 192.168.11.6 9880
replicaof 192.168.11.7 9880
- Сохраните внесённые вами изменния, выйдите из редактора, воспользовавшись командами ниже:
unix:$ ctrl+O
unix:$ ctrl+x
- Перейдите в директорию Futriix и запустите скрипт
cluster.sh
с параметрамиpick
(скрипт запущенный с данным параметром "соберёт кластер"), иrun
,(скрипт запущенный с данным параметром "запустит кластер") как указано ниже:
unix:$ ./cluster pick
unix:$ ./cluster run
- Установите права на исполнение на скрипт
cluster.sh
, воспользовавшись командой ниже:
unix:$ chmod +x cluster.sh
- Для остановки кластера запустите скрипт
cluster.sh
с параметромstop
unix:$ ./cluster stop
(К началу)
Дорожная карта
- Добавить поддержку хранимых процедур
- Изменить приглашение командной строки клиента futriix-cli
- Переписать скрипт cluster.sh, формирующий кластер Futriix
- Добавить поддержку модуля для работы с JSON
- Добавить в проект поддержку модуля, позволяющего запускать команды терминала операционной системы
- Реализовать поддержку алгоритма Raft
- Добавить поддержку языка запросов SQL
См. Открытые проблемы полный список предлагаемых функций (и известных проблем).
(К началу)
Вклад
Вклады — это то, что делает сообщество открытого исходного кода таким замечательным местом для обучения, вдохновения и творчества. Любой ваш вклад очень ценится.
Если у вас есть предложение, которое могло бы улучшить ситуацию, создайте форк репозитория и создайте запрос на включение. Также можно просто открыть задачу с тегом «улучшение». Не забудьте поставить проекту звезду! Еще раз спасибо!
- Форкните проект
- Создайте свою ветку функций (
git checkout -b Feature/AmazingFeature
) - Зафиксируйте свои изменения (git commit -m 'Add some AmazingFeature'`)
- Отправьте в ветку (
git push origin Feature/AmazingFeature
) - Откройте запрос на включение
Лицензия
Проект распространяется под 3-пунктной лицензией BSD. Подробнсти смотрите в файле COPYING.txt
.
(К началу)
Контакты
Григорий Сафронов - E-mail
Ссылка на проект (https://source.futriix.ru/gvsafronov/Futriix)
(К началу)