這篇文章主要介紹“KonaJDK賦能云上Java新生態(tài)分析”,在日常操作中,相信很多人在KonaJDK賦能云上Java新生態(tài)分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”KonaJDK賦能云上Java新生態(tài)分析”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
都昌網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),都昌網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為都昌成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的都昌做網(wǎng)站的公司定做!
一、自研KonaJDK對于云Java生態(tài)的意義
JDK作為Java應(yīng)用的基礎(chǔ)設(shè)施,在云Java生態(tài)上的重要性不言而喻。KonaJDK作為Tencent自研JDK, 已經(jīng)平穩(wěn)支撐于騰訊云微服務(wù),消息中間件,大數(shù)據(jù)等核心業(yè)務(wù),同時在信創(chuàng)等場景上作為Java業(yè)務(wù)的基礎(chǔ)支撐組件,填補了騰訊云信創(chuàng)場景下JDK組件的空白。本文將主要從KonaJDK在信創(chuàng)云環(huán)境支撐,KonaJDK支持騰訊云產(chǎn)品的能力拓展與定制化以及KonaJDK在大數(shù)據(jù)場景的優(yōu)化實踐幾個方面,介紹KonaJDK對于騰訊云Java業(yè)務(wù)的支撐與優(yōu)化
。二、KonaJDK 信創(chuàng)環(huán)境支撐
信創(chuàng)云環(huán)境中Java業(yè)務(wù)要求JDK能夠穩(wěn)定高效的支撐國產(chǎn)CPU運行環(huán)境。其中主要的CPU指令集為aarch74。通過我們調(diào)研,目前JDK8在aarch74指令集的情況如下:OpenJDK8 在主線分支中并沒有aarch74指令集的支持,網(wǎng)上能夠找到的開源版本,都是開源社區(qū)幾個主要參與者貢獻(xiàn)的。對于騰訊云業(yè)務(wù)來說,開源版本并沒有在生產(chǎn)系統(tǒng)中得到驗證,也沒有專門的人力進(jìn)行代碼的維護(hù)與更新。所以在可維護(hù)性,安全性及穩(wěn)定性上都存在風(fēng)險。OracleJDK 8 之中包含AARCH64支持。但考慮到成本,以及OracleJDK 8代碼未開源,問題定位等方面的難度。同時,我們在特定場景下也發(fā)現(xiàn)OracleJDK頻繁的ForceSafepoint可能對業(yè)務(wù)穩(wěn)定性存在影響,所以我們也沒有考慮使用OracleJDK8作為AARCH64的首先JDK。(具體可以參見文章: " tab="innerlink" data-linktype="2" ><不要再亂下載JDK了:Elasticsearch在國產(chǎn)化ARM環(huán)境下的首個大坑>)經(jīng)過一系列的分析,我們最終選定KonaJDK作為騰訊云信創(chuàng)方案的首選JDK,主要原因如下:KonaJDK 的AARCH64版本基于OpenJDK社區(qū)最受歡迎的IcedTea 項目,之后經(jīng)過KonaJDK大量的研發(fā),適配與修正。在穩(wěn)定性方面經(jīng)過了大規(guī)模生產(chǎn)環(huán)境的測試與驗證,并且通過了專有云等產(chǎn)品的質(zhì)量驗收。同時,騰訊內(nèi)部TencentJDK協(xié)同團(tuán)隊可以持續(xù)為KonaJDK提供版本維護(hù)與技術(shù)支持。總而言之,騰訊KonaJDK能夠在保證正確性穩(wěn)定性的同時,提供JDK的維護(hù),技術(shù)支持,優(yōu)化以及定制化功能等方面的支持,更適合信創(chuàng)環(huán)境下云業(yè)務(wù)的場景。 三、KonaJDK 支持云產(chǎn)品能力拓展與定制化
除了穩(wěn)定支撐信創(chuàng)云Java業(yè)務(wù)外, KonaJDK在其可定制性方面也為云業(yè)務(wù)提供了多方面的支持。我們主要通過以下幾方面進(jìn)行說明:1. 微服務(wù)產(chǎn)品中JVM監(jiān)控診斷能力提升
根據(jù)統(tǒng)計,大約60%的云業(yè)務(wù)開發(fā)者使用Java語言。以騰訊云微服務(wù)管理平臺(TSF)為例,其業(yè)務(wù)支撐環(huán)境,以及用戶部署的微服務(wù),主要是使用Java spring cloud框架實現(xiàn)的,即這些業(yè)務(wù)都是運行在JDK環(huán)境中的。但在實際使用過程中,用戶更加關(guān)注的是業(yè)務(wù)的功能與實現(xiàn),很難感受到JDK在其中的作用。作為對比,下圖是云業(yè)務(wù)開發(fā)者眼中的微服務(wù),用戶更加關(guān)注微服務(wù)每個模塊的功能,以及微服務(wù)業(yè)務(wù)的功能。下圖是JVM/JDK研發(fā)者眼中的微服務(wù):
可以看到,基本上每一個微服務(wù)功能節(jié)點都是一個JVM實例。因此如何通過JVM側(cè)信息幫助開發(fā)者了解自己的云業(yè)務(wù)運行情況,是云支撐平臺類產(chǎn)品的關(guān)鍵功能。目前,騰訊云微服務(wù)產(chǎn)品TSF,消息中間件產(chǎn)品支撐環(huán)境已經(jīng)使用KonaJDK作為業(yè)務(wù)支撐組件。除了支持標(biāo)準(zhǔn)JMXbean,兼容開源JVM相關(guān)profiler來提供微服務(wù)基本JVM監(jiān)控信息外, KonaJDK還從以下方面進(jìn)行相關(guān)提升(部分功能研發(fā)上線中)- JFR (Java Flight Recorder)
JVM內(nèi)置輕量級Profiler,可收集Java應(yīng)用在運行過程中的診斷及性能數(shù)據(jù),back port自O(shè)penJDK11。如果使用的是默認(rèn)的配置,理論上JFR開銷是小于2%的,因此必要情況下可用在現(xiàn)網(wǎng)收集數(shù)據(jù)。KonaJDK中針對JFR做了大量的問題修復(fù)與能力提升,目前可以在運行時動態(tài)打開、關(guān)閉。采集到的數(shù)據(jù)在內(nèi)部可以通過KonaProfiler 進(jìn)行分析KonaJDK團(tuán)隊研發(fā)的一款線上綜合性JVM性能分析工具,目前支持JFR數(shù)據(jù)文件的分析,heap dump數(shù)據(jù)分析,jstack數(shù)據(jù)分析,火焰圖等多種功能。例 – KonaProfiler支持多種類型火焰圖分析例 – KonaProfiler對于JFR數(shù)據(jù)分析給出分析建議結(jié)合以上能力,在KonaJDK的加持下,騰訊云微服務(wù)平臺可以為用戶提供JVM監(jiān)控,線上診斷等一系列能力,滿足用戶在性能分析及調(diào)優(yōu)方面的需求。2. 國密算法的支持
隨著國密算法等商密算法國家標(biāo)準(zhǔn)的推出,云上客戶對于Java版本的國密算法需求越來越多。經(jīng)過調(diào)研與客戶反饋,我們發(fā)現(xiàn)目前在國密算法的使用上,主要存在以下幾類問題:客戶在一些場景上需要國密算法, 但是受各種原因限制,客戶不可能也不愿意自身研發(fā)國密算法。目前網(wǎng)上國密算法的實現(xiàn)參差不齊,以下是我們在主流搜索引擎上搜索“國密算法 Java實現(xiàn)”。從結(jié)果可以看到大部分內(nèi)容都是個人愛好者的實現(xiàn),或者使用開源項目。這些項目每種實現(xiàn)都需要學(xué)習(xí)API的使用,并且如何選擇合適的項目,也是客戶面臨的成本問題。另外一點在于可靠性上, 在一些場景上,對于國密算法的要求處理功能正確與性能優(yōu)秀以外,還需要可靠性保證。例如是否符合國標(biāo),是否經(jīng)過認(rèn)證等等。KonaJDK團(tuán)隊經(jīng)過調(diào)研,實際上在Java密碼算法的使用上,最為普及,也最為易用的實現(xiàn)就是Java Cryptography Architecture(JCA), 使用JCA定義的Cipher類與 API,可以高效,便捷的使用JDK中實現(xiàn)了JCA的密碼算法。KonaJDK團(tuán)隊經(jīng)過與內(nèi)部密碼專家團(tuán)隊的合作,共同開發(fā)了基于JCA的國密算法SM2, SM3,SM4支持,其主要具備以下優(yōu)點:- 簡單易用, 國密算法使用符合標(biāo)準(zhǔn)JCA調(diào)用流程,開發(fā)人員在掌握J(rèn)CA的基礎(chǔ)上,只需要簡單學(xué)習(xí)幾個基本要點就可以順利使用。
- 安全可靠,由騰訊內(nèi)部專業(yè)密碼專家團(tuán)隊開發(fā)維護(hù),國密算法符合國標(biāo)。
- 易于遷移,從其他JCA密碼算法遷移到SM算法只需要簡單的替換即可,如下圖為從RSA切換為SM2 算法的代碼改動,最少僅需3行代碼變動即可完成。
通過國密算法, 我們可以看到KonaJDK 提供的定制化能力與技術(shù)支持能力能夠進(jìn)一步提升云上產(chǎn)品的能力,方便客戶,提高產(chǎn)品價值3. 工具優(yōu)化,大堆場景下Jmap掃描速度的提升,回饋社區(qū)
提到Java堆分析,相信很多java程序員最先想起的就是Jmap。作為JDK內(nèi)置的堆內(nèi)存分析工具,Jmap可以實現(xiàn)jvm堆內(nèi)存的統(tǒng)計與dump功能。在實際使用中,我們發(fā)現(xiàn)在大數(shù)據(jù)等大堆場景下,jmap的一次使用要消耗很長時間。而由于jmap在運行過程中需要暫停Java業(yè)務(wù)線程,所以可能會出現(xiàn)一次jmap 發(fā)生導(dǎo)致Java進(jìn)程無響應(yīng),從而主備結(jié)點切換,最終造成業(yè)務(wù)系統(tǒng)抖動。經(jīng)過問題的分析, 我們在KonaJDK中引入了Jmap的并行堆掃描,如圖所示:通過并行堆掃描與thread local 數(shù)據(jù)存儲,我們將Jmap histo工作時間提升了6-10倍,緩解了業(yè)務(wù)抖動問題。同時作為openJDK社區(qū)的參與者,我們將并行堆掃描這個特性積極貢獻(xiàn)給了OpenJDK社區(qū),目前針對G1, ZGC, shenandoahGC的patch已經(jīng)合入jdk16主線,而針對ParallelScavenge堆的patch也已經(jīng)經(jīng)過多輪review,正待合入。 四、Kona JDK 性能保證 - 大數(shù)據(jù)線上優(yōu)化實踐
除了以上幾方面,騰訊KonaJDK專家團(tuán)隊針對大數(shù)據(jù)業(yè)務(wù)進(jìn)行了性能的專項提升。例如,通過GC調(diào)度等優(yōu)化,大幅降低生產(chǎn)環(huán)境CPU利用率; 優(yōu)化GC物理內(nèi)存回收算法,以減少進(jìn)程物理內(nèi)存占用; G1 和ZGC等GC算法持續(xù)優(yōu)化以提升穩(wěn)定性和減少毛刺等。經(jīng)過大數(shù)據(jù)生產(chǎn)環(huán)境大規(guī)模實際部署驗證,和社區(qū)版本對比,Kona JDK在cpu使用率和物理內(nèi)存使用等方面都有明顯優(yōu)勢。到此,關(guān)于“KonaJDK賦能云上Java新生態(tài)分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
新聞標(biāo)題:KonaJDK賦能云上Java新生態(tài)分析
地址分享:http://weahome.cn/article/ggcjhd.html