如何进行基于Anolis OS的企业级Java应用规模化实践?|龙蜥技术

简介:提供了7×24小时的专属钉钉或者电话支持,响应时间保证到在业务不可用情况下10分钟响应,业务一般的问题在一小时可以获得响应,主要城市可以两小时内得到到达现场的服务。

本文作者郁磊,是Java语言与虚拟机SIG负责人。整理自云栖大会龙蜥专场论坛的技术分享,云栖系列视频已经上线,欢迎观看:云栖大会龙蜥专场论坛

Alibaba Dragonwell 是一款 OpenJDK 的发行版。OpenAnolis 是企业级的操作系统,企业级操作系统必然包含企业级应用的运行时。众所周知,红帽的 CentOS 发行版里面其实有红帽自己做的 JDK 发行版,这既是他们对自己运行时技术可控的自信,也是对用户负责,比如说 OpenJDK 出现任何问题,他们可以在发行版上做改动,去帮助用户解决问题。

Java企业应用

image.png

Java 一直是企业级最佳的选择,其中有很多原因,目前云原生环境下,它有非常成熟的容器化方案,有 Spring boot 这样的框架来帮助我们把应用打包成一个非常适合容器运行的模式。也有很多分布式的中间件,比如说 Spring cloud,可以帮助我们构造分布式应用。Java也有非常好的规范以及开源生态,但 Oracle 虽然控制着 Java,同时也推进着Java标准往前演进,标准使得语言一直是可以控制的方向发展,非常适合开发企业级应用。里面有非常繁荣的生态,比如 Maven 可以帮助开发者快速获得开发依赖,还有Netty、Tomcat、Spring。虽然 Spring 可以看做是挑战 Jakarta EE的角色,但是它本身也受到 Java 的很多影响,因此可以说是Jakarta EE也在帮助Spring发展。

高效,运行时的高效和开发时的高效。运行时的高效体现在 Java 的执行速度,一个数据是 Java 的运行效率可以排在各大编程语言第四,效率可以达到 C 语言的二分之一,这在高级语言里非常难得的。

最后是行业实践,在互联网金融等行业里大规模使用 Java。

image.png

大家认为硬件+操作系统+应用就构成整个应用,其实运行时对于应用的运行影响是非常大的,通过一个例子解释。

这是我们在企业客户里遇到的一个问题,在 Java 运行时开始很好,经过一天以后性能就变成 1/2,越来越慢,只能选取变慢的实例重启,他能做的就是把变慢的实例直接重启或者是扩容,因为变慢后需要更多的机器支撑容量。但这并不解决问题,因为变慢这个行为持续在发生。

最后排查出是 JIT 相关问题, Java应用有 JIT 编译器,也有解释模式,我可以给大家一个数字,编译模式要比解释模式快 50 倍左右,所以有部分代码执行在解释模式的话,影响非常大,假如有 2% 的代码在解释器模式,则整个应用一半的时间在执行解释器,一半的时间在执行编译器,性能下降一倍。假如说一半的代码退到解释器,那应用就会慢 25 倍左右,所以运行时对应用有深远影响。

image.png

阿里巴巴 Dragonwell 和 Eclipse Temurin 都是 OpenJDK 的开源发行版本,为什么近年来除了谷歌以外所有的头部云厂商都推出了自己的发行版。自 OpenJDK9 开始,每半年发布一个版本,这个版本只会维护一年,比如说 OpenJDK 从 2018 年 3 月开始维护到 2019 年 3 月,中间只有一年的维护时间,选取这样的策略是因为 OpenJDK9 引入了很多新的特性,比如说模块化,对开发进程影响非常大,所以选取了这样一种滚动升级策略。

假如我们的用户想去使用最新的JDK,那他必须接受滚动升级。比如说现在Java已经到了17了,五年后Java会到达27的版本,这样的升级频率肯定是接受不了的。假设Java用户停留在老版本是不是可以避免这种滚动升级?实际也不行, Java远程执行漏洞非常多,我们可以通过序列化构造一些远程代码执行的例子,这是非常可怕的。各个云厂商都提供了自己的OpenJDK发行版,想获得Oracle也是可以的,是收费的。

image.png

阿里巴巴Dragonwell就是在这种背景下产生出了Java运行时,我们完全依托开源社区建设,我们参与了非常多国际上的高质量社区,现在也加入了龙蜥社区,其中包括Java的JCP-EC,阿里巴巴是国内唯一一个加入EC席位的企业(EC的全称是执行委员会)。

Alibaba Dragonwell是在OpenJDK的基础上增加了一些自己的功能,构成了阿里巴巴Dragonwell发行版本。我们会发布稳定的发行版本,并且提供定期的安全补丁,质量体系接轨国际,基于Adoptium的CI,Adoptium组织由各个JDK的头部厂商维护,包括微软、IBM都参与其中。经过测试以后,我们会在阿里巴巴线上验证;SVT系统验证,会用spring等常用框架进行验证我们的JDK。我们也支持多平台,比如Linux、windows;RISC-V架构的支持也已经提上日程。

image.png

和Java企业计算相关的另外一个发行版是Eclipse Temurin,它源自AdoptOpenJDK。AdoptOpenJDK是怎么来的?可以看到前面的Oracle发布策略,大家使用OpenJDK会越来越困难,所以伦敦的Java User Group创建AdoptOpenJDK项目,让OpenJDK可以方便地被用户使用。该项目编译OpenJDK的source code,经过aqa-tests才会release出来,可以说是原汁原味的OpenJDK。和Alibaba Dragonwell的差异是:上一页有一块Dragonwell补丁,而Temurin是原汁原味的OpenJDK。

Aqa-tests包括性能测试,OpenJDK自带测试。其中的system测试会验证Java的模块化系统,Java的自带工具等。后面是external,包括Java生态里面常见的一些软件,像scala、kafka。最后是标准的JCK,Oracle所颁布的一个标准,只要JDK发行版跑过验证就是标准的JDK。

很多传统企业用户不需要阿里巴巴Dragonwell里面为云或者互联网设计的功能,他可以选择Eclipse Temurin发行版。

image.png

让我们看看使用这两个发行版企业可以获得什么。

  1. 安全特性,Java的TSL能力是通过JSSE接口使用的,Eclipse Temurin和Alibaba Dragonwell的JSSE能力都会经过验证,这对企业用户是非常重要的
  2. 兼容性,Dragonwell基于OpenJDK而Temurin是原汁原味的OpenJDK,从OracleJDK迁移到OpenJDK可以保证兼容性。
  3. Java生态的集成验证
  4. 定期安全补丁,Alibaba Dragonwell或者Eclipse Temurin,这两个发行版是完全以完全开源的形式运作的。我们会以每三个月一次的固定发行周期提供订阅支持。

Alibaba Dragonwell上有很多阿里巴巴自己扩展的云原生特性,通过这些特性我们可以轻易的排查问题或者轻易的减少资源使用,或者是降低总体成本,这是Eclipse Temurin和OracleJDK所没有的。

image.png

基于这两个JDK发行版本我们提供了企业服务体系。如果企业用户从OracleJDK某个版本迁移过来,首先面临的问题是迁移。Java的版本迁移不像GO或者其他语言那样轻松,比如JDK8迁移到11或者17,都有很大的迁移工作量。我们提供迁移了工具,并积累了许多迁移经验文档给到企业去迁移到Eclipse Temurin或者Alibaba Dragonwell。

Java由于庞大的类库会隐含很多的安全问题。如果选择订阅了Alibaba Dragonwell企业支持服务,会获得每三个月的推送,对于一些重大更新我们会进行评估,是否是重要更新,是否要升级,升级计划是什么。

应急支撑体系是IT企业的日常需求,在Java使用中只要上了规模都会有无法预期的问题。这里我们提供了7×24小时的专属钉钉或者电话支持,响应时间保证到在业务不可用情况下10分钟响应,业务一般的问题在一小时可以获得响应,主要城市可以两小时内得到到达现场的服务。

image.png

我们结合之前的案例来看,用户通过我们的服务能获得怎样的体验。首先用户发现并报告了问题,由于北京是主要城市,两小时内可以到达现场。随后我们帮助用户保存现场,分析问题,定位问题,最后交付服务。

代码空间满导致代码部分解释执行,从而性能变差,但代码空间满依旧不是根因。一步步深入定位,分析出原因: 因为用户从低版本JDK升上来,低版本JDK的代码回收功能是有问题的,因此用户禁用了代码空间的回收功能。随着应用持续运行,编译代码越来越多,如果开启了代码空间的回收,失效代码是可以被Java虚拟机回收的。但是用户关闭了代码空间回收,最终导致代码空间满。Hotspot虚拟机在代码空间满时策略是禁止JIT编译。

确认问题后帮助用户在少量机器上验证,确认修复完成后交付服务,书面给与用户确认。

image.png

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据的下一站 DataOps,智领云发布纯 K8s 云原生数据平台 BDOS Online

最近几年,业界对数据中台的追捧度像坐过山车从高点走低,但在数字化和业务创新驱动下,对数据管理与分析的热度在今年不降反升。 以往搭建一套 Hadoop 大数据平台,技术团队重点要搞定数据的采集、存储、处理和数仓的设计搭建等复杂动…

“全”事件触发:阿里云函数计算与事件总线产品完成全面深度集成

简介:目前,函数计算已具备接入EventBridge所有事件源的触发能力,实现触达阿里云全系产品服务的“最后一公里”。 作者:史明伟(世如)阿里云高级技术专家 随着云原生技术的普及和落地,企业在构建…

开源 Serverless 里程碑:Knative 1.0 来了

简介:近期Knative发布了1.0版本,达到了一个重要的里程碑。Knative自2018年7月首次发布以来, 版本不断的迭代发展,除了无数的错误修复、稳定性和性能增强之外,按时间顺序还进行了一些改进,下文将进行简单介绍。 作者&a…

勒索软件攻击层出不穷,企业如何做好数据保护?

近日,“搜狐员工遭遇工资补助诈骗”事件引起广泛热议:搜狐员工收到一封来自“搜狐财务部”名为《5月份员工工资补助通知》的邮件,员工按照邮件要求扫码,填写银行账号等信息后,大家并没有等到“补助”,并且工…

以一致的体验交付和管理云原生多集群应用

简介:本次文章将首先介绍云原生应用交付和管理的挑战,然后介绍这背后的 KubeVela 和 OCM 技术原理,最后是整体的最佳实践,以及一个完整的 Demo。 作者:冯泳,孙健波 大家好,很高兴能在 KubeCon…

阿里云低代码音视频工厂正式上线,为企业用户提供音视频开发最短路径

简介:阿里云低代码音视频工厂正式上线,极大程度降低音视频开发门槛,打破传统音视频开发壁垒,全新定义音视频应用开发。 1月5日,阿里云低代码音视频工厂正式上线,极大程度降低音视频开发门槛,打…

网络的现代化建设如何进行?详解 Aruba 平台重要特性

作者 | 宋慧 出品 | CSDN 云计算 5G 和 IoT 的快速发展,以及新商业环境的挑战下,网络也在进入新的发展阶段。 商业竞争变化,企业纷纷采取数字化转型以提升创新性和效率。另外,疫情之后,混合办公模式的普及和常态化后&…

阿里云刘强:无影云电脑构建云上安全办公室

简介:无影云电脑提供触手可及的算力,在云办公、外企办公、分支机构办公、软件开发、人力外包等场景构建云上安全办公室。 2021年12月21日,阿里云弹性计算年度峰会在上海正式举行,并通过全实景进行直播。峰会上,阿里云…

掘地三尺搞定 Redis 与 MySQL 数据一致性问题

‍作者 | 就是码哥呀来源 | 码哥字节Redis 拥有高性能的数据读写功能,被我们广泛用在缓存场景,一是能提高业务系统的性能,二是为数据库抵挡了高并发的流量请求。把 Redis 作为缓存组件,需要防止出现以下的一些问题,否则…

如何在golang代码里面解析容器镜像

简介:容器镜像在我们日常的开发工作中占据着极其重要的位置。通常情况下我们是将应用程序打包到容器镜像并上传到镜像仓库中,在生产环境将其拉取下来。然后用 docker/containerd 等容器运行时将镜像启动,开始执行应用。但是对于一些运维平台来…

Alibaba Cloud Toolkit 中SLS插件助力线上服务问题排查

简介:Alibaba Cloud Toolkit 是一款非常优秀的插件,新增SLS日志服务的功能,针对软件开发者日常工作中常见的问题排查场景,将日志服务平台的功能集成到ide当中,省去了不同窗口之间来回切换的时间,大大提高了…

别等被偷家了,再说数据安全~

在数字经济和技术生态高质量发展的今天,企业对前沿技术和高质量人才的需求不断升级。为了帮助更多开发者、企业洞察行业趋势、技术热点,CSDN 重磅打造技术访谈金牌栏目《架构师说》,聚焦数字化转型、云原生、数据库、开源技术、人工智能、出海…

iLogtail使用入门-K8S环境日志采集到SLS

​简介:iLogtail是阿里云中简单日志服务又名“SLS”的采集部分。 它用于收集遥测数据,例如日志、跟踪和指标,目前已经正式开源(https://github.com/alibaba/ilogtail)。本文通过介绍ilogtail如何在K8S环境进行安装、配置、使用的最简流程&…

java并发condition_Java并发之Condition的实现分析

一、Condition的概念介绍回忆 synchronized 关键字,它配合 Object 的 wait()、notify() 系列方法可以实现等待/通知模式。对于 Lock,通过 Condition 也可以实现等待/通知模式。Condition 是一个接口。Condition 接口的实现类是 Lock(AQS)中的 ConditionO…

【新功能】开放搜索多路召回技术解读

简介:多路召回就是指采用不同的策略、特征或者简单模型,分别召回一部分候选集,然后再把这些候选集混合在一起后供后续排序模型使用的策略,本文将介绍开放搜索平台上的多路召回技术是如何深度提升搜索效果的。 背景 所谓的“多路…

CCO x Hologres:实时数仓高可用架构再次升级,双11大规模落地

简介:本文将会介绍今年是如何在去年基础上进行实时数仓高可用架构升级,并成功大规模落地双11。 作者 | 梅酱 来源 | 阿里技术公众号 一 2021年双11总结 2021年阿里巴巴双11期间,由CCOHologres构建的高可用实时数仓经过2年的迭代&#xff0…

MLPerf世界纪录技术分享:通过模型压缩优化取得最佳性能

作者 | 刘姝 供稿 | 浪潮 MLPerf竞赛由图灵奖得主大卫帕特森(David Patterson)联合谷歌、斯坦福、哈佛大学等单位共同成立,是国际上最有影响力的人工智能基准测试之一。在MLPerf V0.7推理竞赛开放赛道中,浪潮信息通过模型压缩优…

Serverless 应用优化四则秘诀

简介:Serverless 架构下,虽然我们更多精力是关注我们的业务代码,但是实际上对于一些配置和成本也是需要进行关注的,并且在必要的时候,还需要根据配置与成本进行对我们的 Serverless 应用进行配置优化和代码优化。 Ser…

懵了,构建一个 Docker 镜像花 60 分钟?如何提高效率?

作者 | Andy来源 | 进击云原生最近,有一个需求:向镜像构建管道添加一个参数,以允许用户在构建时配置超时时间。我们计划在构建时配置 10 分钟的默认超时,并且允许用户覆盖此配置,因为他们的某些镜像构建需要长达 60 分…

java实现短信上行源码_Java 发送短信验证码 示例源码

【实例简介】执行前请先设置修改 src/test.java 文件//用户名private static String Uid "uid";//接口安全秘钥(不是登录密码)private static String Key "key";//手机号码,多个号码如13800000000,13800000001,13800000002private static Str…