共计 3439 个字符,预计需要花费 9 分钟才能阅读完成。
欢送拜访我的 GitHub
这里分类和汇总了欣宸的全副原创(含配套源码):https://github.com/zq2599/blog_demos
对于《quarkus 实战》系列
-
《quarkus 实战》系列是欣宸在 2022 年秋季推出的又一个精品原创系列,作者将本人对 java 的酷爱渗透到每段文字和每行代码中,全系列秉承欣宸一贯的常识 + 实战格调,既有常识遍及、更有实际操作,在波及基础知识之处更有深入分析,尽最大致力,将本人眼中 云端的 java 的样子 出现进去
引子
- 作为一名 Java 程序员,如何适应目前的容器化趋势?将现有 SpringBoot 利用编译构建制作成 docker 镜像,而后运行在 kubernetes 环境,这是欣宸目前在理论我的项目中的做法,但也面临的诸多困扰:
- 启动慢:一个利用从启动到服务可用,个别是数秒,在对 CPU 核数和内存严格限度的状况下,花数十秒启动的状况也不足为奇,这样的问题无奈适应需要疾速重启或疾速扩容的场景
- 内存耗费大:曾强行将内存限度在 1G,后果 FGC 频率变大,还常常触发 OMMKill 导致 pod 重启,并且启动工夫也会变长,相比之下,集群中 golang 利用大多配置 128M 内存限度,我只能艳羡了
- 另外还有诸多疑难也困扰着我:java 技术栈内已有残缺的注册发现、调用链追踪、指标监控、配置等技术实现,在 kubernetes 环境又该如何抉择或适配
- 生在云上,长在云上 的云原生时代,Java 利用何去何从?用 jib 插件将 SpingBoot 利用转为 docker 镜像,在 k8s 上运行,仅此而已吗?
-
被以上问题困扰了很久,直到遇见 quarkus,当然了,它还没弱小到解决上述所有问题,但它给了我方向和心愿:java 畛域也有面向云原生的残缺计划
对于 quarkus
- quarkus 是为 GraalVM 和 HotSpot 量身定制的 Kubernetes 原生 Java 框架,采纳同类最佳的 Java 库和规范制作而成,来自 RedHat,是一个在 Apache 许可证 2.0 版下取得许可的开源我的项目(来自官网)
- quarkus 官网:https://quarkus.io
- quarkus 的 github 仓库:https://github.com/quarkusio/quarkus
- 来看看 quarkus 的特点,官网用了超大字体形容,内容简洁:超音速、亚原子的 JAVA
- 五大特点别离如下:
- 容器优先
- 命令式和响应式
- 社区和规范的反对
- kubernetes 原生
- 对开发者敌对
- 来看看官网给出的比照数据,如下图,如果应用的是 quarkus 框架和 GraalVM 虚拟机,在内存方面比照传统框架有一个数量级的劣势,而响应工夫差距已不止一个数量级:
-
容器化的路上,抉择 quarkus 是个不错的抉择
本篇概览
- 作为《quarkus 实战》系列的开篇,本文的指标是为后续文章和编码实战做好筹备工作,由以下内容组成:
- 波及软件的版本信息介绍
- 装置 JDK-11
- 装置 maven-3.8.4
- 装置 docker
- 对于 kubernetes 的装置
- 新建 maven 工程,作为《quarkus 实战》系列所有代码的父工程
-
以上就是明天的内容,先从环境信息开始吧
波及软件的版本信息介绍
- 开始操作前,先将我这里的环境信息给出,这是能胜利运行《quarkus 实战》系列所有性能的环境,您能够用来作参考
- 先看开发环境:
- 操作系统:Ubuntu 16.04.7 LTS 桌面版(没错,写代码、本地运行调试、写文章都用这个 Ubuntu 电脑)
- JDK:11.0.14
- Maven:3.8.4
- IDE:IDEA 2021.2.3(Ultimate Edition)
- quarkus:2.7
- docker:20.10.7
- 而后是运行环境,这是运行开发出的镜像的云环境:
- 操作系统:CentOS-7.9.2009
- kubernetes:1.22.0(三台服务器,一台 master,两台 worker)
-
环境介绍结束,开始入手
装置 JDK
- 先看 quarkus 官网对 JDK 和 maven 版本的要求,如下所示,JDK 最低11,maven 最低3.8.1:
- 下载 JDK11,地址是:https://www.oracle.com/java/technologies/downloads/#java11,依照本人的操作系统类型下载,如下图,我这里选的是 linux 版本:
- 將下载的压缩包在 /usr/lib/jvm/ 解压,失去文件夹 <font color=”red”>jdk-11.0.14**
-
关上文件~/.bashrc,在尾部减少以下内容:
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.14 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
- 执行source ~/.bashrc,让配置失效
-
执行 java -version 验证 JDK 是否失效:
will@hp:~$ java -version java version "11.0.14" 2022-01-18 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.14+8-LTS-263) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.14+8-LTS-263, mixed mode)
装置 Maven
- 下载压缩包,地址:https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-…
- 將下载的压缩包在 /usr/local/ 解压,失去文件夹 <font color=”red”>apache-maven-3.8.4**
-
关上文件~/.bashrc,在尾部减少以下内容:
export MAVEN_HOME=/usr/local/apache-maven-3.8.4 export PATH=$MAVEN_HOME/bin:$PATH
- 执行source ~/.bashrc,让配置失效
-
执行 mvn -version 验证 maven 是否失效:
will@hp:~$ mvn -version Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537) Maven home: /usr/local/apache-maven-3.8.4 Java version: 11.0.14, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-11.0.14 Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "4.15.0-142-generic", arch: "amd64", family: "unix"
-
倡议本地 maven 配置阿里云镜像,这样能够防止从地方仓库下载依赖失败的问题,在 apache-maven-3.8.4/conf/settings.xml 的 mirrors 节点下减少上面这个节点:
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
装置 docker
-
装置 docker 的命令与各操作系统无关,这里给出 ubuntu 下的装置命令作为参考:
curl -sSL https://get.docker.com | sh
-
如果您在 ubuntu 零碎中用的不是 root 帐号,倡议做参考下文做一些简略设置,这样操作 docker 的时候就无需每次都用 sudo 了:
《设置非 root 账号不必 sudo 间接执行 docker 命令》对于 kubernetes 装置
-
能够参考《极速装置 kubernetes-1.22.0(三台 CentOS7 服务器)》
新建 maven 工程
-
新建名为 quarkus-tutorials 的 maven 工程,目前这外面还是空的,未来会作为整个系列相干源码的父工程,将所有源码和依赖库版本对立治理起来
未完待续
-
至此,筹备工作已实现,quarkus 就像一副神秘的山水画卷,在欣宸原创的推动下徐徐开展,敬请期待
欢送关注思否:程序员欣宸
学习路上,你不孤独,欣宸原创一路相伴 …