одновременный доступ к базе данных или файле памяти из нескольких процессов, возможно, это возможно?

StackOverflow https://stackoverflow.com/questions/4233132

Вопрос

Вот моя ситуация. У меня есть серверное приложение, предназначенное для использования нескольких пользователей, поэтому существует много операций считывания / записи в одно и то же время. И ответы должны быть быстро.

В настоящее время я кэшировал все данные в память, чтобы операцию по чтению / записи данных столь же быстро, как мы ожидали. Чтобы предотвратить заблокировать данные, заставляя меня проблемы, я использовал очередь, чтобы выстроить запросы пользователей, заставить их вступить в обработчик процесс одним.

Но вскоре я нашел проблему. Программа может обрабатывать только один запрос одновременно. Даже танеру Program Benchmark сообщает мне, что он использовал нулевой MS для обработки, но все еще есть ограничения для обработки запросов в одну секунду. Теперь я обрабатывал около 100 раз в секунду.

Поэтому я ищу некоторые методы более одновременно, такие как 8 процессов для обработки 8 запросов одновременно. Это будет так приятно. Но есть большая проблема с делом данных, я не хочу изобретать колесо. Поэтому я проверил Mongodb, Redis и Sqlite.

Вот мою домашнее задание, поправьте меня, если я ошибаюсь, большое спасибо

Mongodb и Redis действительно быстро, как они заявили, но они использовали один и тот же механизм, они могут обрабатывать один запрос один раз, это не то, что я ищу.

Таким образом, SQLite почти более ближе, несколько процессов могут одновременно открывать тот же файл DB и прочитать, боль - это его замок записи (я не насколько лучше новый замок в SQLite3 работает).

Вот мой вопрос, есть ли прочное и хорошее решение для этого сценария? Если я отделим процесс записи в один, поможет ли это?

Спасибо за любой комментарий

Это было полезно?

Решение

Раствор с Mongodb карется. Mongodb Sharding В основном позволяет вам бросать больше процессоров в проблему. Больше процессоров = больше потоков записи.

У каждого экземпляра MongoDB есть только один напиток. Sharding дает больше экземпляров и поэтому позволяет больше пишет.

Тем не менее, здесь есть большая проблема. Пропускная способность диска.

У меня был Mongo работает более 1000 вставок / с, если все это в оперативной памяти. Но большинство людей используют Mongo в качестве базы данных с помощью фактической поддержки файла. Поэтому, если вы используете Mongo для действительно тяжелых пишетов, вы должны быть подготовлены с дисками, которые могут принять этот уровень пропускной способности.

Опять же, путь вокруг пропускной способности диска карется. Постройте больше осколок, и вы получите меньше пишет / диск и в основном меньше блокировки вокруг.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top