日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

升级glibc的影响_Java 11 升级:“债务”“危机”

發布時間:2023/12/1 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 升级glibc的影响_Java 11 升级:“债务”“危机” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:AJDK11(阿里內部基于openJDK11的定制版本)在19年3月左右發布,到現在也快1年了,不過目前整體使用的面還是比較窄,特性被了解的也不是很多,Java11作為OpenJDK發布的LTS版本,對我們來說,還是需要去擁抱和熟悉的,所以從目前的Java8升級到Java11,是一件不緊急但是重要的事情。

作者 | 江丹陽(Mario)

責編 | 屠敏

頭圖 | CSDN 下載自視覺中國

來源 | 淘系技術(ID:AlibabaMTT)

一說升級

? 運行環境升級

環境升級,主要是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:+PrintGCDateStamps"

Java9以后就是:

-Xlog:gc*:${MIDDLEWARE_LOGS}/gc.log:time"

release文件更新:

主要是指定新的ajdk的版本,以及maven的版本(3.5.0及以上)。

二訴“債務”

之前有和一些升級過的同學溝通過,這個Java11的升級還是比較平滑、順利,沒有太多成本,但是這次走起來其實還是克服了不少困難,不是本身Java11升級的問題,而是歷史的債務在Java11升級的過程中都暴露了出來。

? Linux版本

Linux 版本 7u2 出來已經5年多了,目前集團所有的線上和線下的宿主機的系統都是alios7,所以很難想象現有的系統在docker里面依賴的是5u7的linux基礎鏡像,這里面會有一個比較嚴重的性能問題:

因為7u2的glibc去掉了vsyscall改成vdso,5u7的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的升級帶來的收益還是可圈可點的,整體過程也還順滑,沒有兼容性問題,感興趣的同學可以嘗試升級,并且關注一些指標變化。

    總結

    以上是生活随笔為你收集整理的升级glibc的影响_Java 11 升级:“债务”“危机”的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。