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

OSCHINA-MIRROR/exinnet-kvproxy

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

KV-прокси: фреймворк для работы с базами данных типа KV

Это прокси-фреймворк для баз данных типа ключ-значение (KV). Он позволяет расширять поддержку протоколов через написание расширений в виде динамических библиотек (SO). По умолчанию уже поддерживается двоичный и текстовый протоколы memcached.

Особенности:

  • быстрый;
  • лёгкий;
  • поддерживает чтение и запись отдельно;
  • синхронизирует и асинхронно копирует данные;
  • использует консистентный хэш;
  • имеет механизм автоматического переключения при отказе (failover): если сервер недоступен, он автоматически исключается из списка;
  • предоставляет конфигурационный файл в формате INI;
  • сохраняет постоянное соединение с сервером;
  • многопоточный режим, на платформе Linux поддерживает сродство к процессору;
  • хорошая расширяемость протокола.

По умолчанию поддерживает двоичный и текстовый протоколы Memcached.

Документация:

Установка: Рекомендуется использовать версии autoconf > 2.62 и automake > 1.13.

$ wget --no-check-certificate https://github.com/exinnet/kvproxy/archive/master.zip
$ unzip master
$ cd kvproxy-master
$ make
$ #optional, install kvproxy in /usr/local/kvproxy
$ sudo make install

Запуск и остановка:

# Запуск
$ ./sbin/kvproxy start

# Остановка
$ ./sbin/kvproxy stop

# Перезапуск
$ ./sbin/kvproxy restart

Проверка состояния выполнения: Можно подключиться к порту прослушивания kvproxy через telnet и использовать команду status для проверки состояния выполнения kvproxy.

$telnet 127.0.0.1 55669
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
status

Number of processed requests [0]
Number of requests failed [0]
  - 127.0.0.1:11211 [0]
Number of continuous requests failed [0]
  - 127.0.0.1:11211 [0]
All of offline hosts [0] 
Number of client connection [1]
Number of backend connection [0]
Read timeout of backend connection [100ms]
Size of async queue [0]

Производительность:

  • однопоточная — 6000 запросов в секунду (qps);
  • 8 потоков с включенным сродством к процессору — 50 000 qps.

Конфигурация: Конфигурационные файлы KV-прокси используют формат INI. По умолчанию они находятся в каталоге etc в установочном каталоге. Имя файла — kvproxy.ini.

[kvproxy]
; Порт прослушивания
port=55669
; Количество запущенных потоков. На платформе Linux, если cpu_affinity установлено в on, количество потоков автоматически равно количеству ядер процессора.
thread_count=2
; Включить сродство к процессору
cpu_affinity=on
; Максимальное количество ожидающих обработки соединений
backlog=10000
; Время ожидания для чтения данных от сервера, в миллисекундах
recv_timeout=100
; Путь к файлу журнала, по умолчанию ./log/kvproxy.log в установочном каталоге
;log_path=/tmp/kvproxy.log
; Уровень журнала. Варианты: fatal error warn info debug.
; fatal — критическая ошибка. Приводит к завершению процесса kvproxy.
; error — ошибка запроса. Запрос завершается неудачно.
; warn — предупреждение о запросе. Запрос может быть успешным, несмотря на возникновение исключения.
; info — избыточный режим. Печатает избыточную информацию о выполнении запроса.
; debug — режим отладки. Печатает отладочную информацию о процессе запроса.
log_level=warn
; Путь установки расширений. По умолчанию ./ext в установочном каталоге
;ext_path=../ext
; Максимальный размер данных, полученных или отправленных в одном запросе. В мегабайтах (М). Если данные превышают указанный размер, запрос завершается неудачно.
max_packet=1
; После превышения указанного порога количества отказов автоматически исключить проблемный сервер.
failover_threshold = 2
; Частота проверки наличия серверов с количеством отказов, превышающим указанный порог. В секундах.
failover_interval = 2
; Размер очереди асинхронной синхронизации. Зависит от ситуации, не рекомендуется устанавливать слишком большое значение.
async_size = 50000

;;;;;;;;;;;;;;;
; Расширения ;
;;;;;;;;;;;;;;;

; Имя расширения
[memcached]
; Файл расширения.
extension=memcached.so
; Установить группу серверов по умолчанию.
hosts=master
; Установить резервную группу серверов. Все операции записи будут синхронно скопированы в эту группу. Если не установлено, данные не будут синхронизированы или асинхронно скопированы.
;hosts_backup=read
; Установить группу читаемых серверов. Все данные считываются из этой группы. Используется для реализации разделения чтения и записи.
hosts_read=master
; Префикс синхронизации данных. По умолчанию используется асинхронная репликация. Если вы хотите использовать синхронную репликацию, можно установить префикс ключа на указанную строку.
sync_str = "+" 
; Используемый протокол: binary — двоичный протокол, text — текстовый протокол
proto = binary

;;;;;;;;;;;;;;;;
; Группы серверов ;
;;;;;;;;;;;;;;;;

; Группа серверов
[master]
; IP : порт = «в группе серверов идентификатор: вес»
; Идентификатор каждого сервера в одной группе не может повторяться
127.0.0.1:11211="1:50"

[read]
127.0.0.1:11212="1:50"

Обратная связь по вопросам: Если вы обнаружили ошибку или у вас есть другие вопросы, вы можете оставить отзыв на следующем веб-сайте. http://git.oschina.net/exinnet/kvproxy/issues

Контакты автора:

  • QQ и WeChat: 1798159444
  • Аккаунт в Weibo: 淘宝信海龙

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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