quarkus实战之一:准备工作
欢迎访问我的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/解压,得到文件夹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-maven-3.8.4-bin.zip
- 將下载的压缩包在/usr/local/解压,得到文件夹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就像一副神秘的山水画卷,在欣宸原创的推动下徐徐展开,敬请期待
你不孤单,欣宸原创一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 数据库+中间件系列
- DevOps系列
quarkus实战之一:准备工作相关推荐
- quarkus实战之四:远程热部署
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<quarkus实战>系列 ...
- 全新java架构技术框架Quarkus实战神仙文档
前言 Quarkus是一款有别于传统Java架构的新技术框架.它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA.JAX-RS.EclipseVert.x.Eclipse MicroProfi ...
- Quarkus 实战二:开发REST ful 服务实现简单的curd功能
Quarkus 实战二:开发REST ful 服务实现简单的curd 概述 Quarkus集成了RESTEasy,这是一种用于定义REST API的JAX-RS实现 参考文档: Quarkus 文档 ...
- 基于Windows10+Python3.8.5+RTX3060实战yolov5准备工作
一.准备工作 1.下载yolov5主程序,下载到桌面 https://github.com/ultralytics/yolov5 2.下载Anaconda,配置运行环境 https://www.ana ...
- 10分钟虚拟设备接入阿里云IoT平台实战
10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...
- bert获得词向量_无监督语义相似度匹配之Bert抽取文本特征实战
今天记一次采用bert抽取句子向量的实战过程,主要是想感受一下bert抽取出来的句子特征向量是否真的具有不错的语义表达. 在此之前,我们来回顾一下,如果我们想拿到一个句子的特征向量可以采用什么样的方式 ...
- quarkus数据库篇之一:比官方demo更简单的基础操作
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于<数据库篇> <quarkus数 ...
- DL4J实战之一:准备
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于DL4J DL4J是Deeplearning4j的 ...
- hexo+GitHub博客搭建实战
我的个人博客链接:wangwlj.com 想要搭建类似的博客吗? 如果是,那就赶快点进来吧-- 手把手教学,现在开始!! PS: 将会在个人博客持续更新,本文链接:hexo+GitHub博客搭建实战. ...
最新文章
- 【MySQL】数据库1 (数据库+基本操作介绍)
- CV中的色彩空间大全
- 创建最原始的XMLHttprequest对象
- python爬虫基础教程1_Python爬虫系列(一)入门教学
- shell 字符截取
- git学习-fetch命令
- 什么是共享读锁和排他写锁?
- C++ 注册表编程(包含权限的提升)
- Appium 环境搭建
- android 转盘菜单,Android实现可点击的幸运大转盘
- 设计模式 装饰模式(decorate)
- 荡气回肠的移动互联网十年(建议收藏)
- Java代码使用最小二乘法实现线性回归预测
- 网页的灵魂,游荡在人机之间的互动——Vuejs动画体验
- 中国互联网生态报告发布
- 【服务器】XShell 使用汇总
- 《Spring中的自动装配》
- 软件架构万字漫谈:业务架构、应用架构与云基础架构
- python类的使用的生物学应用_python类的使用的生物学应用_Python 类的使用
- 压缩感知——沃尔什-哈达玛(WHT)变换与逆变换的Matlab代码实现
热门文章
- Spring 有状态bean 无状态bean
- 内核的likely和unlikely
- 总投资30亿、算力500P,宜昌先进计算产业可持续发展之路
- 1024程序员节,第一次参与,倍感兴奋
- 赛事重启!第五届“强网”拟态防御国际精英挑战赛重磅归来!
- python 开发框架 ant_GitHub - forging2012/pymqant: python版本mqant游戏框架
- 互联网创新创业大赛优秀范例_创新创业大赛作品范例(获双创大赛金奖的创新创业项目)...
- Unity打字机 三种方式教会你
- html+js实现手机浏览器的滑动验证
- WebSocket实现简单聊天功能案例