Живая потоковая архитектура - PullRequest
0 голосов
/ 30 декабря 2010

Ранее я уже писал о похожем вопросе, но мне хотелось бы знать, какова основная технология, позволяющая работать в режиме реального времени? Я проектирую ее на 100% на основе базы данных в MySQL, но сталкиваюсь с проблемами: существует более 200 видов активности для потоковой передачи и существуют различные типы потоков + необходимо поддерживать как минимум 500 000 одновременно работающих пользователей для начала. Существуют географические потоки, сетевые потоки, потоки друзей, бизнес-потоки и т. Д. Все потоковые данные размещаются самостоятельно на основе действий на моем сайте. Моя платформа Linux, MySQL, PHP.

Проблемы, с которыми сталкиваются: 1) Не уверен, какой способ подойти к этому. Должен ли я просто сделать это в AJAX, PHP и MySQL или это делается через RSS / XML, или мне нужно использовать старомодное чтение из текстовых файлов? 2) Каким образом поток обновляется в режиме реального времени - сохраняет действия клиента на куки или сеансе, отправку с сервера на клиент, извлечение с сервера на сервер и т. Д.? 3) Это больше связано с сервером, как мне нужен специализированный сервер только для этого, при условии, что мне нужно поддерживать 500 000 одновременно работающих пользователей? 4) Если мне нужно использовать специализированные framkeworks для этого, есть ли какие-либо фреймворки с открытым исходным кодом?

Были бы полезны любые ссылки на примеры стратегий архитектуры / реализации.

1 Ответ

0 голосов
/ 04 января 2011

Понятия не имею, что вы конкретно подразумеваете под «потоком активности»;и я не делал ничего подобного раньше, но вот что я подумаю:

  • Обслуживание пользователей 50К, вероятно, будет означать несколько серверов - поэтому вы ничего не можете использовать или делатьэто приведет к сходству сервера (с использованием переменных сеанса и т. д.).
  • Вы хотите быть настолько эффективными, насколько это возможно - минимальный обмен данными (как по размеру, так и по частоте).
  • Избегайте ненужного анализа (например, XML) или дорогостоящих операций;работа с большими строками и т. д.
  • Документ тщательно, часто тест производительности.Возможно, вы захотите начать с некоторого Proof of Concepts.
  • Использование памяти: чтение и запись на диск являются дорогостоящими, поэтому перетаскивайте данные в память и обрабатывайте их там;например, при запуске приложения вы можете вставить в базу данных всю базу данных (ну, все таблицы / данные, которые вам понадобятся для обслуживания запросов), поэтому вам не нужно устанавливать соединения с базой данных длякаждый запрос.Это не мешает вам выполнять асинхронную обратную запись в базу данных (если сервер умирает, а потеря данных в памяти имеет тенденцию отстой).
  • Изучите зрелые технологии кэширования.
  • Byасинхронный, где вы можете - вы хотите минимальные бутылочные удары.
...