预付网站建设费用怎么做分录,网站可以同时做竞价和优化吗,杭州知名的网站制作策略,徐州盛大图文网站导读#xff1a;AJDK11(阿里内部基于openJDK11的定制版本)在19年3月左右发布#xff0c;到现在也快1年了#xff0c;不过目前整体使用的面还是比较窄#xff0c;特性被了解的也不是很多#xff0c;Java11作为OpenJDK发布的LTS版本#xff0c;对我们来说#xff0c;还是需…导读AJDK11(阿里内部基于openJDK11的定制版本)在19年3月左右发布到现在也快1年了不过目前整体使用的面还是比较窄特性被了解的也不是很多Java11作为OpenJDK发布的LTS版本对我们来说还是需要去拥抱和熟悉的所以从目前的Java8升级到Java11是一件不紧急但是重要的事情。作者 | 江丹阳(Mario)责编 | 屠敏头图 | CSDN 下载自视觉中国来源 | 淘系技术(IDAlibabaMTT)一说升级▐ 运行环境升级环境升级主要是alios7(内部Linux 7u2的定制版) ajdk11(当前比较稳定的版本是ajdk-11_0_4_5-b71)这个升级通过修改应用APP-META目录中的dockerfile可以完成▐ 构建插件升级构建插件的升级主要是maven compile插件的升级需要升级到3.8.0版本pandora-boot的maven插件升级到2.1.11.9依赖如下同时将编译的目标文件和源文件的编译版本指定下▐ 框架升级主要是springboot和pandoraboot的升级同时还有pandora sar包的升级▐ 依赖升级在Java11中移除了一些模块所以在做升级的时候需要看需求手动进行依赖主要有如下几个▐ 运行脚本升级这里的脚本升级主要是一些jvm的启动参数兼容问题比如debug option还有gc日志打印相关的option主要修改appctl.sh和setenv.sh两个脚本。比如java9以前的GC日志打印是-Xloggc:${MIDDLEWARE_LOGS}/gc.log -XX:PrintGCDetails -XX:PrintGCDateStampsJava9以后就是-Xlog:gc*:${MIDDLEWARE_LOGS}/gc.log:timerelease文件更新主要是指定新的ajdk的版本以及maven的版本(3.5.0及以上)。二诉“债务”之前有和一些升级过的同学沟通过这个Java11的升级还是比较平滑、顺利没有太多成本但是这次走起来其实还是克服了不少困难不是本身Java11升级的问题而是历史的债务在Java11升级的过程中都暴露了出来。▐ Linux版本Linux 版本 7u2 出来已经5年多了目前集团所有的线上和线下的宿主机的系统都是alios7所以很难想象现有的系统在docker里面依赖的是5u7的linux基础镜像这里面会有一个比较严重的性能问题因为7u2的glibc去掉了vsyscall改成vdso5u7的glibc还是保留vsyscall就需要有一个内核接口来模拟这个模拟是有严重性能问题的sys%会非常高。所以没有升级的赶紧升级下吧使用裁剪版本(alios7u2-min)体积可以从原来的5u7 2G多到500M多这个大小的优化能提升的东西不做赘述。▐ 本地启动本地启动好多开发同学可能都没有用过所以起不来也不是一件很难想象的事情那问一个问题为什么做pandoraboot升级为什么做boot化boot化带来了哪些价值给我们带来了哪些改变我觉得这些问题在最开始推微服务的时候大家都是很关注的但是当后面微服务成为趋势pandoraboot或springboot成为微服务框架之后之前的问题就没人关注了。应用owner还是看看自己的boot化应用是否能启动吧本地启动、本地调试可以节省的开发调试时间谁用谁知道吧。▐ autoconfig老生常谈的问题这个属于时代产物了在架构演进过程中一直被容忍一直被小心呵护兼容因为动之成本有点高协同比较大说白了就是很难~~~有理想追求的程序员大家可以聚一起看看怎么落地~~三叙“危机”▐ “危”面试的标准个人看来是越来越高但是里面的人做事的标准是越来越低“调包侠”、“拿来主义”、“翻译器”、“施工队”现象也是越来越常见我只想说我们是程序员借用之前比较孤傲的定位我们是“艺术家”那什么时候落魄成了我们当初斥责的模样从现在起建立危机意识吧。▐ “机”事情是升级Java11获益是Java9到java11的所有的增强和新特性下面是个人看到的一些利益点欢迎大家补充。内存优化Java9中增强了string的底层存储LATIN1编码的字符串底层存储从原来的char数组变成了byte数据对于这样指定的字符串的内存使用节省一半整体内存的节省大概10%(不同应用可能差别比较大)。▐ HotSpot增强Java9中引入了HotSpotIntrinsicCandidate这个注释主要是在使用CPU及OS层面的native方法替换java function达到性能提升效果会因为平台和硬件不同有差异目前主要是在一些基础类的一些高频方法中出现该注解。▐ GC提升我们目前使用的是CMS垃圾回收器相当好我们也用了很长一段时间了不过CMS随着发展也暴露出两个问题一个是面向大内存的回收效率会下降比较明显同时回收的时长不可控在后续的Java9中的G1和Java11中ZGC相继出现就是针对上述两个方向进行的优化。升级了Java11其实不一定要用ZGC因为目前我们大部分应用的配置是4c8g有人做过性能测试在8G以下CMS的回收性能会比ZGC还好一点8G的情况下差不多那么8G以上ZGC会的性能会比较好同时他的回收效率受内存大小的持续上升影响较小目前我们有些核心应用的配置是8c16G的所以这块GC的增强还是有收益的。FaaS化FaaS最近一段时间都是一个蛮热的话题不过距离整体在现有业务场景中广泛应用还有一段时间那升级Java11和FaaS化有什么关联呢个人感觉是两个方面模块化graalVM。FaaS要支持在线业务的核心关键在于Function的快速分发、运行环境快速拉起来达到低延迟反馈所以模块化可以让应用足够小graalVM可以提前将非动态Java代码编译成native image提升启动速度同时减少整体App的大小趋势从Java 11开始OpenJDK major version的发布间隔差不多是半年不用全部都要去关注都是追赶但是LTS版本需要去追赶去升级Java11就是最新的LTS版本下一个或者再一下major version很可能又是一个LTS版本虽然目前使用Java 8都挺好的现实是Java 8的一些特性会被往后移植但是后续版本的特性和优化不会再被集成到Java 8中了势不可逆跟不上就快要被淘汰了。结语Java 11的升级带来的收益还是可圈可点的整体过程也还顺滑没有兼容性问题感兴趣的同学可以尝试升级并且关注一些指标变化。