本文主要是介绍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/
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应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!