热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

简介:提供了7×24小时的专属钉钉或者电话反对,响应工夫保障到在业务不可用状况下10分钟响应,业务个别的问题在一小时能够取得响应,次要城市能够两小时内失去达到现场的服务。

简介:提供了7×24小时的专属钉钉或者电话反对,响应工夫保障到在业务不可用状况下10分钟响应,业务个别的问题在一小时能够取得响应,次要城市能够两小时内失去达到现场的服务。

本文作者郁磊,是Java语言与虚拟机SIG负责人。整顿自云栖大会龙蜥专场论坛的技术分享。

Alibaba Dragonwell 是一款 OpenJDK 的发行版。OpenAnolis 是企业级的操作系统,企业级操作系统必然蕴含企业级利用的运行时。家喻户晓,红帽的 CentOS 发行版外面其实有红帽本人做的 JDK 发行版,这既是他们对本人运行时技术可控的自信,也是对用户负责,比如说 OpenJDK 呈现任何问题,他们能够在发行版上做改变,去帮忙用户解决问题。

Java企业应用

Java 始终是企业级最佳的抉择,其中有很多起因,目前云原生环境下,它有十分成熟的容器化计划,有 Spring boot 这样的框架来帮忙咱们把利用打包成一个非常适合容器运行的模式。也有很多分布式的中间件,比如说 Spring cloud,能够帮忙咱们结构分布式应用。Java也有十分好的标准以及开源生态,但 Oracle 尽管管制着 Java,同时也推动着Java规范往前演进,规范使得语言始终是能够管制的方向倒退,非常适合开发企业级利用。外面有十分凋敝的生态,比方 Maven 能够帮忙开发者疾速取得开发依赖,还有Netty、Tomcat、Spring。尽管 Spring 能够看做是挑战 Jakarta EE的角色,然而它自身也受到 Java 的很多影响,因而能够说是Jakarta EE也在帮忙Spring倒退。

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

最初是行业实际,在互联网金融等行业里大规模应用 Java。

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

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

最初排查出是 JIT 相干问题, Java利用有 JIT 编译器,也有解释模式,我能够给大家一个数字,编译模式要比解释模式快 50 倍左右,所以有局部代码执行在解释模式的话,影响十分大,如果有 2% 的代码在解释器模式,则整个利用一半的工夫在执行解释器,一半的工夫在执行编译器,性能降落一倍。如果说一半的代码退到解释器,那利用就会慢 25 倍左右,所以运行时对利用有深远影响。

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

如果咱们的用户想去应用最新的JDK,那他必须承受滚动降级。比如说当初Java曾经到了17了,五年后Java会达到27的版本,这样的降级频率必定是承受不了的。假如Java用户停留在老版本是不是能够防止这种滚动降级?理论也不行, Java近程执行破绽十分多,咱们能够通过序列化结构一些近程代码执行的例子,这是十分可怕的。各个云厂商都提供了本人的OpenJDK发行版,想取得Oracle也是能够的,是免费的。

阿里巴巴Dragonwell就是在这种背景下产生出了Java运行时,咱们齐全依靠开源社区建设,咱们参加了十分多国内上的高质量社区,当初也退出了龙蜥社区,其中包含Java的JCP-EC,阿里巴巴是国内惟一一个退出EC席位的企业(EC的全称是执行委员会)。

Alibaba Dragonwell是在OpenJDK的根底上减少了一些本人的性能,形成了阿里巴巴Dragonwell发行版本。咱们会公布稳固的发行版本,并且提供定期的安全补丁,质量体系接轨国内,基于Adoptium的CI,Adoptium组织由各个JDK的头部厂商保护,包含微软、IBM都参加其中。通过测试当前,咱们会在阿里巴巴线上验证;SVT系统验证,会用spring等罕用框架进行验证咱们的JDK。咱们也反对多平台,比方Linux、windows;RISC-V架构的反对也曾经提上日程。

和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发行版。

让咱们看看应用这两个发行版企业能够取得什么。

  • 平安个性,Java的TSL能力是通过JSSE接口应用的,Eclipse Temurin和Alibaba Dragonwell的JSSE能力都会通过验证,这对企业用户是十分重要的
  • 兼容性,Dragonwell基于OpenJDK而Temurin是原汁原味的OpenJDK,从OracleJDK迁徙到OpenJDK能够保障兼容性。
  • Java生态的集成验证
  • 定期安全补丁,Alibaba Dragonwell或者Eclipse Temurin,这两个发行版是齐全以齐全开源的模式运作的。咱们会以每三个月一次的固定发行周期提供订阅反对。

Alibaba Dragonwell上有很多阿里巴巴本人扩大的云原生个性,通过这些个性咱们能够轻易的排查问题或者轻易的缩小资源应用,或者是升高总体老本,这是Eclipse Temurin和OracleJDK所没有的。

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

Java因为宏大的类库会隐含很多的平安问题。如果抉择订阅了Alibaba Dragonwell企业反对服务,会取得每三个月的推送,对于一些重大更新咱们会进行评估,是否是重要更新,是否要降级,降级打算是什么。

应急支撑体系是IT企业的日常需要,在Java应用中只有上了规模都会有无奈预期的问题。这里咱们提供了7×24小时的专属钉钉或者电话反对,响应工夫保障到在业务不可用状况下10分钟响应,业务个别的问题在一小时能够取得响应,次要城市能够两小时内失去达到现场的服务。

咱们联合之前的案例来看,用户通过咱们的服务能取得怎么的体验。首先用户发现并报告了问题,因为北京是次要城市,两小时内能够达到现场。随后咱们帮忙用户保留现场,剖析问题,定位问题,最初交付服务。

代码空间满导致代码局部解释执行,从而性能变差,但代码空间满仍旧不是根因。一步步深刻定位,剖析出起因: 因为用户从低版本JDK升上来,低版本JDK的代码回收性能是有问题的,因而用户禁用了代码空间的回收性能。随着利用继续运行,编译代码越来越多,如果开启了代码空间的回收,生效代码是能够被Java虚拟机回收的。然而用户敞开了代码空间回收,最终导致代码空间满。Hotspot虚拟机在代码空间满时策略是禁止JIT编译。

确认问题后帮忙用户在大量机器上验证,确认修复实现后交付服务,书面给与用户确认。

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


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 分库分表  ShardingJDBC (详解 1/6)
    狂创客圈经典图书:《NettyZookeeperRedis高并发实战》面试必备+面试必备+面试必备【博客园总入口】疯狂创客圈经典图书:《SpringCloud、Nginx高并发核心 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
author-avatar
宾利Bentley乀Motors
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有