Это довольно широкий вопрос, поэтому я собираюсь ответить с довольно широким ответом, но сошлю вас туда, где вы можете найти более подробную информацию, если вы склонны копать больше.
Как PCF работает внутренне при развертывании загрузочного проекта Spring. Будет ли PCF запускать Tomcat, встроенный в загрузочный jar Spring, или запускать собственный tomcat.
Когда вы запускаете cf push -p my/cool/file.jar
(или даже file.war),cf cli извлекает все из этого архива и передает его в CF.CF хранит файлы вашего приложения, а затем ваше приложение ставится.
Во время подготовки запускается пакет сборки Java.Он просматривает все файлы, которые были нажаты, и пытается определить, что с ними делать.Он знает, как обрабатывать несколько различных типов приложений [1], включая как стандартные файлы WAR, так и приложения Spring Boot.Пакет сборки проверит ваше приложение, чтобы увидеть, соответствует ли его один из поддерживаемых типов в порядке [2], и выберет первое совпадение.
После выбора типа приложения оно запускается и устанавливает то, что необходимо длязапустите ваше приложение.Для приложения Spring Boot это в основном просто JVM.Для файла WAR устанавливается Tomcat и JVM.Кроме того, он записывает команды настройки и запуска, необходимые для запуска вашего приложения CF.
На этом этапе подготовка завершена, и у вас есть то, что называется «капелькой».Если у вас есть какие-либо дополнительные вопросы по рабочему процессу подготовки, ознакомьтесь с подробностями здесь [3].
На этом этапе приложение будет запущено.Платформа берет созданную капельку и выполняет команду, указанную в пакете сборки, для запуска приложения [4].Если все пойдет хорошо, ваше приложение будет работать на CF.
В PCF мы никогда не упоминаем номер порта.
Правильно.Платформа сообщит вам порт, который должно прослушивать ваше приложение.Для приложений Java вам не нужно ничего делать.Java buildpack будет обрабатывать настройку Spring Boot или Tomcat для запуска и прослушивания на правильном порту.
Для приложений Spring Boot вы можете посмотреть на команду запуска, чтобы увидеть, как это происходит.Для Tomcat это происходит в server.xml
, который генерируется Java buildpack [5].
В классическом подходе мы запускаем 3 экземпляра Tomcat с другим номером порта и до этого имеем сервер apache.PCF работает одинаково.
Да и нет.Каждое приложение, которое вы запускаете, может иметь несколько экземпляров.Если вы масштабируете свое приложение так, чтобы оно имело три экземпляра, это было бы примерно как наличие трех экземпляров Tomcat в вашем классическом подходе.
Основное отличие состоит в том, что впереди не будет веб-сервера Apache.В Cloud Foundry в этом нет необходимости, поскольку у него есть собственный балансировщик нагрузки Gorouter [6], который обрабатывает передачу трафика в ваше приложение и балансировку нагрузки между доступными экземплярами приложения.
Это классическая ошибка, с которой сталкиваются новичкиCF сделать.Они пытаются копировать классические архитектуры и вводить обратный прокси-сервер в свое приложение, когда в этом нет необходимости.Это одно из преимуществ CF.Он обрабатывает маршрутизацию трафика к вашему приложению в масштабируемом режиме, позволяя вам сосредоточиться на своем приложении.