Kona JDK在腾讯大数据领域的实践与发展

发布于:2024-10-24 编辑:匿名 来源:网络

简介|近日,腾讯云开发者社区技术沙龙“腾讯开源技术”圆满结束。本次沙龙邀请了多位腾讯技术专家,深度揭秘腾讯开源项目TencentOS tiny、TubeMQ、Kona JDK、TARS和MedicalNet。

本文是杨晓峰老师对腾讯基于OpenJDK自主开发的Kona JDK开源项目的详细介绍。一、腾讯科纳的由来 1、OpenJDK 我经常听到人们谈论OpenJDK,那么它到底是什么呢?相信大家都听说过Java SE、ME、EE等规范。

通常意义上,Open JDK 的定义是指:Java SE 规范的免费开源参考实现。早在2008年,Sun就承诺逐步开源核心Java平台,包括热点、编译器和类库;第二年,Redhat加入并发布了IcedTea,这是一个完全基于GNU自由软件构建的版本。

2007年发生了非常大的变化,甲骨文从Sun手中接过了管理权,IBM加入又放弃了Apache Harmony,苹果也加入了OpenJDK。 2017年,JDK 8发布。

它是迄今为止采用最快、最受接受的版本,并且仍然是当今生产环境的主力。今年的行业调查统计显示,JDK8仍然是几乎所有厂商最重要的JDK生产版本。

2016年,经过三年的研发,JAVA 9发布了。今年发生了一系列令人眼花缭乱的变化。

首先,从技术角度来说,JDK引入了一个原生的模块化系统,这就是Jigsaw项目——JPMS(Java Platform Module System)。 JPMS 为 Java 语言和 JDK 未来的快速发展扫除了一些障碍,但也带来了一些兼容性问题,即 JDK 9 并没有像预期那样成为 JDK 8 的广泛替代品。

其次,Java从功能驱动的发布模式转变为时间驱动的发布模式。这是由于云计算等领域的快速发展,给Java带来了巨大的挑战。

传统的发布模型理想的发布周期是两年左右,但我们将 JDK 9 的实际开发又推迟了一年左右。即便如此,仍有一些计划任务没有完成。

漫长的开发周期导致大量现成的技术一直无法进入生产阶段,这大大降低了Java开发和迭代的速度。为了适应这种变化,JDK改用了半年周期的新发布模式。

第三,Oracle JDK的开源商业特性以及Oracle JDK收费政策的变化,大大缩短了JDK的免费支持周期。值得欣慰的是,虽然Java经历了“冲锋”风波,但事实上,如今OpenJDK社区的活跃度和参与度已经有了很大的提升。

腾讯、微软等厂商纷纷加入社区,开始积极为OpenJDK做出贡献。 2. Oracle JDK Oracle JDK 和 OpenJDK 之间有什么关系?简单比较一下,Oracle JDK 8 可以被认为是 OpenJDK 的超集,包括它自己的商业功能。

但发展到JDK11之后,整个JDK产品形态发生了很大的变化。从一个大型的单体应用中,已经进行了一定程度的解耦。

JMC、OpenJFX等以软件包的形式独立于JDK。 Oracle 也将其商业功能开源,因此 Oracle JDK 11 和 OpenJDK 11 之间的唯一区别是许可证。

3、腾讯Kona JDK 腾讯Kona JDK是基于OpenJDK主分支开发的JDK发行版,并遵循以下基本原则。首先,它是免费的,每个人都可以放心使用。

其次,我们将为JDK8、JDK11等LTS版本提供长期可靠的支持。第三,Kona JDK经过腾讯大规模负载验证,确保生产环境就绪。

那么,腾讯Kona和Open JDK是什么关系呢?有哪些优势和发展思路?首先,我们承诺 Kona 是一个“friend-Fork”,并将最大限度地提高 Kona 兼容性。 Kona 团队与大量内部 JDK 用户和合作伙伴团队进行了广泛的沟通,以提供高标准的兼容性、稳定性、可靠性和性能。

Kona JDK不会为了创新而创新,因为损害JDK兼容性实际上是对企业技术投入的不负责任,也会给用户带来未来的生产迁移和维护成本。另外,基于腾讯海量大数据、云等Java/JVM工作负载,我们会分享我们在如此大规模场景下的实践经验和技术积累,并以Bugfix的形式逐步开源给大家使用,增强或功能。

从社区参与的角度,我们与Open JDK社区和Oracle Java产品团队进行了沟通,并且在整个社区沟通邮件中明确了上述原则,并且我们必须严格遵循社区的治理标准,不能成为食利者。2、OpenJDK技术趋势回到OpenJDK本身,现在有哪些主要趋势值得关注?这里引用 John Rose(Oracle JVM 架构师)的总结。

1、Java-on-JavaJava-on-Java是指用Java语言开发JVM虚拟机。例如,目前的C1/C2 JIT(Just-In-Time)编译器主要是用C++开发的,代码已经很难改进。

Oracle在GraalVM等项目中逐渐实现了基于Java的JVM虚拟机,其技术将逐渐成为未来JVM的核心。目前它还处于实验阶段,但已经显示出非常令人印象深刻的结果。

例如,使用其原生机器和 SubstrateVM,在启动速度和内存占用方面可以有非常突破性的改进,即使是简单的程序也可以看到 30 倍的提升。虽然这是基于 Close-World-Asmination 的,但对 Java 的动态特性有一些权衡,离广泛实践还有一段距离,但未来是有希望的。

2.偿还一些Java语言或JVM设计和实现所欠下的债务。在Java设计中,除了原始数据类型之外,其他都是对象。

对象头和多态支持的开销是显而易见的,并且这些通常是数据的开销,而不是数据本身的要求。同时,复杂的引用关系给内存布局带来了复杂性,难以充分利用现代CPU的缓存结构。

Java语言也很难高效、优雅地表达一些复杂的数据结构和范式。这些问题将在 Valhalla 等项目中得到解决。

3、Java语法的变化Java语法在Amber/Valhalla等项目中逐渐演变,提高了代码开发的效率和代码质量。例如,JAVA 10中提供的局部变量类型推断通过上下文推断简化了代码编写并提高了代码可读性。

目前处于预览阶段的后续Switch Expression,使用表达式代替语句,大大提高了语言表达能力、开发效率和良好实践。 4. 提高了硬件级别的操作能力。

OpenJDK可以更快、更直接地操作硬件级别。主要用于巴拿马等项目的开发。

比如为大数据和机器学习提供算力支持,提供更好的本地代码交互能力,向量计算能力等。当然还有Project Loom,提高了并发编程和运行效率,引入了Fiber/Continuation解决当前Java并发开发/运行效率问题。

还有万众期待的Pauseless GC等,总的来说,JVM正在变得更加智能和高效。 3、大数据领域的实践与发展众所周知,主流的大数据技术栈要么基于Java,要么运行在JVM上。

Java和JVM提供的易于使用的语法、跨平台能力、丰富的工具、类库等,使得JVM成为大数据领域无冕之王。目前,几乎没有同等的竞争对手。

然而,当我们实际开发和维护超大规模集群、处理海量数据时,JVM逐渐出现了一些局限性。例如,在主流的Hadoop技术栈中,NM等节点的堆大小直接影响集群和数据规模,而GC稳定性与SLA密切相关。

目前,JVM在大堆GC方面还远未完善,需要进一步改进。从大数据负载特性来看,经典GC算法具有一定的水土不服程度。

我们知道,目前的设计是基于“大多数物体都是小而短命”的实践经验。然而,在 Spark SQL 等大数据负载中,我们经常会看到大量长期存在的大对象,甚至非常大的对象分配。

。大对象的分配和初始化是昂贵的,并且在G1 GC等基于Region的设计中,达到或超过Region大小50%的对象将占用一个或多个分区,剩余的空间被浪费,这限制了宝贵的内存。

资源利用效率。从大数据的业务特点来看,JVM机制也需要有针对性的修改和完善。

比如相当于一步的大数据服务,都是定时离线计算。在一天中的不同时间,应用程序行为变化很大,当前 JVM 的自适应特性出现水土不服的情况并不少见。

G1 GC预测引擎不断预测故障导致的长时间GC暂停有时会损害SLA,因此有针对性的改进至关重要。由于上述限制,很多大数据框架不得不努力在堆外进行操作,这就带来了研发和运维的效率问题。

我们在生产实践中注意到,在大数据应用中,JNI进入临界区,GC Locker触发频繁无意义的Young GC,结合大对象分配会导致JVM意外OOM。这个问题在大数据场景中更为常见。

具体可以参考下图。另外,无论是大数据还是机器学习,都离不开一个核心,那就是计算能力。

大数据依赖于机器(集群)、线程(多核)和指令(SIMD)三个层面的数据并行计算。大概过了年后,CPU Core的频率基本没有明显提升,甚至出现下降。

生产工作负载的可扩展性越来越依赖于堆CPU和堆机器。分布式集群和多线程必不可少,但JVM层面指令级的优化还没有得到足够的重视。

充分利用指令并行性是计算能力的保证之一。JVM矢??量化/SIMD通常有三种方式:一是JNI直接使用原生代码,但由于CPU的可变性等原因,开发和维护非常困难。

其次,对于普通开发者来说,自己开发JVM Intrinsic也并非不现实。第三,使用JVM提供的Auto-Vectorization能力更加可行。

然而,自动矢量化功能也有很多限制。目前,SupperWord Optimization仅在C2中提供。

它依赖于Counted Loop的Loop Unrolling,开发难度大且比较脆弱。目前,OpenJDK孵化中的Vector API可以极大地提高开发效率,从而提高性能。

未来,我们将积极推动其发展和成熟。在大数据场景的诊断和调优方面,Kona内部集成的Java Flight Recorder(Oracle开源)提供了生产环境可用的全栈JVM Profiling能力,并且提供了无需Heap Dump即可诊断内存泄漏的可能,适合海量分布对于集群、频繁的大/超大型堆等大数据场景非常有帮助。

它还帮助我们进一步了解大数据加载整体的一般开销,例如序列化/反序列化、内存(对象)分配等。我们将与社区合作增强 jmap 等 SVC 工具,优化一般开销,并回馈社会并与社区分享我们的经验。

4.问答:杨老师,我想问一下腾讯云目前的Open JDK和Kona JDK有什么区别?这样做有什么好处呢? A:Kona JDK基于Open JDK的主分支,并根据微服务、Serverless、大数据等大量实际应用场景的需求和痛点进行改进。目标是提供最佳的Java运行环境和相应场景的解决方案。

Kona JDK 将尽力上游功能,以最大限度地发挥 Java 生态系统的优势。在选择功能时,会充分考虑兼容性、成熟度和生产价值,强调为用户带来真正的效率和生产力。

如果确实有个别功能或 bug 修复不符合主分支上游的通用标准、工作思路等,只要具有重大生产意义,Kona 仍然可能会选择提供。笔者认为,从Java生态健康的角度来看,Kona JDK的意义和目的不是差异化,而是提供长期可靠的支持,加速OpenJDK新功能的产生,增强Java在各领域的基础实力例如数据科学和云计算。

讲师介绍了腾讯高级技术专家、中国计算机学会(CCF)系统软件委员会委员杨晓峰。他目前负责 TEG JDK 团队和 OpenJDK Committer。

曾领导Oracle Java平台北京核心类库团队、京东数据基础平台智能系统研发团队。发表专栏《Java核心技术36讲》,关注Java/JVM等基础软件在大数据、云计算等前沿领域的演进与实践。

Kona JDK在腾讯大数据领域的实践与发展

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 内向基金完成首轮募资

    内向基金完成首轮募资

    据投资界8月27日消息,内向基金(洞察基金)正式完成首期基金首轮超亿元募资,目标规模2亿元,将重点关注消费升级领域的股权投资。 据了解,引进基金是与新经济精品投行“穆棉资本”联合设立的私募股权投资基金。 它是由孙婷婷和Stefanie应金峰共同创立的。 两人在风险投资行

    06-17

  • 东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! |远景家族 远景资本 远景资本 远景资本 微信 IDvisionpluscapital 关于专题 远景资本公众平台汇聚创新趋势,以分享启发 01-25 17:12发布于浙江 近日,东方空间完成近6亿元B轮融资,本轮投资被梁溪科技创新产业

    06-18

  • 晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    合肥市人民政府 据合肥市人民政府消息,5月5日,合肥市晶和集成电路股份有限公司在上海证券交易所上市。 成功登陆科创板,成为安徽省首家成功登陆资本市场的纯晶圆代工企业。 本次发行价格为19.86元。 超额配售选择权全额行使后,募集资金5500万元,在科创板上市公司融资规模

    06-06

  • 专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    投资界(ID:pedaily)5月29日消息,国内质子交换膜电解槽核心材料及器件提供商合肥动量守恒绿色动力节能股份有限公司(以下简称“动力节能”)近日正式完成领投方数千万元天使轮融资。 本次完成交割的天使轮领投方为当看同创资本,元和资本担任天使轮融资独家投资方。 本轮融

    06-18

  • 工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    投资界4月26日消息,近日,“新基建”全栈工业互联网产品提供商“退风科技完成5亿元B轮融资。 本轮融资由中金传输基金、深创投、交银国际、越秀金控联合领投,招商致远、青控招商、云启资本、亿唐宏图集成电路及互联网投资基金跟投老股东继续投资。 据悉,德丰科技在10个月内

    06-18

  • 2021年以来新设立基金规模已达5332.79亿元

    2021年以来新设立基金规模已达5332.79亿元

    Wind数据显示,截至2月3日,年初以来累计设立基金,发行规模7900万元。 其中,仅1月份就成立了一只基金,发行规模达4000万元,是继今年7月之后历史上第二高的单月发行规模。

    06-18

  • 登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    投资界(ID:pedaily)4月24日消息,合肥登特菲医疗器械有限公司近日公告完成数千万元Pre-A轮融资。 本轮融资由海恒资本、宏博资本、创谷资本、合肥天使投资基金共同投资。 本轮融资完成后,登特菲将继续加大智能高端口腔医疗设备的创新研发,加大量产线建设,加速产品迭代和

    06-17

  • 安好时代:APP上线100天内用户数达数十万

    安好时代:APP上线100天内用户数达数十万

    2019年6月6日,北京安好时代科技发展有限公司发布了公司首款移动产品——安好APP,目前活跃用户量已达45万。 据悉,安好时代整合了大量医疗资源,打造了一支由数十名专职医生组成的团队。 不少医生入驻安好医生平台,开设个人诊所。 2019年6月28日,安好联合中国老年保健协会

    06-17

  • AI工具库详细介绍——Midjourney

    AI工具库详细介绍——Midjourney

    Midjourney是一款基于AI的图像生成工具,专注于通过文字描述创建高质量的视觉内容。 主要功能: 1.图像生成:Midjourney接受用户通过文字输入的描述,并将这些描述转换为详细的图片。 用户可以指定样式、主题、颜色和其他元素。 2.风格模仿:该工具能够模仿艺术家已知作品的各

    06-17

  • 长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    2018年,全球宏观经济和各类资产的表现大幅超出市场年初的悲观预期。 它已经悄然到来。 新的一年,投资者可能面临全球经济、政策和政治环境的哪些变化?如何调整投资策略应对风险并实现资产增值?    据投资界1月10日消息,宜信财富正式发布《年资产配置策略指引》(以下简

    06-18

  • 罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    “罗哥,坚果没了”。 “嗯,是好事。 ”近日,字节跳动宣布暂停手机业务,原锤子科技团队成立的新石实验室,并入教育硬件团队。 业务方面,合并后的硬件团队将专注于教育领域,不再开发坚果手机、TNT显示器等其他无关产品。 坚果手机补充称,售后和系统维护将继续进行,手机

    06-17

  • 东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    阿维塔11单电机版纯电动SUV介绍华为官宣M5高端智能手机驱动版氪倡议:联合抵制网络水军。 比亚迪即将推出“云柴系统”,疑似与底盘有关。 比亚迪新专利:可通过静脉识别解锁车辆理想ONE突然断电,售后服务需要保密协议。 阿维塔11单电机纯电动SUV今日发布。 在晚间的新品发布

    06-21