Различия

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

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

comet:cluster [2017/12/16 17:14]
levhav [Кластеризация CppComet]
comet:cluster [2019/12/18 01:58]
Строка 1: Строка 1:
-<​rst>​RU::​004-Администрирование::​005-Кластеризация</​rst>​ 
-<​rst>​Header:​ Кластеризация CppComet</​rst>​ 
  
- 
-====== Кластеризация CppComet ====== 
- 
-В комет сервере есть возможность кластеризации в которой каждый сервер кластера может принимать запросы и пересылать их тем серверам кластера которые надо уведомить о событии. (Можно провести аналогию с мастер-мастер репликацией у баз данных) 
- 
-Операции вставки данных (insert и set) выполняются асинхронно,​ это значит что вы не будете ждать пока запрос будет разослан по всем серверам кластера. 
- 
-Операции выборки данных (select и show) работают синхронно. Так как должны получить данные и вернут их в ответе. 
- 
-Для включения механизма кластеризации надо добавить в конфигурационный файл параметры для подключения к серверам кластера в секцию [ws] и в секцию [cometqlproxy] 
- 
-====== Настройка секции [ws] ====== 
- 
-В секции [ws] есть параметр cluster он представляет из себя список параметров для подключения к другим нодам кластера. Каждое новое подключение задаётся с новой строки. Квадратные скобочки перед началом параметра указывают на то что эта строка не переопределяет предыдущее значение параметра cluster а дополняет его ещё одним элементом списка значений. 
- 
-<code ini> 
-; 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=3311 ​ 
-cluster = []Server=127.0.0.1,​Database=CometQL_v1,​Uid=root,​Pwd=0000000000000000000000000000000000000000000000000000000000000000,​Port=3321 
-</​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>​