Запуск Лагом в производстве
Я работаю над созданием приложения Lagom на производстве. Я пытался связаться с Lightbend для лицензии ConductR, но не слышал много лет назад. Итак, сейчас я ищу альтернативный подход. У меня есть несколько вопросов.
Поскольку масштаб приложения в настоящее время довольно мал, я думаю, что использование статического сервисного локатора работает для меня прямо сейчас (открыто для других альтернатив). Кроме того, я использую MySQL в качестве хранилища событий вместо конфигурации по умолчанию Cassandra (причины, не относящиеся к этой теме).
Чтобы подавить Cassandra и Lagom's Service Locator, я добавил следующие строки в свой build.sbt:
lagomCassandraEnabled in ThisBuild := false
Я также добавил следующий фрагмент в мой application.conf с модулем service1-impl.
lagom.services {
service1 = "http://0.0.0.0:8080"
}
Для среды разработки я смог успешно запустить свое приложение, используя sbt runAll
в сеансе tmux. С этой конфигурацией не существует локатора службы, работающего на порте 8000 по умолчанию, но я могу по отдельности нажать service1 на порте 8080. (Не уверен, что это ожидаемое поведение. Комментарии?)
Я побежал sbt dist
создать zip-файл, а затем распаковать его и запустить там исполняемый файл. Интересно, что zip был создан в папке service1-impl. Итак, если у меня будет несколько модулей (сервисов?), Будет ли sbt dist создавать отдельные zip-файлы для каждого сервиса?
Когда я запускаю исполняемый файл, созданный через sbt dist
он пытается подключиться к Cassandra, а также запускает локатор службы и игнорирует добавленную мной статическую конфигурацию локатора службы. По сути, похоже, что он игнорирует строки, которые я добавил в build.sbt. Кто-нибудь, кто может объяснить это?
Наконец, если бы у меня было 2 службы, service1 и service2, и 2 узла в кластере с узлом 1, на котором запущены службы 1, и узлом 2, на которых запущены обе службы, как бы мой статический локатор служб выглядел в application.conf и поскольку каждый из у службы будет свой собственный application.conf. Нужно ли мне копировать одну и ту же конфигурацию со статическим локатором службы во все application.confs?
Было бы что-то вроде этого?
lagom.services {
service1 = "http://0.0.0.0:8080"
service1 = "http://1.2.3.4:8080"
service2 = "http://1.2.3.4:8081"
}
Поскольку каждый конкретный субъект будет порождаться на одном из узлов, как он будет работать с этой конфигурацией локатора службы?
Кроме того, я не хочу запускать это в сеансе tmux на производстве. Что было бы лучшим способом, наконец, запустить этот код в производстве?
1 ответ
Вы можете начать работу с ConductR в режиме разработки немедленно, бесплатно, не связываясь с отделом продаж. Инструкции можно найти по адресу: https://www.lightbend.com/product/conductr/developer Вам необходимо зарегистрироваться (прочитать: предоставить действительный адрес электронной почты) и принять TnC для доступа к этой странице. Песочница сегодня бесплатна для использования в режиме разработки, поэтому вы можете быстро и легко узнать, подходит ли вам ConductR.
Что касается производства, я рад сообщить, что вскоре вы сможете развернуть до 3 узлов в работе, если зарегистрируетесь на сайте Lightbend.com (как описано выше) и создадите лицензионный ключ "бесплатного уровня".
Лагом самоуверенно относится к микросервисам. Всегда есть Akka и Play, если эти мнения не разделяются проектом. Часть этого мнения заключается в том, что развертывание должно быть легким. Хорошие инструменты чувствуют себя "хорошо" в руке. Вы, конечно, можете свободно развертывать приложение по своему усмотрению, но будьте готовы к тому, что вы будете производить больше полифилла, чем дальше от обозначенных вами маршрутов.
Что касается поиска службы, ConductR обеспечивает перенаправление для поиска службы HTTP для использования с withFollowRedirects на Play WS [1]. sbt dist
каждая подпроектная услуга будет пакетом. Вы можете увидеть это в примере Chirper [2], на котором sbt dist
генерирует chirp-impl.zip, friend-impl.zip, activity-stream-impl и т. д., как показано в файле build.sbt верхнего уровня Chirper. Поскольку этот ConductR является чистым и освещенным путем, вы можете сослаться на то, как он работает, чтобы лучше понять, как заменить систему развертывания Lagom своим собственным. Это интерфейс, который Лагом знает лучше всего. Большая часть ConductR, за исключением ядра, уже является OSS, поэтому можете попробовать github, если документы не охватывают что-то.
Раскрытие информации: я являюсь ConductR-ing Lightbender.
git@github.com: инжекционный / активатор-инжекционный-Java-chirper.git