写点什么

KonaJDK 赋能云上 Java 新生态

  • 2020-12-08
  • 本文字数:3252 字

    阅读完需:约 11 分钟

KonaJDK 赋能云上 Java 新生态

一、自研 KonaJDK 对于云 Java 生态的意义


JDK 作为 Java 应用的基础设施,在云 Java 生态上的重要性不言而喻。KonaJDK 作为 Tencent 自研 JDK, 已经平稳支撑于腾讯云微服务,消息中间件,大数据等核心业务,同时在信创等场景上作为 Java 业务的基础支撑组件,填补了腾讯云信创场景下 JDK 组件的空白。本文将主要从 KonaJDK 在信创云环境支撑,KonaJDK 支持腾讯云产品的能力拓展与定制化以及 KonaJDK 在大数据场景的优化实践几个方面,介绍 KonaJDK 对于腾讯云 Java 业务的支撑与优化。


二、KonaJDK 信创环境支撑


信创云环境中 Java 业务要求 JDK 能够稳定高效的支撑国产 CPU 运行环境。其中主要的 CPU 指令集为 aarch64。通过我们调研,目前 JDK8 在 aarch64 指令集的情况如下:


  • OpenJDK


OpenJDK8 在主线分支中并没有 aarch64 指令集的支持,网上能够找到的开源版本,都是开源社区几个主要参与者贡献的。对于腾讯云业务来说,开源版本并没有在生产系统中得到验证,也没有专门的人力进行代码的维护与更新。所以在可维护性,安全性及稳定性上都存在风险。


  • OracleJDK


OracleJDK 8 之中包含 AARCH64 支持。但考虑到成本,以及 OracleJDK 8 代码未开源,问题定位等方面的难度。同时,我们在特定场景下也发现 OracleJDK 频繁的 ForceSafepoint 可能对业务稳定性存在影响,所以我们也没有考虑使用 OracleJDK 8 作为 AARCH64 的首选 JDK。(具体可以参见文章:  <不要再乱下载JDK了:Elasticsearch在国产化ARM环境下的首个大坑>


经过一系列的分析,我们最终选定 KonaJDK 作为腾讯云信创方案的首选 JDK,主要原因如下:


KonaJDK 的 AARCH64 版本基于 OpenJDK 社区最受欢迎的 IcedTea 项目,之后经过 KonaJDK 大量的研发,适配与修正。在稳定性方面经过了大规模生产环境的测试与验证,并且通过了专有云等产品的质量验收。同时,腾讯内部 Tencent JDK 协同团队可以持续为 KonaJDK 提供版本维护与技术支持。


总而言之,腾讯 KonaJDK 能够在保证正确性稳定性的同时,提供 JDK 的维护,技术支持,优化以及定制化功能等方面的支持,更适合信创环境下云业务的场景。


三、KonaJDK 支持云产品能力拓展与定制化


除了稳定支撑信创云 Java 业务外, KonaJDK 在其可定制性方面也为云业务提供了多方面的支持。我们主要通过以下几方面进行说明:


1. 微服务产品中 JVM 监控诊断能力提升


根据统计,大约 60% 的云业务开发者使用 Java 语言。以腾讯云微服务管理平台(TSF)为例,其业务支撑环境,以及用户部署的微服务,主要是使用 Java spring cloud 框架实现的,即这些业务都是运行在 JDK 环境中的。但在实际使用过程中,用户更加关注的是业务的功能与实现,很难感受到 JDK 在其中的作用。作为对比,下图是云业务开发者眼中的微服务,用户更加关注微服务每个模块的功能,以及微服务业务的功能。



下图是 JVM/JDK 研发者眼中的微服务:



可以看到,基本上每一个微服务功能节点都是一个 JVM 实例。因此如何通过 JVM 侧信息帮助开发者了解自己的云业务运行情况,是云支撑平台类产品的关键功能。


目前,腾讯云微服务产品 TSF,消息中间件产品支撑环境已经使用 KonaJDK 作为业务支撑组件。除了支持标准 JMXbean,兼容开源 JVM 相关 profiler 来提供微服务基本 JVM 监控信息外, KonaJDK 还从以下方面进行相关提升(部分功能研发上线中)


  • JFR (Java Flight Recorder)


JVM 内置轻量级 Profiler,可收集 Java 应用在运行过程中的诊断及性能数据,back port 自 OpenJDK11。如果使用的是默认的配置,理论上 JFR 开销是小于 2% 的,因此必要情况下可用在现网收集数据。KonaJDK 中针对 JFR 做了大量的问题修复与能力提升,目前可以在运行时动态打开、关闭。采集到的数据在内部可以通过 KonaProfiler 进行分析


  • KonaProfiler


KonaJDK 团队研发的一款线上综合性 JVM 性能分析工具,目前支持 JFR 数据文件的分析,heap dump 数据分析,jstack 数据分析,火焰图等多种功能。


例 – KonaProfiler 支持多种类型火焰图分析




例 – KonaProfiler 对于 JFR 数据分析给出分析建议



结合以上能力,在 KonaJDK 的加持下,腾讯云微服务平台可以为用户提供 JVM 监控,线上诊断等一系列能力,满足用户在性能分析及调优方面的需求。


2. 国密算法的支持


随着国密算法等商密算法国家标准的推出,云上客户对于 Java 版本的国密算法需求越来越多。经过调研与客户反馈,我们发现目前在国密算法的使用上,主要存在以下几类问题:


  • 使用成本高


客户在一些场景上需要国密算法, 但是受各种原因限制,客户不可能也不愿意自身研发国密算法。


目前网上国密算法的实现参差不齐,以下是我们在主流搜索引擎上搜索“国密算法 Java 实现”。



从结果可以看到大部分内容都是个人爱好者的实现,或者使用开源项目。这些项目每种实现都需要学习 API 的使用,并且如何选择合适的项目,也是客户面临的成本问题。


  • 可靠性存疑


另外一点在于可靠性上, 在一些场景上,对于国密算法的要求处理功能正确与性能优秀以外,还需要可靠性保证。例如是否符合国标,是否经过认证等等。


KonaJDK 团队经过调研,实际上在 Java 密码算法的使用上,最为普及,也最为易用的实现就是 Java Cryptography Architecture(JCA), 使用 JCA 定义的 Cipher 类与 API,可以高效,便捷的使用 JDK 中实现了 JCA 的密码算法。


KonaJDK 团队经过与内部密码专家团队的合作,共同开发了基于 JCA 的国密算法 SM2, SM3,SM4 支持,其主要具备以下优点:


  • 简单易用, 国密算法使用符合标准 JCA 调用流程,开发人员在掌握 JCA 的基础上,只需要简单学习几个基本要点就可以顺利使用。

  • 安全可靠,由腾讯内部专业密码专家团队开发维护,国密算法符合国标。

  • 易于迁移,从其他 JCA 密码算法迁移到 SM 算法只需要简单的替换即可,如下图为从 RSA 切换为 SM2 算法的代码改动,最少仅需 3 行代码变动即可完成。



通过国密算法, 我们可以看到 KonaJDK 提供的定制化能力与技术支持能力能够进一步提升云上产品的能力,方便客户,提高产品价值


3. 工具优化,大堆场景下 Jmap 扫描速度的提升,回馈社区


提到 Java 堆分析,相信很多 Java 程序员最先想起的就是 Jmap。作为 JDK 内置的堆内存分析工具,Jmap 可以实现 jvm 堆内存的统计与 dump 功能。在实际使用中,我们发现在大数据等大堆场景下, jmap 的一次使用要消耗很长时间。而由于 jmap 在运行过程中需要暂停 Java 业务线程,所以可能会出现一次 jmap 发生导致 Java 进程无响应,从而主备结点切换,最终造成业务系统抖动。


经过问题的分析, 我们在 KonaJDK 中引入了 Jmap 的并行堆扫描,如图所示:



通过并行堆扫描与 thread local 数据存储,我们将 Jmap histo 工作时间提升了 6-10 倍,缓解了业务抖动问题。


同时作为 openJDK 社区的参与者,我们将并行堆扫描这个特性积极贡献给了 OpenJDK 社区,目前针对 G1, ZGC, shenandoahGC 的 patch 已经合入 jdk16 主线,而针对 ParallelScavenge 堆的 patch 也已经经过多轮 review,正待合入。


四、Kona JDK 性能保证 - 大数据线上优化实践


除了以上几方面,腾讯 KonaJDK 专家团队针对大数据业务进行了性能的专项提升。例如,通过 GC 调度等优化,大幅降低生产环境 CPU 利用率; 优化 GC 物理内存回收算法,以减少进程物理内存占用; G1 和 ZGC 等 GC 算法持续优化以提升稳定性和减少毛刺等。经过大数据生产环境大规模实际部署验证,和社区版本对比,Kona JDK 在 CPU 使用率和物理内存使用等方面都有明显优势。


五、总结


在过去的 1 年中,KonaJDK 逐步崭露头角,帮助云业务在产品能力,稳定性与性能等方方面面进行了整体的提升。作为 OpenJDK 开源社区的一员,KonaJDK 团队积极参与社区,贡献社区,在刚刚发布的 JDK15 中,腾讯成为国内厂商历史首次 Notable 贡献者,全球贡献第五。


Tencent 在 JDK15 中全球贡献第五


在未来,我们会更加努力,让 KonaJDK 更好的服务于腾讯云,更好的服务于云上 Java 客户,在信创支持、稳定性、性能等方面提升云产品的价值。


头图:Unsplash

作者:孙宇,臧琳

原文KonaJDK赋能云上Java新生态

来源:腾讯云中间件 - 微信公众号

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


2020-12-08 23:551567

评论

发布
暂无评论
发现更多内容

功能强大的FTP(文件传输协议)客户端Transmit 5 for Mac中文破解版

Rose

VMware Fusion Pro 13密钥 for Mac(VM虚拟机)v13.5.2中文版

Rose

TeleVis:基于 NLP 的新闻舆情可视化项目

阿里云天池

深度解读KubeEdge架构设计与边缘AI实践探索

EquatorCoco

人工智能 边缘AI

数据库管理开发工具Navicat for MySQl 中文汉化版 Mac/win

Rose

开发运营级海外语聊APP源码需要考虑哪些?借鉴Falla、WePlay、YoHo

山东布谷科技胡月

海外语聊APP 语聊APP开发 语音聊天室APP 语聊源码 语聊平台搭建

一文带你玩转全新采集配置 CRD:AliyunPipelineConfig

阿里巴巴云原生

阿里云 云原生 iLogtail

FSNotes for mac(文本处理软件)v6.9.0中文免激活版

Mac相关知识分享

音频采样器Native Instruments Kontakt 7破解版安装包 Mac/win

Rose

知识管理:最适合千人团队的8大知识库软件

爱吃小舅的鱼

知识管理 知识库 知识管理系统 知识管理软件 知识库工具

Mac硬盘检测:SMART Utility for mac 激活版

你的猪会飞吗

mac软件下载 mac破解软件下载

1688商品详情API返回值:商品库存管理的智能化

技术冰糖葫芦

api 货币化 API 接口 API 文档 API 测试

《财富》杂志公布2024年《财富》全球500强

财见

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0中文版

Mac相关知识分享

数据分析工具

Earth 3D for Mac(3D地球模拟软件)v8.1.3免激活版

Mac相关知识分享

虾皮商品数据接口全解析:高效采集,精准运营新利器

tbapi

shopee API shopee商品详情接口 shopee商品详情数据采集

盐城销量比赛 -- YR Tech团队比赛攻略

阿里云天池

汇聚行业实践,树立应用典范——《Serverless应用实践案例集》重磅发布

华为云PaaS服务小智

Serverless 华为云

EdgeView 4 for Mac(快速图像查看器) v4.7.8激活版

Mac相关知识分享

FashionAI比赛-服饰属性标签识别比赛赛后总结(来自 Top14 Team)

阿里云天池

ppt目录页怎么做?2款自动生成PPT目录的AI工具推荐!

彭宏豪95

效率工具 职场 PPT 办公软件 AI生成PPT

Keka for Mac(压缩解压工具) 1.3.6中文版

Mac相关知识分享

文件压缩软件

Native Instruments Komplete Kontrol for mac(音源制作软件)

Mac相关知识分享

Mac软件 音乐制作软件

首届中文NL2SQL挑战赛亚军比赛攻略_BugCreater

阿里云天池

如何快速集成京东商品详情API

技术冰糖葫芦

api 货币化 API 接口 API 文档 API 测试

美年健康AI算法大赛--季军解决方案

阿里云天池

华为云IoTDA控制台全新升级,来体验35万+开发者使用的平台

华为云开发者联盟

控制台 华为云IoTDA 设备接入 企业号 8 月 PK 榜 2024企业号8月pk

iStat Menus for Mac(系统活动监控器) v6.73 (1230)中文激活版

Mac相关知识分享

系统监控工具

Cisdem PDFMaster for mac(专业PDF编辑转换器)v6.5.0激活版

Mac相关知识分享

PDF转换器

数据飞轮驱动消费行业变革,火山引擎数智平台助力门店数智化转型

字节跳动数据平台

数字化转型 云服务 数据平台 火山引擎 数据飞轮

鸿蒙智行享界S9发布上市|小艺一语直达奢享空间

Geek_2d6073

KonaJDK 赋能云上 Java 新生态_语言 & 开发_腾讯云中间件_InfoQ精选文章