Каков наилучший подход для построения системы с большим объемом передачи данных?
Привет
У меня есть сервер кэширования (написанный на Java+Lucene Framework), который хранит большой объем данных и предоставляет их в соответствии с запросом запроса.
Это в основном работает так:
- При запуске он подключает БД и сохраняет все таблицы в ОЗУ.
- Он слушает запросы и предоставляет правильные данные в виде списков массивов (около 1000 - 20000 строк).
- Когда пользователь заходит на веб-страницу, он подключается к серверу кеша, запрашивает и показывает ответ сервера.
Я планировал запускать веб-приложения и приложения для кеширования из-за проблем с памятью. Сервер кэширования работает как служба, а сеть находится на Tomcat.
Что вы предлагаете о том, как должна быть организована связь между веб-сайтом и сервером кеша?
Мне нужно передать большой объем данных со списками массивов из одного экземпляра в другой. Стоит ли думать о веб-сервисах (обмен данными в формате xml), обмене данными через сокеты nio (возможно, Apache MINA) или решениях типа CORBA?
Благодарю.
1 ответ
Это действительно очень зависит от соображений, которые вы не указали.
- Какие клиенты? например, если ваши клиенты используют JavaScript, работающий с AJAX, очевидно, что что-то через HTTP более полезно, чем проприетарное решение UDP.
- В какой сети он работает? Локальные сети ведут себя не так, как интернет, а мобильный интернет совершенно отличается от обоих.
- Насколько тщательно вы можете использовать кеширование? Если вы используете HTTP, вы можете иметь довольно хороший контроль (через заголовки HTTP) как клиентского, так и сетевого кэшей, а также множество существующих программ, которые могут использовать оба.
Есть много других соображений, которые необходимо принять во внимание, и существует много существующих реализаций систем, соответствующих более распространенным потребностям. Из вашего (не очень подробного) описания, которое вы дали, я бы порекомендовал взглянуть на Redis.