Как я могу масштабировать этот компонент на основе TCP / IP.Этот компонент развернут на сервере и прослушивает порт.В будущем, если на данный момент предусмотрено больше данных, поступающих из системы C ++, мы сможем масштабировать этот Java-компонент.
Обычно вы используете балансировщик сетевой нагрузки для масштабирования такого рода.услуги на нескольких серверах.Этот балансировщик нагрузки может распределять нагрузку, используя различные алгоритмы, такие как:
- Загрузка ЦП (обычно измеряется с помощью snmp)
- IP-адрес клиента (если вам требуется постоянство при отображении клиентовк вашим услугам)
- Количество активных сокетов
- и т. д.
Посмотрите на HAProxy для популярного балансировщика нагрузки с открытым исходным кодом. F5 имеет самое популярное коммерческое решение для балансировки нагрузки.
Как насчет безопасности.Одна вещь, которую я, вероятно, могу сделать, это использовать эту связь в безопасных сокетах или, возможно, получить зашифрованные данные (любое конкретное шифрование, которое я мог бы использовать здесь ??).Есть ли другой способ позаботиться о безопасности?
- Как уже упоминалось, SSL является опцией, но следует понимать, что это сильно ухудшает производительность ваших служб, если вы шифруете на том же оборудовании, которое выполняетобслуживание ваших клиентов.Одним из вариантов в этом направлении является использование коммерческого балансировщика нагрузки, который реализует SSL на аппаратном уровне;этот балансировщик нагрузки будет перенаправлять незашифрованные сокеты в вашу ферму служб TCP.
- В некоторых случаях вы можете использовать IPSec шифрование на уровне сети;часто это другое сетевое аппаратное решение.Обычно ваши клиенты загружают приложение IPSec, которое находится на их ПК ... затем они устанавливают соединение с вашим сервером IPSec, который шифрует между своим клиентом и вашей точкой завершения IPSec
- SSH Tunnelingс переадресацией портов (низкотехнологичное решение)
- tcpcrypt выглядит интересной будущей технологией, но я не уверен, насколько зрелой она сейчас.
Существует также требование высокой доступности для удовлетворения.Как мне справиться с этим?Как я мог иметь здесь избыточность?
Многое зависит от того, что вы подразумеваете под высокой доступностью, и какие сроки восстановления вам нужны.На высоком уровне у вас есть несколько вариантов:
- HA на основе DNS работает, если вам не требуется постоянное отображение клиента на сокет;если вы используете DNS, вы должны быть готовы принять типичные тайм-ауты записи A DNS (обычно люди не опускаются ниже ~ 5 минут / 300 секунд).Это также предполагает, что вы найдете способ синхронизации баз данных между несколькими сайтами.
- Решения для балансировки нагрузки.Та же проблема с синхронизацией внутренних баз данных
Для выполнения любого вида HA вы, вероятно, захотите нанять консультанта, который имеет проверенный опыт внедрения этих служб (если у вас такого нетресурса внутри компании).