热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

以下内容|尾部_quarkus实战之一:准备工作

篇首语:本文由编程笔记#小编为大家整理,主要介绍了quarkus实战之一:准备工作相关的知识,希望对你有一定的参考价值。欢迎访问我的GitHub

篇首语:本文由编程笔记#小编为大家整理,主要介绍了quarkus实战之一:准备工作相关的知识,希望对你有一定的参考价值。



欢迎访问我的GitHub



这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos



关于《quarkus实战》系列


  • 《quarkus实战》系列是欣宸在2022年春季推出的又一个精品原创系列,作者将自己对java的热爱渗透到每段文字和每行代码中,全系列秉承欣宸一贯的知识+实战风格,既有知识普及、更有实际操作,在涉及基础知识之处更有深入分析,尽最大努力,将自己眼中云端的java的样子呈现出来

引子


  • 作为一名Java程序员,如何适应目前的容器化趋势?将现有SpringBoot应用编译构建制作成docker镜像,然后运行在kubernetes环境,这是欣宸目前在实际项目中的做法,但也面临的诸多困扰:

  1. 启动慢:一个应用从启动到服务可用,一般是数秒,在对CPU核数和内存严格限制的情况下,花数十秒启动的情况也屡见不鲜,这样的问题无法适应需要快速重启或快速扩容的场景
  2. 内存消耗大:曾强行将内存限制在1G,结果FGC频率变大,还经常触发OMMKill导致pod重启,并且启动时间也会变长,相比之下,集群中golang应用大多配置128M内存限制,我只能羡慕了
  3. 另外还有诸多疑问也困扰着我:java技术栈内已有完整的注册发现、调用链追踪、指标监控、配置等技术实现,在kubernetes环境又该如何选择或适配
  4. 生在云上,长在云上的云原生时代,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
  • 五大特点分别如下:

  1. 容器优先
  2. 命令式和响应式
  3. 社区和标准的支持
  4. kubernetes原生
  5. 对开发者友好

  • 来看看官网给出的对比数据,如下图,如果使用的是quarkus框架和GraalVM虚拟机,在内存方面对比传统框架有一个数量级的优势,而响应时间差距已不止一个数量级:
  • 容器化的路上,选择quarkus是个不错的选择

本篇概览


  • 作为《quarkus实战》系列的开篇,本文的目标是为后续文章和编码实战做好准备工作,由以下内容组成:

  1. 涉及软件的版本信息介绍
  2. 安装JDK-11
  3. 安装maven-3.8.4
  4. 安装docker
  5. 关于kubernetes的安装
  6. 新建maven工程,作为《quarkus实战》系列所有代码的父工程

  • 以上就是今天的内容,先从环境信息开始吧

涉及软件的版本信息介绍


  • 开始操作前,先将我这里的环境信息给出,这是能成功运行《quarkus实战》系列所有功能的环境,您可以用来作参考
  • 先看开发环境:

  1. 操作系统:Ubuntu 16.04.7 LTS 桌面版(没错,写代码、本地运行调试、写文章都用这个Ubuntu电脑)
  2. JDK:11.0.14
  3. Maven:3.8.4
  4. IDE:IDEA 2021.2.3(Ultimate Edition)
  5. quarkus:2.7
  6. docker:20.10.7

  • 然后是运行环境,这是运行开发出的镜像的云环境:

  1. 操作系统:CentOS-7.9.2009
  2. 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-aliyunid>
<mirrorOf>*mirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>

安装docker


  • 安装docker的命令与各操作系统有关&#xff0c;这里给出ubuntu下的安装命令作为参考&#xff1a;

curl -sSL https://get.docker.com | sh

  • 如果您在ubuntu系统中用的不是root帐号&#xff0c;建议做参考下文做一些简单设置&#xff0c;这样操作docker的时候就无需每次都用sudo了&#xff1a;
    《设置非root账号不用sudo直接执行docker命令》

关于kubernetes安装


  • 可以参考《极速安装kubernetes-1.22.0&#xff08;三台CentOS7服务器&#xff09;》

新建maven工程


  • 新建名为quarkus-tutorials的maven工程&#xff0c;目前这里面还是空的&#xff0c;将来会作为整个系列相关源码的父工程&#xff0c;将所有源码和依赖库版本统一管理起来

未完待续


  • 至此&#xff0c;准备工作已完成&#xff0c;quarkus就像一副神秘的山水画卷&#xff0c;在欣宸原创的推动下徐徐展开&#xff0c;敬请期待

你不孤单&#xff0c;欣宸原创一路相伴


  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库&#43;中间件系列
  6. DevOps系列

推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
author-avatar
费小小微博_372
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有