Здравствуйте! Сегодня мы узнаем, как создать базовый API электронной коммерции с помощью Quarkus. Если вы новичок в Quarkus, это родной для Kubernetes стек Java, специально созданный для виртуальных машин Java (JVM) и собственной компиляции. Это очень быстро, и вам это понравится!
Чтобы объяснить нашу архитектуру, мы будем использовать инструмент под названием Mermaid, который помогает нам создавать красивые диаграммы с помощью простых текстовых определений.
Почему Кваркус?
Основные преимущества Quarkus
- Kubernetes-Native: Quarkus был разработан с учетом контейнеризации и оркестровки. Он легкий и легко обрабатывает настройки портов, что делает его идеальным для Kubernetes и других облачных сред.
- Сверхбыстрое время запуска и меньшее время выполнения. Благодаря Quarkus вы получаете молниеносное время запуска и меньшее потребление памяти во время выполнения, что важно для архитектур «функции как услуга» и микросервисов, где службы должны запускаться и останавливаться быстро.
- Унифицированная конфигурация: все конфигурации объединены в один файл, что устраняет путаницу с несколькими конфигурациями и упрощает работу разработчиков.
- Живое кодирование: это мой личный фаворит! Функция живого кодирования Quarkus, доступная при запуске ваших проектов в режиме Quarkus Dev, повышает производительность разработчиков. Вы можете вносить изменения в свою кодовую базу и сразу же видеть их влияние, не перезагружая сервер вручную.
- Императивность и реактивность: Quarkus объединяет императивную модель программирования с реактивными принципами, позволяя вам выбрать лучший инструмент для поставленной задачи без ущерба для архитектурного видения.
- Собственный режим и режим JVM: приложения Quarkus можно запускать в режиме JVM и в собственном режиме. Собственный режим компилирует приложение в собственный исполняемый файл, который имеет более быстрое время запуска и меньшую нагрузку на память во время выполнения, что может быть огромным преимуществом для бессерверных приложений и микросервисов.
Тесты производительности Quarkus
Что касается бенчмарков, то они могут варьироваться в зависимости от множества факторов, включая характер приложения, конфигурацию сервера и т. д. Но чтобы дать вам общее представление, вот несколько цифр из исследования, проведенного RedHat:
- Время запуска. Простое приложение REST на Quarkus может запуститься менее чем за 0,8 секунды, в то время как традиционный облачный стек может занять несколько секунд.
- Потребление памяти: одно и то же приложение потребляет 74 МБ кучи по сравнению с 130 МБ в традиционном облачном стеке.
- Собственная компиляция: если мы скомпилируем приложение в собственный образ, время запуска уменьшится до поразительных 0,016 секунды, и оно потребляет всего 13 МБ памяти.
Помните, что эти цифры относятся к конкретному варианту использования и могут не отражать точную производительность, которую вы получаете с вашим приложением.
Но в целом Quarkus представляет собой значительный шаг вперед для корпоративной Java. Сочетание упреждающей (AOT) и своевременной (JIT) компиляции в сочетании с современной гибкой инфраструктурой делает его привлекательным вариантом для микросервисов, бессерверных и других облачных приложений.
Подготовка
Прежде чем мы начнем, убедитесь, что у вас есть необходимые инструменты:
- JDK 11 или новее
- Maven 3.6.2 или новее
- Докер (для PostgreSQL)
- Ваша любимая IDE
Настройка проекта Quarkus
Во-первых, мы создадим наш проект. Перейдите в каталог, в котором вы хотите разместить свой проект, и выполните следующую команду:
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=org.example \ -DprojectArtifactId=ecommerce-api \ -DclassName="org.example.ProductResource" \ -Dpath="/products"
Отлично, теперь у вас настроен проект Quarkus!
Настройка базы данных
Далее мы настроим нашу базу данных PostgreSQL с помощью Docker:
docker run --name ecommerce-db -e POSTGRES_PASSWORD=password -e POSTGRES_DB=ecommerce -p 5432:5432 -d postgres
Создание объекта
Теперь давайте создадим сущность Product
. В src/main/java/org/example
создайте новый класс Product.java
:
package org.example; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @Entity public class Product { @Id @GeneratedValue private Long id; @NotBlank private String name; @NotNull private BigDecimal price; // getters and setters }
Создание репозитория
Далее мы создадим класс ProductRepository
:
package org.example; import io.quarkus.hibernate.orm.panache.PanacheRepository; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class ProductRepository implements PanacheRepository<Product> { }
Настройка REST API
Наш REST API позволит пользователям создавать, читать, обновлять и удалять продукты.
package org.example; import javax.inject.Inject; import javax.transaction.Transactional; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import java.util.List; @Path("/products") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class ProductResource { @Inject ProductRepository productRepository; @GET public List<Product> getAll() { return productRepository.listAll(); } @POST @Transactional public Product create(Product product) { productRepository.persist(product); return product; } // similarly add methods for PUT and DELETE }
Настройка источника данных
Прежде чем мы начнем, нам нужно настроить источник данных. Откройте файл application.properties
и добавьте следующее:
quarkus.datasource.db-kind=postgresql quarkus.datasource.username=postgres quarkus.datasource.password=password quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/ecommerce quarkus.hibernate-orm.database.generation=update
Схема нашей установки
Давайте проиллюстрируем структуру нашего простого приложения электронной коммерции:
Заключение
И вот оно! Вы только что создали простой API для электронной коммерции с помощью Quarkus. API взаимодействует с базой данных PostgreSQL для управления продуктами. Вы можете запустить приложение с помощью команды ./mvnw compile quarkus:dev
.
Помните, что это очень простая реализация. В реальном сценарии вам, вероятно, понадобится управление пользователями, категории, изображения продуктов, корзины для покупок и интеграция с платежной системой.
Но это отличная отправная точка. Как вы видели, Quarkus позволяет очень легко настроить и запустить RESTful API. Так что идите вперед и создайте что-то удивительное!
🔗 Свяжитесь со мной в LinkedIn!
Я надеюсь, что вы нашли эту статью полезной! Если вы хотите узнать больше и быть в курсе моих последних идей и статей, не стесняйтесь связаться со мной в LinkedIn.
Давайте расширять наши сети, участвовать в содержательных дискуссиях и делиться своим опытом в мире разработки программного обеспечения и за его пределами. С нетерпением ждем связи с вами! 😊