Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
comet:cluster [2017/12/16 16:45]
levhav создано
comet:cluster [2019/12/18 01:58] (текущий)
Строка 11: Строка 11:
 Операции выборки данных (select и show) работают синхронно. Так как должны получить данные и вернут их в ответе. Операции выборки данных (select и show) работают синхронно. Так как должны получить данные и вернут их в ответе.
  
-Для включения механизма кластеризации надо добавить в конфигурационный файл параметры для подключения к серверам кластера.+Для включения механизма кластеризации надо добавить в конфигурационный файл параметры для подключения к серверам кластера ​в секцию [ws] и в секцию [cometqlproxy]
  
-В секцию [ws] и в секцию [cometqlproxy]+<note important>​Механизм кластеризации был разработан не давно. Если обнаружатся проблемы в настройке или в работе или пробелы в документации не стесняйтесь ​[[https://​gitter.im/​CppComet/​Lobby|задавать вопросы]] и [[https://​github.com/​CppComet/​comet-server/​issues|писать баг репорты.]]</​note>​ 
 + 
 +====== Настройка ​секции [ws======
  
 В секции [ws] есть параметр cluster он представляет из себя список параметров для подключения к другим нодам кластера. Каждое новое подключение задаётся с новой строки. Квадратные скобочки перед началом параметра указывают на то что эта строка не переопределяет предыдущее значение параметра cluster а дополняет его ещё одним элементом списка значений. В секции [ws] есть параметр cluster он представляет из себя список параметров для подключения к другим нодам кластера. Каждое новое подключение задаётся с новой строки. Квадратные скобочки перед началом параметра указывают на то что эта строка не переопределяет предыдущее значение параметра cluster а дополняет его ещё одним элементом списка значений.
Строка 22: Строка 24:
 cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3321 cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3321
 </​code>​ </​code>​
 +
 +В примере выше параметру ​ cluster присвоено две строки подключения к двум другим нодам кластера.
 +Строка из себя представляет несколько параметров
 +  * Server - имя хоста комет сервера
 +  * Database - версия апи всегда CometQL_v1 (до тех пор пока нет версии 2 или какой бы то ни было ещё) ​
 +  * Uid - имя пользователя обычно root
 +  * Pwd - пароль для подключения
 +
 +Если у нас кластер из трёх нод то в конфигурации надо указывать две соседних ноды.
 +Таким образом при поступлении данных из JavaScript API будут уведомлены другие сервера кластера.
 +
 +====== Настройка секции [cometqlproxy] ======
 +
 +Секция cometqlproxy представляет собой интерфейс для обращений через CometQL API к кластеру.
 +По своей структуре она похожа на секцию cometql
 +
 +Если в не кластерном режиме все запросы от CometQL уходили в модуль cometql на тот порт который был казан в секции [cometql] то в режиме кластера вы можете активировать на одной ноде или на нескольких нодах кластера модуль cometqlproxy и направлять запросы на него (сами запросы менять не придётся) модуль cometqlproxy принимая CometQL запрос парсит его и в зависимости от запроса направляет его на одну или несколько нод кластера. Если запрос был на вставку данных (insert и set) то он будет направлен на одну из живых нод кластера. Если запрос на получение данных то данные будут извлечены либо с одной ноды либо в худшем случаи будут опрошены все живые ноды, после чего будет собран общий ответ из ответов от всех нод.
 +
 +В секции cometqlproxy тоже есть параметр cluster похожий на свой аналог из секции ws за тем исключением что в нём надо перечислить все ноды кластера а не только соседей. Тоесть если ваш кластер из трёх нод то в секциях ws каждой из нод будет по две строки для подключения к другим нодам а в секции cometqlproxy будут указаны все три ноды кластера.
 +
 +Так сделано потому что модуль cometqlproxy может работать на инстансе комет сервера просто в режиме проксирования запросов к другим комет серверам без поднятия на этой же ноде ещё и модулей cometql и WS
 +
 +<code ini>
 +[cometqlproxy]
 +; Clustering Functions
 +;
 +ip = 0.0.0.0
 +thread_num = 3 ; number of threads for receive message from cometql
 +statistics = 10
 +port = 3301
 + 
 +; The parameters of the cluster (without spaces or anything else between the parameters, are case sensitive)
 +cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3301 ​
 +cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3311
 +cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3321
 + </​code>​