Итак, вы вернулись! В последней части этой серии мы создали приложение JHipster по монолитному маршруту. Это был маршрут Red Pill ; жизнь так же, как вы привыкли.
Но, возможно, вам нравится вызов. Может быть, вы хотите выйти за пределы Красной Таблетки и попробовать Синюю Таблетку. В этом случае Blue Pill — это микросервисный подход JHipster.
В этом блоге мы собираемся создать микросервисную архитектуру, используя доступные для этого опции JHipster. С этим подходом можно проделать еще немало работы, но, в конце концов, я думаю, что он окупится. Получите ваш любимый напиток и выделите время. Это будет довольно интенсивно.
Обзор микросервиса
Что это такое?
«Микросервисная» архитектура разделяет внешний и внутренний интерфейсы, поэтому вашему приложению легче масштабировать и преодолевать проблемы инфраструктуры.
Мысль здесь состоит в том, чтобы отделить вещи как можно больше. Вы можете создать бэкэнд (ы) и запускать их, не привязываясь ни к чему на фронтэнде, и наоборот. Каждый может иметь несколько экземпляров и может вращаться вверх и вниз, не влияя на конечного пользователя. Возможно устранение простоев вашего приложения.
Это дает ему возможность расти и расширяться с течением времени без особых архитектурных усилий. Бэкэнд становится больше чем-то, что нужно потреблять, а внешний интерфейс — это вывод, показанный миру. Внешний интерфейс может быть практически любым, что вы хотите. Традиционные веб-сайты, мобильные приложения или все, что вы можете придумать.
Микросервис Путь
Голубая таблетка
Итак, вы решили сделать глоток и проглотить Синюю таблетку. Вы хотите бросить себе вызов, может быть? Давайте начнем.
шлюз
Шлюз — это сгенерированное JHipster приложение (использующее шлюз микросервиса типа приложения при его создании), которое обрабатывает веб-трафик и обслуживает приложение AngularJS. Может быть несколько разных шлюзов, если вы хотите следовать шаблону Backends for Frontends, но это не обязательно.
Это будет в значительной степени центром всей деятельности. Он будет иметь внешний интерфейс, чтобы вы могли видеть звонки, память и т. Д. Вы можете добавлять / удалять пользователей и все эти забавные вещи. Все это довольно хорошо упаковано, и вы можете посмотреть на это самостоятельно. Мы не будем вдаваться в подробности здесь.
реестр
Реестр JHipster — это приложение времени выполнения, использующее обычную структуру JHipster, в которой все приложения регистрируются и получают свою конфигурацию. Мы не будем касаться этого намного больше, чем просто потянем его вниз и используем. Это просто дом «конфигурации» по большей части. Просто клонируйте репо и двигайтесь дальше. Подробнее об этом ниже.
https://jhipster.github.io/microservices-architecture/#registry_overview
Клон: https://github.com/jhipster/jhipster-registry
Microservice
Микросервисы — это сгенерированные JHipster приложения (использующие приложение микросервисов типа приложения при их создании), которые обрабатывают запросы REST. Они не имеют состояния, и несколько их экземпляров могут запускаться параллельно для обработки больших нагрузок.
Давай сделаем это
шлюз
Мы будем в значительной степени следовать руководству по микросервису JHipster для этого упражнения.
1. Начни с yo jhipster
2. Выберите «Микросервисный шлюз»
3. Ответить на все вопросы
4 Перерыв на кофе!!!
Это приложение в значительной степени просто монолитное приложение с конфигурацией для обработки всего трафика веб-потока.
реестр
Клонируйте https://github.com/jhipster/jhipster-registry, если вы этого еще не сделали. Добавьте в свой проект пространство. Иди вперед и запусти.
Найдите файл Java с аннотацией @SpringBootApplication
и запустите его как приложение Java. Это относится к каждому шагу ниже.
Микросервисное приложение
Первым делом нужно сделать новый каталог. Назовите это как хотите, а затем перейдите в этот каталог. Теперь наберите yo jhipster
. Видите эту модель здесь?
Однако на этот раз мы выберем «Микросервисное приложение». Ответь на вопросы.
На этот раз, в два удара собачьего хвоста, вы получите свой микросервис!
Микросервис в действии
реестр
Если вы еще не раскрутили реестр, запустите его. Он должен работать на http: // localhost: 8761 . Посетите его и ознакомьтесь с основной информацией, которую он имеет для вас. Затем нажмите на ссылку «Приложения». Обратите внимание, что это пусто.
шлюз
Теперь пришло время раскрутить ворота. Вы увидите этот вывод в консоли.
1
2
3
4
5
6
7
8
9
|
---------------------------------------------------------- Application 'ExtendedDayGateway' is running! Access URLs: Local: http: //127 .0.0.1:8080 External: http: //192 .168.1.4:8080 ---------------------------------------------------------- 2016-09-13 14:19:29.643 INFO 10856 --- [ restartedMain] c.wwc.extendedday.ExtendedDayGatewayApp : ---------------------------------------------------------- Config Server: Connected to the JHipster Registry config server! ---------------------------------------------------------- |
Обратите внимание, как он показывает вам URL и показывает, что он получил свою конфигурацию из реестра JHipster. Давайте также посмотрим на приложение. HTTP: // локальный: 8080
Кроме того, взгляните на страницу Приложения снова в приложении реестра. http: // localhost: 8761 / # / Applications .
Обратите внимание, что наш шлюз появляется сейчас. Это самостоятельно зарегистрировано.
Микросервисное приложение
Теперь у нас работает два из трех пунктов. Теперь настало время для того, что, безусловно, станет локомотивом этого сценария. Мы добавим в приложение микросервис, которое будет предоставлять наш «бэкэнд» для любых запросов.
1. Создайте класс Java, который будет нашей конечной точкой «api». В нашем случае у нас будет только тот, который возвращает статический набор данных. Очень просто.
1
2
3
|
@RestController @RequestMapping( "/api" ) public class DemoResource {... |
2. Добавьте метод, чтобы вернуть наших «учеников».
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/** * GET /students : get all the students. * * @ return the ResponseEntity with status 200 (OK) and the list of students in body */ @JsonView(Student.Info.class) @RequestMapping(value = "/demostudents" , method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @Timed public List<Student> getAllStudents() { log.debug( "REST request to get all Students" ); List<Student> userStudents = new ArrayList<Student>(); Student student = new Student(); student.setFirstName( "Joe" ); student.setLastName( "Smith" ); student.setSex(0); student.setGrade(3); userStudents.add(student); return userStudents; } |
3. Сохраните и раскрутите микросервис. Это должно выглядеть примерно так:
1
2
3
4
5
6
7
8
9
|
---------------------------------------------------------- Application 'extendedDayAPI' is running! Access URLs: Local: http: //127 .0.0.1:8081 External: http: //192 .168.1.4:8081 ---------------------------------------------------------- 2016-09-14 11:36:13.927 INFO 13980 --- [ restartedMain] com.wwc.extendedday.ExtendedDayApiApp : ---------------------------------------------------------- Config Server: Connected to the JHipster Registry config server! ---------------------------------------------------------- |
4. Снова зайдите на http: // localhost: 8761 / # / Applications или обновите представление. Обратите внимание, как наш микросервис зарегистрировал себя.
5. Перейдите в браузер и введите http://localhost:8080/yourappapiname/api/demostudents
. Обратите внимание, что вам будет запрещено, даже если вы вошли в систему.
6. Выйдите из localhost:8080
а затем снова войдите с открытым Chrome.
Затем проверьте вход в систему и получите токен в разделе «Авторизация». Он должен начинаться с «Bearer…», а затем с целой кучей закодированных вещей. Выберите все это.
Вы должны передать этот токен с вашей просьбой. Есть много разных способов сделать это с помощью вашего кода. В нашем тестовом сценарии
- Почтальона будет достаточно, чтобы показать вам результат.
- Открыть почтальон
- Введите ваш вызов API сверху
- В разделе «Заголовки» добавьте ключ «Авторизация» и вставьте полученный токен.
Вы должны увидеть что-то вроде этого:
Woo Hoo! Вы сделали это! Вы создали микросервис с помощью jHipster.
Вывод
Мы прошли через создание микросервисной архитектуры, используя доступные опции JHipster для создания микросервисов. Я надеюсь, что вы нашли эту информацию полезной.
На этом этапе мы можем добавить столько разных микросервисов, сколько захотим. У каждого есть свой номер порта и функциональность. В распределенной среде у нас было бы много экземпляров, которые могли бы вращаться вверх / вниз при внесении в них изменений. Надеемся, вы сможете увидеть преимущества и гибкость в разделении наших разных уровней нашей архитектуры. Каждый слой не зависит от другого для запуска.
Темы, посвященные микросервисам, шлюзам, реестрам и использованию различных внешних интерфейсов, начинают выходить за рамки основных практических рекомендаций по использованию JHipster. Для получения дополнительной информации по этим темам, посетите бесплатные блоги Keyhole и технический документ .
Возвращайтесь к части 3 с хитростями, советами и хитростями при использовании JHipster. Хорошего дня и продолжайте быть «Хип».
Ссылка: | Начало работы с JHipster, часть 2 от нашего партнера по JCG Мэтта МакКэндлеса из блога Keyhole Software . |