k8s(3):部署一个Quarkus应用

2024-04-17 19:48

本文主要是介绍k8s(3):部署一个Quarkus应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Quarkus是为GraalVM和HotSpot量身定制的Kubernetes Native Java框架,由最佳的Java库和标准精心打造而成。是一个比较新的框架,基于vert.x编写。可以通过GraalVM 编译,运行内存和镜像大小变得超级小。这里使用Quarkus的响应式简单写个crud,尝尝鲜。跟spring的webflux比,个人感觉对hibernate支持好一些,对docker的支持比较好,开箱即用生成docker image。Route写法现在spring也支持了,GraalVM编译据说spring也支持了。可能主要差别还是在vert.x和webflux这里。

1. 创建Quarkus应用

1.1 生成项目

跟spring一样可以到官网直接根据需求获取一个项目文件包:https://code.quarkus.io/

image-20201027162753099

1.2 配置postgresql数据库

通过配置文件配置服务使用的数据库内容:

  • 使用vertx的响应连接库
  • 通过hibernate启动时运行sql文件
  • 通过环境变量配置POSTGRE_HOST数据库的host地址
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=ffzs
quarkus.datasource.password=123zxc
quarkus.datasource.reactive.url=vertx-reactive:postgresql://${POSTGRE_HOST}:5432/mydb# 和spring中的hibernate用法相同,第一下使用drop-and-create, 之后可以替换为update
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.sql-load-script=import.sql

本地测试期间通过docker-compose启动postgresql数据库:

    postgres:image: postgres:10.5container_name: postgresrestart: alwaysnetworks:- springports:- 5432:5432environment:POSTGRES_USER: ffzsPOSTGRES_PASSWORD: 123zxcPOSTGRES_DB: mydbPGDATA: /tmpvolumes:- ./postgres/data:/var/lib/postgresql/data/pgdata 

sql文件内容为,预写入数据库的一些数据, 创建数据库和数据表可以通过hibernate完成:

INSERT INTO employee(id, name, age, email) VALUES (1, 'ffzs', 12, 'ffzs@163.com');
INSERT INTO employee(id, name, age, email) VALUES (2, 'vincent', 14, 'vincent@163.com');
INSERT INTO employee(id, name, age, email) VALUES (3, 'fanfanzhisu', 17, 'fanfanzhisu@163.com');

1.3 创建Entity类

  • 创建一个基础的Entity类关联数据库中的表
  • 简单的name,age,email字段
  • @NamedQuery(name = Employee.FIND_ALL, query = "SELECT e FROM Employee e")可以通过将name和query绑定,在服务中使用
/*** @Author: ffzs* @Date: 2020/10/27 下午4:40*/@Entity
@Table(name = "employee")
@NamedQuery(name = Employee.FIND_ALL, query = "SELECT e FROM Employee e")
public class Employee {public static final String FIND_ALL = "Employee.findAll";@Id@SequenceGenerator(name = "fruitsSequence", sequenceName = "known_fruits_id_seq", allocationSize = 1, initialValue = 10)@GeneratedValue(generator = "fruitsSequence")private Long id;@Column(length = 40)private String name;private Integer age;@Column(length = 60, unique = true)private String email;public Employee() {}public Employee(Long id, String name, Integer age, String email) {this.id = id;this.name = name;this.age = age;this.email = email;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Long getId

这篇关于k8s(3):部署一个Quarkus应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912682

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个