前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KonaJDK – 赋能腾讯云上Java生态

KonaJDK – 赋能腾讯云上Java生态

作者头像
腾讯大数据
发布2020-11-02 11:40:24
1.9K0
发布2020-11-02 11:40:24
举报
文章被收录于专栏:腾讯大数据的专栏

导语: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可能对业务稳定性存在影响,所以我们也没有考虑使用oracleJDK8作为AARCH64的首先JDK。

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

KonaJDK 的AARCH64版本基于OpenJDK社区最受欢迎的IcedTea 项目,之后经过KonaJDK大量的研发,适配与修正。在稳定性方面经过了大规模生产环境的测试与验证,并且通过了专有云等产品的质量验收。同时,腾讯内部TencentJDK协同团队可以持续为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客户, 在信创支持,稳定性,性能等方面提升云产品的价值。

扫码关注 | 即刻了解腾讯大数据技术动态

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档