Вот моя ситуация. У меня есть серверное приложение, предназначенное для использования несколькими пользователями, поэтому одновременно выполняется много операций чтения / записи. И ответы должны быть БЫСТРЫМИ.
В настоящее время я кэшировал все данные в памяти, поэтому операция чтения / записи данных выполняется так быстро, как мы и ожидали. Чтобы предотвратить проблемы с блокировкой данных, я использовал Queue, чтобы выровнять запросы пользователей, заставить их поступать в обработчик обрабатывает один за другим.
Но вскоре я обнаружил проблему. Программа может обрабатывать только один запрос за один раз. Даже таймер бенчмарка программы сообщает мне, что он обрабатывал ноль мс, но все еще есть ограничения для обработки запросов в одну секунду. Скажем, теперь я обрабатывал около 100 раз в секунду.
Так что я ищу несколько методов, более параллельных, например, 8 процессов для обработки 8 запросов в то же время. Это будет так мило. Но есть большая проблема с обменом данными, я не хочу изобретать велосипед. Поэтому я проверил mongodb, redis и sqlite.
вот моя домашняя работа, поправьте меня, если я ошибаюсь, большое спасибо
mongodb и redis действительно быстрые, как они заявили, но они использовали один и тот же механизм, они могут обрабатывать один запрос один раз, это не то, что я ищу.
Таким образом, sqlite гораздо ближе, несколько процессов могут одновременно открывать один и тот же файл БД и читать, но проблема заключается в блокировке записи (я не знаю, насколько лучше работает новая блокировка в sqlite3).
Вот мой вопрос, есть ли надежное и хорошее решение для этого сценария? Если бы я разделил процесс записи в один, это помогло бы?
спасибо за любой комментарий