October 5, 2021
在Java领域云原生开发框架,强烈推荐红帽JBoss开发团队研发的Quarkus框架。 之前写过两篇公众号文章介绍过Quarkus。2019年QCon北京开发者大会上,演讲议题《Java 容器化部署–从应用服务器到云原生》https://qcon.infoq.cn/2019/beijing/track/500,应该是国内第一次大型开发会议介绍此开发利器的主题。
那时Quarkus 1.0还没有发布,但已经表现出王者之气。
Java语言在云时代,其固有特点限制了一些应用场景,最明显的两处就是启动时间太长和占用内存较大。 Oracle研发团队开发出GraalVM,可以将Java程序编译成本地(Native)程序,极大的解决上述两个问题。几个开发团队不约而同的都采用编译Java应用思路来设计开发框架,除了Quarkus,还有Oracle开发的Helidon,Object Computing开发的Micronaut,以及Spring社区的Spring Native。
其中Helidon和Quarkus用的Jakarta EE API (Quarkus做了一些取舍,重要部分都可以用JEE API),SpringNative采用Spring框架API,Micronaut则是采用了自己定义的API。 Spring框架自身存在很多Java反射用法,可能是导致SpringNative1.0发布迟缓的原因,这个局面可能需要在Spring6大版本升级后才能改善。JEE API因为只有很薄的一层接口,框架的大量细致工作在于对实现的处理上。
JBoss团队之前积累的优势淋漓尽致的显现出来,之前应用服务器,各个规范和扩展就全面是自行研发,面对Quarkus的需求,JBoss集中了精兵强将,不但在短时间内设计出精良的Quarkus内核,而且快速的使Resteasy,Hibernate,Undertow等重要组件可用在Quarkus上,并根据native化需求,重构重写了部分关键组件,如Arc,Panache,Kogito,Mutiny,引入Smllrye,Vertx等优秀功能组件。 写这篇文章之时,Quarkus发布版本是2.2.2,成熟度已经符合生产系统要求。和Openshift/Kubernetes配合可以构建云原生应用系统。
从2018年末开始接触Quarkus项目,一直在关注和研究,对整个项目发展的脉络很熟悉。 Quarkus目前是一个功能非常全面Java云原生开发框架,功能如下:
微服务开发,包括多个层次的技术组件支持。
响应式服务开发,提供各个方面的响应式编程接口实现。
云原生支持部署应用到Kubernetes和Openshift
通过Microprofile API支持微服务治理和可观测性各项功能
支持JPA,也可以使用Panache (ActiveData)支持数据持久化
支持各种Nosql数据库
支持各种消息和缓存中间件
支持RPC和序列化机制
良好的安全功能,和外部安全框架集成
提供Camel扩展,和外部系统集成
使用Kogito,提供工作流程和规则处理支持
支持云计算环境,提供对主流云平台serverless环境支持
快速构建工具,支持主流IDE环境
测试扩展方面进行单元测试和集成测试
提供对Spring框架API的支持
其他数十外部系统的集成访问
在业务系统开发领域,Java语言优势明显,所以Quarkus面向的市场非常广大,就是和K8s配合来实现云原生应用开发。 已经有很多面向互联网用户的应用系统上线部署,都是用Quarkus来开发的。
梳理了相关技术知识,形成三个模块,分别是微服务开发和治理、Java云原生开发框架、Quarkus开发深入解析。 可以作为业务软件系统开发参考,进行技术咨询,也可以作为技术培训课程大纲使用。
模块A 微服务开发和治理
内容简介: 介绍Web微服务技术发展演进路线,对重点技术进行分析说明。全面覆盖Java微服务主流的框架和服务治理技术,开发者可以了解Java微服务相关技术知识。并为下一部分Quarkus开发框架铺垫基础知识。
内容纲要: 一、Web应用
- 分布式组件技术
- Web时代促使JavaEE诞生
- Spring框架横空出世
- MVC模式百花齐放
二、企业级软件应用
- 持久化的选择
- EJB业界大讨论和取舍
- 事务,企业应用核心技术
- Webservice的思考
三、互联网应用
- Rest数据服务提供
- 前端技术的演变
- RPC信息通道
- 消息中间件
- 无状态需求和分布式缓存广泛应用
- 部署单元的技术分析
四、可启动Java应用程序
- 可部署和直接启动
- 微服务维度分析
- 快速迭代和开发组织变化
五、Springboot巨大成功
- 先天优势的SpringConfig
- 各种优选后开箱即用的starter
- 快速构建项目的脚手架
- 异步响应式优化
六、微服务基础设施
- 命名和查询服务
- 集中日志处理分析
- 服务降级和熔断保护
- 集群和状态复制
- 路由处理和API网关
- 统一安全服务
七、Java微服务程序
- SpringCloud框架
- MicroProfile规范
- 可引导的JavaEE应用
- 性能分析
模块B Java云原生开发框架
内容简介: Java云原生开发时面临的挑战和应对之道,黑科技GraalVM技术原理和应用。开发框架Quarkus项目实战分析和实现原理,对其中重点的功能模块和外部集成技术进行分析。云原生开发运用Kubernates平台,针对其能力在设计时需要考虑的模式。云原生对于服务治理的技术实现。
内容纲要: 一、Java语言云原生对比和分析
- 容器和容器编排技术
- Java微服务的容器化部署
- 启动时间和内存占用技术说明
- 架构相似性
二、GraalVM
- 介绍和技术分析
- 生成本地二进制应用
- Java程序本地化的若干障碍
三、Quarkus实战
- Java云原生本地应用
- 项目结构分析
- 核心功能模块
- 基于JavaEE规范API和改进
- 和外部服务设施的集成
- 构建部署
- 测试功能
四、微服务框架
- CDI注入实现
- Web服务
- 数据持久化
- 响应式异步编程
- 配置项支持
- 微服务治理API
五、服务集成
- Vertx功能
- Nosql数据服务
- 消息系统
- 缓存服务
- RPC系统访问
- 安全功能实现
六、Kubernetes云原生开发
- 多个组件副本构建集群
- 有状态的StatefulSet
- 工作任务Job和CronJob
- 多节点管理
- 应用配置
- 灵活存储
- Ingress
- 可扩展的CRD
七、云原生服务治理能力
- 现代应用开发提出更高要求
- 服务治理
- 集群部署和流量分配
- 软件升级和回滚
- 安全性和用户管理
- 可观测性
模块C Quarkus开发深入解析
内容简介: 面向已经开始采用Java开发云原生应用的开发团队,或者是希望对Quarkus有深入了解的开发者。提供对于Quarkus实现机制深入解析,以及对重要的功能组件实现分析。可以自己编写扩展,更好的编写面向云原生环境高性能应用程序。
内容纲要: 一、Quarkus项目实战分析
- 项目结构和代码分析
- dev调试功能
- 项目生成和cli能力
二、开发框架深入解析
- 启动过程
- native编译过程分析
- builditem和编译链
- 设计逻辑分析
- 配合GraalVM,更好的支持native
三、核心组件
- Configure处理过程
- Arc功能组件
- Vertx和Netty网络框架
- Resteasy提供Web服务
- Hibernate组件和Panache ActiveData功能
- Kafka,JMS等消息系统集成
- 缓存的应用和缓存系统集成
四、Serverless能力
- Serverless应用前景
- 对于主流公有云支持
- Funqy实现
- AWS Lamdba思考
- AWS云服务集成
五、数据和流程
- Quarkus对Camel的支持
- 数据集成
- Kogito云原生设计
- 工作流程和规则
六、安全功能
- Web安全
- 加密通道
- 授权认证功能
- 安全编程和安全漏洞
七、丰富功能
- 支持Spring框架API
- 文字模板引擎
- 日志框架
- 开发自己的扩展