|
MySQL.RU - Webboard
Вернуться
Очереди. q4m. Кто-нибудь сталкивался?? (Pavel) 22/04/2009 - 11:11:28
From: Pavel - 22/04/2009 - 11:11:28
Subject:Очереди. q4m. Кто-нибудь сталкивался??
-----------------
День добрый!
Уже задавал вопрос на другом форуме, но ответа так и не получил...
Скажите, кто-нибудь работал с http://q4m.31tools.com/ ?
Вот что пишет автор про этот проект:
автор
Q4M (Queue for MySQL) is a message queue licensed under GPL that works as a pluggable storage engine of MySQL 5.1, designed to be robust, fast, flexible. It is already in production quality, and is used by several web services
В Oracle такая функциональность есть по-умолчанию, называется Advanced Queues.
Зачем мне это нужно:
Предположим, у меня есть виртуальный кошелек (ну, типа WM). Доступ к нему предоставляется через WEB. Вся система состоит из 2х частей:
- фронт, куда коннектятся клиенты.
- бек, здесь я веду все счета, проводки, делаю транзакции. (назвал беком, хотя речь идет об OLTP)
Типичные операции - запрос баланса клиентом (при загрузке каждой страницы) и перевод денег куда-неважно )
Пускать приложения из фронта напрямую в БД бека я не хочу. Мне нужно использовать какие-либо сообщения, между фронтом и беком.
Навязывается идея использовать очередь сообщений. Фронт кладет в очередь и ждет ответа, бек забирает и обрабатывает.
Преследую следующие цели:
1) Безопасность. Фронт не может напрямую ходить в БД бека. Может только кидать запросы и ждать на них ответа. В бд фронта хранятся некритичные данные (новости, сообщения, контент рекламный).
2) Нормирование и ограничение нагрузки на бек. Несколько сложнее описать... Пример: У меня есть 1000 клиентов. Каждый из них раз в день делает перевод денег. И так сложилось, что все они решили сделать это одновременно. т.е. 1000 подключений к БД, 1000 одновременный транзакций (транзакций БД). А если у меня есть очередь запросов, и 100 потоков, исполняющих эти запросы в беке - у меня всегда будет максимум 100 подключений к БД и максимум 100 одновременных транзакций. Ну и пусть, что в этом случае мне нужно будет сделать 10 итераций. Нагрузка не постоянная. Т.е. я таким образом нагрузку распределяю ("размазываю") по времени.
Надеюсь, понятно изложил.
Привлекает в q4m то, что работа с очередями ведется через стандартный интерфейс БД. Не нужно писать что-либо свое.
Теперь вопросы:
1) Если кто-то работал с q4m - поделитесь впечатлениями плз. Автор
2) Если кто-то сталкивался с похожей задачей (либо просто понимает о чем речь :) ), поделитесь
вариантами решения.
Да и вообще любые комментарии приветствуются.
Спасибо!
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35456
|
|