Лучшие практики для разработки TCP-коммуникатора

#java #tcplistener

#java #tcplistener

Вопрос:

Мы разрабатываем систему отслеживания транспортных средств. В этой системе мы устанавливаем в транспортное средство устройство GPS, которое отправляет данные о местоположении на наш сервер с использованием TCP-связи. В любой момент времени может быть более 1000 устройств, отправляющих данные. Пожалуйста, предложите мне лучшие практики, которым я должен следовать для создания TCP communicator. Мы используем Java в качестве языка программирования и MySQL в качестве сервера баз данных.

Мне нужны ваши предложения о лучших практиках, которым я должен следовать, вместе с причинами. например, я должен следовать модели «Поток на соединение» или модели многопоточности «Поток на событии»? Почему эта модель? Как я должен реализовать объединение в пул соединений? Должен ли я реализовать очередь обмена сообщениями? и т.д..

Спасибо, Саурабх

Комментарии:

1. Ваш вопрос очень широкий и мало что говорит о ваших требованиях. Я бы, вероятно, использовал библиотеку на основе NIO для сервера, если это то, о чем вы спрашиваете. Например, Netty

2. @Kaj прошу прощения за это.. Я обновил вопрос. Надеюсь, это прояснит то, что я должен спросить.

Ответ №1:

Я создал аналогичную систему. Я использовал Mule3 для прослушивателя tcp-сервера, а затем, прочитав данные, я просто переслал их с помощью JMS на сервер ActiveMQ.

У меня было около 10-20 слушателей в каждой очереди, обрабатывающих данные, помещающих их в мою базу данных, выполняющих правила над данными, чтобы определить, нужно ли отправлять сигналы тревоги и т.д.

Этот результат получен в очень стабильной и простой в работе среде. Небольшие модули с конкретными задачами.

Ответ №2:

  1. Используйте NIO и в полной мере используйте многопоточность. По возможности используйте некоторые существующие библиотеки, такие как MINA