|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
Хотелось бы иметь представление, кто работал и работает с GT.M? Если конкретно, то сейчас у меня ступор связан с репликацией... по существу думаю об использовании Business Continuity (BC) репликации. Но не могу понять можно ли сделать например так: два (и более) равноправных инстанса, наше веб приложение передает запросы равномерно между двумя (и более) инстансами... Попробую нарисовать здесь как работает сейчас на примере одного инстанса: Backend Instance: GT.M (6.0-001) с модулями рутин (условно Backend API) C++ Backend демон, который создает N GT.M Workers в отдельных процессах, GT.M Worker также написан на C++ и использует GT.M Call-Ins, получает запросы и отправляет ответы посредством Shared Memory. Frontend Instance: PHP приложение, написанное согласно паттерну MVC, в моделях вызываются запросы посредством разработанного PHP расширения PHP расширение, в котором реализована поддержка Backend API C++ Gateway демон, который передает запросы и получает ответы от C++ Backend демона по защищенному TCP соединению, запросы же он получает от PHP расширения и ему же отдает ответ. GT.M - [GT.M Workers - Backend] -------- Gateway - [PHP Extension - PHP App] Для масштабирования Backend'а на примере двух инстансов мне надо две такие схемы Frontend -- Backend, и на стороне Frontend реализовать балансировщик веб-запросов между двумя схемами (но это не моя задааи). Моя задача - как сделать возможность добавления-изменения-удаления глобалов в GT.M для двух этих инстансов, при этом чтобы данные синхронизировались. В Business Contiunity репликации есть главный инстанс и вторичный инстанс, и как я понял (или плохо понял?) бизнес логика (Backend API) работает только с главным, а вторичному только передает изменения в главном. Тоесть бизнес логику и передачу изменений ко вторичному нельзя применить? PS: Почему так запутано решение это другой вопрос. Мне ответы интересны по репликации данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2013, 18:21 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
K.S. Bhaskar ответил вот так: Owing to requirements of transaction integrity for the applications that run on GT.M and the eventual consistency that the CAP theorem imposes, GT.M does not currently support multiple Master/Master operation. You can certainly implement replication at the application level. For example, create triggers that log updates to a global from where application processes stream updates to other instances. Теперь сижу и думаю, что зря выбрал GT.M. Но прийдется как то выходить из ситуации. И изучаю подробнее основные SQL/NoSQL базы данных. Даже не знаю, в Cache' лучще обстоят дела с репликацией? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 11:35 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
Может я не совсем понял суть необходимого, но опишу то что понял. а понял я что вам нужно реализовать балансировку нагрузки на сервер путем распарралеливания и так чтобы данные были одни на всех серверах. как это решается на Cache`. Там есть такая технология как ECP , которая позволяет иметь 1+ ECP-сервер (сервера данных), и 1+ ECP-клиенты (сервера приложений). как первых так и вторых может быть больше одного, тут как настроите. конечно желательно когда ECP-клиентов больше чем EСP-серверов, для этого все это и делается. В такой конфигурации вы имеете несколько ECP-клиентов, которые подключаются к ECP-серверу для получения/сохранения данных. за контролем целостности следит ECP-сервер. т.к. данные хранятся на ECP-сервере, то запрошенные данные одним ECP-клиентом измененные на другом, будут актуальны на момент запроса. ECP-клиент кеширует у себя запрашиваемые данные. соответственно нагрузка на сеть может быть минимальна. при этом есть возможность пользоваться например БД для временных данных которые не требуется "реплицировать" и данные оттуда нужны только для текущего ECP-клиента, тогда эта бд должна быть локальной для текущего ECP-клиента. вам остается только настроить балансировку нагрузки на все эти ECP-клиенты, это умеет и CSPGateway через который и работает WEB в Cache`. Наличие нескольких ECP-серверов, намного усложняет конфигурацию но позволит вынести часть данных на другой сервер когда один сервер например не справляется с дисковыми операциями. Ко всему этому можно конечно еще добавить Mirroring чтобы обеспечить отказоусточивость на уровне ECP-серверов, тогда при выходе его из строя, сразу включается запасной сервер и ECP-клиенты быстро переключаются на него, со стороны веб-клиента будет минимальная задержка ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 12:07 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
DAiMor, Вы правильно поняли то, что мне нужно :) Спасибо за ответ. Буду думать. Вообще то разработанное решение может и без распараллеливания справится. По сути, увы, самая тормозящая часть это фронтенд. Да и в целом можно было бы проще реализовать все (если бы еще и не требование "как можно лучше спрятать базу данных от взломщиков"). На стороне бекенда скорость порядка 10000 запросов/секунду (нашего API), что я еще могу ускорить еще в 2-3 раза. Но фронтенд запрашивает запросы со скоростью порядка 500 запросов в секунду. Поэтому мы пока думаем распараллелить фронтенд балансировщиком запросов к веб-серверу. А бекенд соответственно сможет легко обслуживать 20 (10000/500) фронтендов. Теоретически :) поскольку я таким еще не занимался. Да и у нас нет таких специалистов. На будущее думаю уже лучше выбирать БД, от Cache' отказался не я, а начальство :) посколько платно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 12:24 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
SergeyLeeВообще то разработанное решение может и без распараллеливания справится. По сути, увы, самая тормозящая часть это фронтенд.Откуда тогда потребность в "хитрой" репликации бэкэнда? Стоит ли бороться за масштабирование, если и так всё хорошо? Делайте спокойно на GT.M, оставаясь в рамках стандартного MUMPS. Глядишь, и в Cache когда-нибудь перерастёте, если GT.M перестанет справляться... хорошие системы иногда живут дольше, чем иное начальство )) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 15:18 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
Может быть GT.M-овцам будет интересно: в Cache' без какого-либо анонса появилась утилита конвертации БД из GT.M в Cache':^%GTMCVT. По крайней мере, в версии 2012.2 она есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:12 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
Alexey Maslov, а обратная утилита есть (из Cache в GT.M )? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 18:05 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
2acidа обратная утилита есть (из Cache в GT.M )? Зачем она ИС? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 08:04 |
|
Кто работает с GT.M?
|
|||
---|---|---|---|
#18+
Несколько лет назад переносили в GT.M. Сами писали. Сначала перенесли бэкап БД, потом останавливали-таки систему для докатывания из журнала. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 08:47 |
|
|
start [/forum/topic.php?fid=39&fpage=26&tid=1557096]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 409ms |
0 / 0 |