2 Star 1 Fork 1

Jimmy.Zhang / world

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

world

项目介绍

本系列文章使用Quarkus搭建一个通用的项目架构; 内容包括领域开发,主流技术,最佳实践,涉及开发,部署,监控;

主要技术

Java17+Quarkus2+MyBatis+Redis+Docker

主要目标

提供高并发,低内存的基础(使用GraalVM+Reactive) 提供专注业务的开发体验

适用范围

  • 小项目百万级别
  • 小团队十人团队

开发环境

Windows10+IDEA+Docker

  • 开发环境 mvn quarkus:dev
  • 发布环境 project/build/deploy.sh | deploy.sh -p develop 直接部署到远程服务
  • 容器环境 project/build/docker.sh | docker.sh -p [develop] -t native|jvm 生成docker镜像

Window10+WSL(Debian+GraalVM)

  • 清理+安装 mvn clean install
  • 清理+打包 mvn clean package -Dquarkus.profile=develop -Dquarkus.package.type=native -f flower-api/pom.xml
  • 运行 flower-api/

分层介绍

Interface接口层-负责处理网络协议相关的逻辑

** 主要功能 **
1. 网络协议的转换,获取数据并转换为相应的Bean,一般有框架处理
2. 统一鉴权,Session管理,获取当前用户,并作鉴权和校验
3. 异常处理,避免异常直接暴露给调用端,接口层做统一异常捕获,转化为调用端可以理解的数据格式

规范1: 
Interface层的Http接口,返回值为ActionResult,捕获所有异常

Application应用层-负责业务流程

** 主要功能 **
1. 业务编排,不负责业务逻辑
2. 领域模型与对外输出DTO进行转换,包括Query, Input, Event
3. 使用合适的仓储获取数据和持久化数据

规范1:建议接入参数只有一个对象(例外情况:根据单一ID查询和分页的情况)
规范2:针对不同的语义,要避免对象的复用
规范3:[MAPPER] fromEntity从实体转视图, fromInput从视图转实体
规范4:[APPLICATION] loadXXX从数据库获取,find从缓存获取

Repository存储层

规范1:数据表prefix,et_表示与entity相关的业务数据,gb_表示公共数据,与业务没有直接关系
规范2:数据表名采用下划线命名法,小写字母与下划线组合
规范3:使用SQL相关标识做为方法开头select,insert

jvm和native部署

  • native镜像,镜像尺寸:200m,启动时间:0.033s
  • jvm镜像,镜像尺寸:440m,启动时间:1.779s
  • 特别说明:由于使用了hutool的crypto和jwt包,此两个包支持国密,引用了Bouncy Castle,在native的编译过程中会报错(具体原因不详),所以native模式下需要对hutool进行修改(联系获取源文件)

使用说明

Quarkus入门系列

准备篇
准备篇-Quarkus是什么 准备篇-使用GraalVM 准备篇-关于JavaEE 准备篇-与SpringBoot不同

基础篇
基础篇-项目架构 基础篇-使用Native 基础篇-使用Reactive

实战篇
实战篇-部署 实战篇-监控

MIT License Copyright (c) 2022 Jimmy.Zhang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

one flower one world by quarkus 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/jazzily/world.git
git@gitee.com:jazzily/world.git
jazzily
world
world
master

搜索帮助