Масштабирование системы на основе TCP / IP и обеспечение высокой доступности - PullRequest
2 голосов
/ 16 января 2012

У меня есть компонент на основе TCP / IP, который взаимодействует с системой на основе c ++.Фактически он считывает необработанные байты из этой системы, а затем собирает эти необработанные байты в объектах и ​​сохраняет их в БД.Этот многопоточный компонент на основе tcp / ip находится в Java и может быть развернут на двухъядерном или четырехъядерном процессоре (не уверен, что это важно для моего вопроса, но, тем не менее, подробно я даю).Теперь у меня есть несколько вопросов:

  1. Как я могу масштабировать этот компонент на основе TCP / IP.Этот компонент развернут на сервере и прослушивает порт.В будущем, если на данный момент предусмотрено больше данных, поступающих из системы C ++, мы сможем масштабировать этот Java-компонент.

  2. Как насчет безопасности.Одна вещь, которую я, вероятно, могу сделать, это использовать эту связь в безопасных сокетах или, возможно, получить зашифрованные данные (любое конкретное шифрование, которое я мог бы использовать здесь ??).Любой другой способ заботиться о безопасности?

  3. Существует также требование высокой доступности, которое должно быть удовлетворено.Как мне справиться с этим?Как я мог иметь здесь избыточность?

Да, мы работаем над системной архитектурой продукта, и поэтому мне было интересно, может ли какой-нибудь опытный архитектор или дизайнер помочь мне.

1 Ответ

3 голосов
/ 16 января 2012

Как я могу масштабировать этот компонент на основе 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 вы, вероятно, захотите нанять консультанта, который имеет проверенный опыт внедрения этих служб (если у вас такого нетресурса внутри компании).

...