前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >KonaJDK赋能云上Java新生态

KonaJDK赋能云上Java新生态

作者头像
腾讯云中间件团队
发布于 2021-03-24 07:34:01
发布于 2021-03-24 07:34:01
1.1K0
举报

导语:本文将主要从KonaJDK在信创云环境支撑,KonaJDK支持腾讯云产品的能力拓展与定制化以及KonaJDK在大数据场景的优化实践几个方面,介绍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可能对业务稳定性存在影响,所以我们也没有考虑使用OracleJDK8作为AARCH64的首先JDK。(具体可以参见文章: <不要再乱下载JDK了:Elasticsearch在国产化ARM环境下的首个大坑>

经过一系列的分析,我们最终选定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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
系列 | OpenVINO使用之行人属性识别
OpenVINO不仅通过其IE组件实现加速推理,其提供的预训练库还支持各种常见的图像检测、分割、对象识别等的计算机视觉任务。前面小编写过一系列的文章详细介绍过OpenVINO的各种应用,可以看这里回顾一下:
OpenCV学堂
2019/07/30
2.6K0
系列 | OpenVINO使用之行人属性识别
教程 | 100行代码搞定实时视频人脸表情识别
好就没有写点OpenCV4 + OpenVINO的应用了,前几天上课重新安装了一下最新OpenVINO2020.3版本,实现了一个基于OpenCV+OpenVINO的Python版本人脸表情识别。100行代码以内,简单好用!
OpenCV学堂
2020/07/08
2.5K0
OpenVINO中两个高分辨率的人脸检测模型
OpenVINO中提供了八个人脸检测的相关模型,其中有两个与剩余的六个是基于不同的对象检测头实现。今天这里就重点介绍一下这两个与众不同的人脸检测预训练模型的使用。 模型说明
OpenCV学堂
2021/11/16
6060
OpenVINO中两个高分辨率的人脸检测模型
OpenVINO + OpenCV实现点头与摇头识别验证
OpenVINO支持头部姿态评估模型,预训练模型为:head-pose-estimation-adas-0001,在三个维度方向实现头部动作识别,它们分别是:
OpenCV学堂
2020/11/06
1.9K0
OpenVINO开发教程之八 – 道路分割
基于OpenVINO预训练模块中的道路分割模型,实现像素级别的图像分割,把像素划分为如下四个类别
OpenCV学堂
2019/06/14
2.9K3
OpenVINO开发教程之八 – 道路分割
亲测有效 | OpenVINO支持ONNX格式文件直接读取了
OpenVINO 2020R04版本支持ONNX格式文件的直接读取了,使用的函数还是跟之前读取IR文件函数保持一致,只是第二个参数缺省为空时候,就会尝试读取ONNX格式文件。相关的函数与参数解释如下:
OpenCV学堂
2020/09/24
4.1K0
亲测有效 | OpenVINO支持ONNX格式文件直接读取了
系列 | OpenVINO视觉加速库使用七
还用介绍吗,直接看下面的系列文章了解OpenVINO是干什么用的,还有如何与OpenCV一起使用,实现对DNN模块的加速运行,OpenVINO SDK开发使用等相关技术。
OpenCV学堂
2019/05/13
3.9K1
系列 | OpenVINO视觉加速库使用七
OpenVINO实时人脸表面3D点云提取
2019出现的一个可以在移动端实时运行的人脸3D表面提取模型-FaceMesh,被很多移动端AR应用作为底层算法实现人脸检测与人脸3D点云生成。相关的论文标题为:
OpenCV学堂
2021/05/07
1.1K0
OpenVINO实时人脸表面3D点云提取
OpenVINO + OpenCV实现车辆检测与道路分割
模型介绍 OpenVINO支持道路分割与车辆检测,预训练模型分别为: - road-segmentation-adas-0001 - vehicle-detection-adas-0002 其中道路分割模型的输出四个分类,格式如下: BG, road, curb, mark, 输出格式[NCHW]=[1x4x512x896] 车辆检测模型基于SSD MobileNetv1实现,输出格式为: NCHW = [1x1xNx7],其中N表示检测到boxes数目 代码演示 01 道路分割模型加载与推理 首先加载道
OpenCV学堂
2020/11/06
1.1K0
OpenVINO + OpenCV实现车辆检测与道路分割
【全流程】从头在树莓派4B上部署自己训练的yolov5模型(配合NCS2加速)
最近这一个月基本没写过博客,因为一直在树莓派4B上部署yolov5的模型,已经数不清楚踩了多少坑了,来来回回折腾了一个月,终于完成了。于是写下这篇博客,一是记录下全部的流程,方便以后其他项目借鉴;二是希望和我一样有类似需求的朋友能少走些弯路。
全栈程序员站长
2022/09/02
7.4K0
OpenCV + OpenVINO实现人脸AR – 请戴上口罩
最近在看我之前的写的一篇关于人脸landmark的文章,里面有提到OpenVINO自带模型人脸的35个点位,有人问我这个landmark检测有什么用,我斗胆抛砖引玉一下,做了个简单的自动戴口罩的AR演示。
OpenCV学堂
2021/11/25
8870
OpenCV + OpenVINO实现人脸AR – 请戴上口罩
场景文字检测模型PixelLink详解与使用….
OpenVINO是英特尔推出基于CPU/GPU新一代视觉加速框架,可以对常见的各种检测模型与分割模型在CPU端侧实现10倍以上加速。其自带预训练模型库支持多种常见视觉感知与识别应用场景,可以快速搭建原型演示程序与极简应用。相关视频教程可以点击下面链接学习:
OpenCV学堂
2019/06/19
1.3K0
场景文字检测模型PixelLink详解与使用….
OpenVINO场景文字检测与识别
OpenVINO提供的场景文字检测模型准确率是非常的高,完全可以达到实用级别,其实OpenVINO还提供了另外一个场景文字识别的模型,总体使用下来的感觉是没有场景文字检测那么靠谱,而且只支持英文字母与数字识别,不支持中文,不得不说是一个小小遗憾,但是对比较干净的文档图像,它的识别准确率还是相当的高,速度也比较快,基本上都在毫秒基本出结果。
OpenCV学堂
2019/06/21
3K1
OpenVINO场景文字检测与识别
OpenVINO中的图象修复模型与示例演示
在OpenVINO的公开模型库中有一个图象修复的模型的,它支持使用mask作为参考,实现对输入的修复。模型来自:
OpenCV学堂
2021/12/29
7540
OpenVINO中的图象修复模型与示例演示
用 OpenVINO 对图像进行分类
今天我们进行我们的第一个 Hello World 项目--用 OpenVINO 对图像进行分类。
IT蜗壳-Tango
2023/12/20
3290
用 OpenVINO 对图像进行分类
轻松学Pytorch – 人脸五点landmark提取网络训练与使用
大家好,本文是轻松学Pytorch系列文章第十篇,本文将介绍如何使用卷积神经网络实现参数回归预测,这个跟之前的分类预测最后softmax层稍有不同,本文将通过卷积神经网络实现一个回归网络预测人脸landmark,这里主要是预测最简单的五点坐标。
OpenCV学堂
2020/06/11
2.5K1
OpenCV + MediaPipe实现眼睛虹膜检测
MediaPipe的人脸landmark提供了468个点位的人脸点云数据,这些数据的编号图示如下:
OpenCV学堂
2021/11/25
2.7K0
OpenCV + MediaPipe实现眼睛虹膜检测
​行为分析:视觉跟踪技术在零售分析中的应用
在零售业中,了解顾客行为对于优化店铺布局、提升顾客体验和增加销售额至关重要。视觉跟踪技术,作为行为分析的一种手段,通过分析摄像头捕获的视频数据,提供了一种自动化和高效的解决方案。本文将深入探讨视觉跟踪技术的原理、在零售分析中的应用案例、面临的挑战以及未来的发展方向。
数字扫地僧
2024/05/07
2420
从Pytorch 的ONNX到OpenVINO中IR中间层
ONNX是一种深度学习权重模型的表示格式,ONNX格式可以让AI开发者在不同框架之间相互转换模型,实现调用上的通用性。当前PyTorch*, Caffe2*, Apache MXNet*, Microsoft Cognitive Toolkit* 、百度飞桨都支持ONNX格式。OpenVINO的模型优化器支持把ONNX格式的模型转换IR中间层文件。
OpenCV学堂
2020/08/11
3.7K0
从Pytorch 的ONNX到OpenVINO中IR中间层
YOLOv5x6模型来了! 同样支持CPU上ONNX部署与推理
说一下是YOLOv5的第五个版本,不是YOLO的第五个版本!是YOLOv5又又改进了!
3D视觉工坊
2021/07/01
2.6K0
YOLOv5x6模型来了! 同样支持CPU上ONNX部署与推理
推荐阅读
相关推荐
系列 | OpenVINO使用之行人属性识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档