#java #spring #spring-boot #networking
#java #spring #spring-boot #сеть
Вопрос:
Просто любопытно об этом!!
У меня есть приложение spring boot, работающее на 10.0.0.1 (порт 9000), и тот же экземпляр имеет подсеть для 10.0.0.2
. Приложение работает с pid P1, как я могу привязать мое приложение Spring boot как к адресу сервера, который должен указывать на тот же процесс P1, так и на тот же порт 9000
10.0.0.1:9000/api
10.0.0.2:9000/api
Приложение должно быть доступно по обоим адресам сервера без использования create the new instance или new port,
Я пытался использовать обратный прокси и прокси, но все равно не повезло,
возможно ли это сделать?
https://access.redhat.com/solutions/873953 Выглядит что-то похожее на это весной.
Ответ №1:
Первый способ: найдите его 0.0.0.0
, который затем будет доступен на всех IP-адресах.
Второй способ: используйте обратный прокси, например nginx
, который прослушивает 10.0.0.2: 9000 и перенаправляет на ваш spring. (вы упомянули, что это не работает. не могли бы вы предоставить более подробную информацию?)
Третий способ: пусть ваш spring прослушивает другой порт, скажем, 8888. затем используйте nginx для прослушивания как 10.0.0.1, так и 10.0.0.2 и пересылки. На самом деле в производственной среде это тоже очень распространено (установка обратного прокси перед фактической рабочей нагрузкой).
Комментарии:
1. Запуск его
0.0.0.0
сделает его доступным для системного IP-адреса, верно?2. в-третьих, я должен создать другой экземпляр, который означает другой процесс, я пытаюсь выполнить привязку с тем же идентификатором процесса
3. использование прокси в nginx приводит к переадресации запросов, добавляет немного задержки, работает нормально, но ищет что-то без nginx
4. @BimalGangawal да, 0.0.0.0 для всех IP-адресов. на самом деле задержка пересылки запросов очень мала по сравнению с загрузкой spring … если вам действительно нужна высокая производительность, возможно, вам придется использовать фреймворк C / Rust или Netty для Java и т. Д., Но не spring… Другими словами, если вы используете Spring, дополнительная задержка (и дополнительный процессор и память) не является проблемой по сравнению со скоростью, процессором и памятью самого Spring
5. True согласился с тем, что при использовании spring будет дополнительная задержка, nginx еще больше увеличит это. то, что я ищу здесь, — это создание двух сокетов, привязанных к разным IP-адресам и одному и тому же порту, работающему с одним и тем же идентификатором процесса