Kona_JDK在腾讯大数据领域实践与发展

  • Tencent Kona 缘起 重新认识OpenJDK与Kona
  • OpenJDK技术趋势 Java/JVM正在发生的革命性变化
  • 大数据领域实践与发展 聚焦于大数据领域JVM技术
展开查看详情

1.云+社区技术沙龙

2.Kona JDK在腾讯大数据的实践和发展 杨晓峰(Felix Yang) Tencent Principal Engineer

3.SPEAKER 杨晓峰(Felix Yang) 腾讯专家工程师 • 中国计算机学会(CCF)系统软件专委委员 • OpenJDK Author /Committer (JDK 8及后续项目) • 曾领导Oracle Java Core Libraries北京团队、京东数据基础平台 智能系统研发团队等,并曾就职于IBM CDL • 专注于编程语言在大数据和云计算等前沿领域演进与实践

4.日程 01 Tencent Kona 缘起 重新认识OpenJDK与Kona 02 OpenJDK技术趋势 Java/JVM正在发生的革命性变化 03 大数据领域实践与发展 聚焦于大数据领域JVM技术

5.OpenJDK编年史 OpenJDK是Java SE的免费和开源参考实现 2006 2010 2014 2017 2019 Sun 开源 Oracle收购Sun JDK 8发布 JDK 9发布和半年周期 Tencent Kona开源 发布模式 Sun承诺逐步开源核心 Oracle接过Stewardship。 采纳速度最快和接受程度 Jigsaw - Java Platform Java经历了“收费”风波, Java Platform,包括 IBM加入,放弃Harmony。 最高的版本,至今仍是生 Module System 事实上,社区的活跃度和参 hotspot、Complier和 Apple加入OpenJDK。 产环境的主力! 从特性驱动转变为时间驱动 与度大大提高。 类库等; 的发布模式。 腾讯和微软加入社区! 第二年,Redhat加入, Oracle JDK开源商业特性并 并发布IcedTea 变更收费策略。

6.JDK产品演进 JDK 8 JDK 11 Oracle JDK JMC Oracle JDK/OpenJDK OpenJDK JFR JavaFX JFR ZGC… JMC JavaFX

7.Tencent Kona • 免费 • 长期支持(Long-Term Support) • 生产环境就绪,经过腾讯云和内部超大规模的生产环境考验 • GitHub https://github.com/Tencent/TencentKona-8

8.Kona原则与特质 • “Friendly-Fork” • 最大化兼容性 • 逐步贡献大数据、云计算等领域先进特性 拥抱开源,持续贡献社区,不做开源食利者

9.日程 01 Tencent Kona 缘起 重新认识OpenJDK与Kona 02 OpenJDK技术趋势 Java/JVM领域正在发生的革命性变化 03 大数据领域实践与发展 聚焦于大数据领域JVM技术

10.Trends in OpenJDK By John Rose, JVM Architect, Oracle 1. Java hosts more of itself – Metropolis 2. Primitives get classier – Valhalla value types & generics 3. Language support gets richer – Amber / Valhalla 4. Hardware access gets faster – Panama 5. Concurrency gets more granular – Loom 6. Scale gets bigger (...more scalier?) – Shenandoah, ZGC

11. 国内领域现状和趋势 • JDK产品 - Oracle JDK 70% - OpenJDK 21%,快速崛起中 • 版本 - JDK 7/8为主 - JDK 11/GraalVM 进入视野 详情见:https://www.infoq.cn/article/WomHORGulYaYEDYwoiP8

12.日程 01 Tencent Kona 缘起 重新认识OpenJDK与Kona 02 OpenJDK技术趋势 Java/JVM领域正在发生的革命性变化 03 大数据领域实践与发展 聚焦于大数据领域JVM技术

13.JVM是大数据领域的无冕之王 • 高生产力的语言(Java/Scala…) • 跨平台、高性能、高可靠性 • 完善的工具 • 海量的类库、框架

14.“强项往往也是我们的弱点” • GC能力已经是前沿场景的瓶颈 • 集群规模 JVM堆大小 + GC可靠性 直接影响 • SLA • 内存密度

15.State-of-Arts GC不是为大数据负载设计 实际上~ 目前GC算法的设计是假设: • 大数据负载中 ,常常充斥着: - 大对象甚至巨型对象分配 - 长生命周期 • 产品为此往往不得不费力操作堆外内存 • 新的Pauseless GC也不是“银弹”

16.GC自适应机制仍有待提高 • 超大堆的副作用

17.内存密度+可靠性 • 大数据负载内存分配局限性

18.大数据负载“特有”OOM举例 • 连续GC locker触发YGC • OOM之前无FGC

19.原因:非常规内存分配 + 特定应用 时间线 Thread A Thread B → GC Locker (lock-in) → Slow Path Allocation → clean nothing but no lock-out … → fail to enter FGC because of Thread A lock-in → Then give up after GCLockerRetryAllocationCount → OOME here Lock out -- but too late

20.JVM既是算力的保证,也是某种程度的短板! • Big Data relies on Data Parallelism - Machines “Free Lunch is Over!” - CPU Cores - Instructions

21.Vectorization/SIMD • 宽寄存器和指令

22.从代码层面分析JVM优化

23.但远没有那么乐观 • 基于JNI/Intrinsic开发难度大,难以维护 → 往往不是好的选择 • Auto-Vectorization机制脆弱 - Only C2 SupperWord Optimization - Only with unrolled loops - Only counted loops VS

24.Vector API • 仍处于实验性阶段 • 生产价值突出 → 高性能 +高开发效率

25.Profiling In Big Data • Java Flight Recorder - Oracle开源,社区移植 - 全栈能力 - 超低开销 • 我们将分享如何在大规模分布式负载进行Profiling的实践

26.补齐大堆内存诊断能力短板 • 在大堆场景,传统Heap Dump诊断非常吃力 - Dump和分析几十G以上的堆都不容易 - 我们和业界一起改进Jmap等svc tools 甚至不用Dump? • 基于Old Object Sampling等技术,提供更低成本定位的内存泄漏诊断实践

27.JVM层系统性克服 “Big Data Tax” • Memory(Object) Allocation • Serialization/De-Serialization • Read/Persistence • Schedule • …

28.T HANKS 关注云加社区公众号