2017-01-03 4 views
0

Как я использую netty, чтобы сделать чат-приложение. Поскольку у меня есть кластер сетевых серверов.Как сохранить объект Netty Channel в базе данных Redis или любом другом решении?

Поскольку я храню идентификатор канала всех клиентов в Redis, чтобы иметь ссылку на все каналы, подключенные к сетевым серверам.

Я хочу сохранить все объекты канала в Redis, чтобы из любого узла или экземпляра я мог получить все клиенты. Объекты канала, потому что узел, на котором, если я хочу получить другие клиенты Канал, который создается на каком-то другом узле, Как получить те объекты канала клиента, которые находятся на другом узле или экземпляре?

Таким образом, его лучше хранить клиентский объект канала канала, чтобы перерисовать, поэтому с любого узла я могу получить любой объект канала клиента. но класс реализации канала не является Serializable в netty.

  1. Итак, как сохранить объект канала в Редисе?
  2. Полезно ли сериализовать объект канала, расширяя канал и реализуя интерфейс Serializable?
  3. Если это решение не очень хорошо, то как получить любой клиентский канал объект с любого узла в сетевом кластере?

Спасибо.

ответ

0

Канал в Netty содержит неявно все сетевые аспекты (сокет, поддержка nio, tcp или udp или ...), поэтому вы не можете сериализовать его (сетевое соединение не может быть сериализовано).

Но вы можете сериализовать удаленный адрес. Обратите внимание, однако, что «id» не настраивается, то есть вы не можете заставить его значение для одного канала. Таким образом, вы могли бы использовать что-то вроде:

В Redis или так: (ваш идентификатор является ключевым)

  • вашего идентификатор
  • адрес удаленного хоста (и порт, вероятно)
  • любых данных для связи

В вашей виртуальной машины Java (узел): (карта, где ваш идентификатор ключа)

  • ваш идентификатор
  • канал объекта
+0

Как вы сказали, чтобы сохранить адрес удаленного узла клиента, но когда приходит сообщение на Нетти сервер от отправителя и получил узел приемника удаленный адрес от Redis, но как передать сообщение на тот адрес удаленного узла, чтобы он мог быть использован клиентом-получателем? Какую услугу можно использовать AWS для передачи сообщения этому узлу нетто (от узла Netty Netder до нулевого узла приемника) или любого другого пользовательского решения? – user3406181