Java程序员:不要因未知而让云成本大涨
Java應(yīng)用程序框架Grails的創(chuàng)建者Graeme Rocher近日表示,在云原生世界,通過對Java程序邏輯進(jìn)行注釋和編譯細(xì)節(jié)優(yōu)化,可以節(jié)省云服務(wù)器運行成本,開發(fā)人員對這些潛在細(xì)節(jié)的無知可能導(dǎo)致企業(yè)付出高昂代價。
在日常開發(fā)中,Java程序員主要和框架、工具、API和文檔等打交道,好像跟云沾不上邊。直到應(yīng)用程序被推向生產(chǎn),研發(fā)人員可能才意識到這個應(yīng)用需要千兆字節(jié)內(nèi)存才能運行,此時再開始優(yōu)化顯然來不及,如果基于云平臺運行,則會造成大量資源浪費。
雖然Java研發(fā)人員主要在運行時管理應(yīng)用程序,但隨著容器化和Kubernetes的普及,不少研發(fā)人員也會將應(yīng)用程序直接部署到Kubernetes,因為其可以大規(guī)模協(xié)調(diào)容器化應(yīng)用程序。
無論是Kubernetes還是管理應(yīng)用程序的Oracle云基礎(chǔ)架構(gòu)環(huán)境,編寫云應(yīng)用程序的開發(fā)人員都需要以不同的方式思考編程和優(yōu)化方式。相比本地運行,開發(fā)人員必須讓應(yīng)用程序?qū)χ貑ⅰ⒐收限D(zhuǎn)移、啟動時間和內(nèi)存消耗等優(yōu)化做出響應(yīng)。畢竟,一旦應(yīng)用程序在云平臺運行,消耗的所有資源都直接與金錢掛鉤。
無服務(wù)器和微服務(wù)優(yōu)化
當(dāng)然,上述問題可以通過一些新計算模式得到緩解,但每一種新計算模式的出現(xiàn)都會隨之帶來一些陷阱。在云計算領(lǐng)域,顯著風(fēng)險來自應(yīng)用程序的隱藏成本,從表面來看,微服務(wù)應(yīng)該是相對經(jīng)濟的解決方案。
Grails的創(chuàng)建者Graeme Rocher最近因名為Micronaut開源項目獲得Oracle Code One頒發(fā)的開創(chuàng)性獎項。與開源Web應(yīng)用程序框架Grails一樣,Micronaut基于JVM,但這也是二者唯一相似之處。Micronaut是一個模塊化、易于測試的開源框架,用于構(gòu)建現(xiàn)代微服務(wù)和無服務(wù)器應(yīng)用程序。
那么,Micronaut和Java程序員有什么關(guān)系?和云計算成本又有什么關(guān)系呢?
一般來說,在Java生態(tài)系統(tǒng),研發(fā)人員會學(xué)習(xí)很多關(guān)于讓應(yīng)用程序更高效,針對低內(nèi)存占用進(jìn)行優(yōu)化的知識。云平臺同樣運行著不少用Java語言編寫的框架,比如Hadoop、Kafka和Cassandra,這些框架支持長時間運行進(jìn)程,這些進(jìn)程可從JVM即時編譯中受益。
但是,對于運行時間較短的進(jìn)程而言,無服務(wù)器計算變得很受歡迎,這更適合快速冷啟動和低內(nèi)存占用及短期運行進(jìn)程的情況,如果進(jìn)程只是短暫執(zhí)行然后消失,那么JVM提供的優(yōu)化就會丟失,就像在效用計算模型中一樣。
Micronaut的作用就是將傳統(tǒng)架構(gòu)過渡到更快、更靈活且基于微服務(wù)的系統(tǒng)。Micronaut能以亞秒速度執(zhí)行關(guān)鍵操作,同時支持精益云部署。應(yīng)用程序的啟動時間和內(nèi)存消耗不會根據(jù)程序中的代碼行數(shù)自動增加。因此,Micronaut不僅適用于公用計算,還是通用開發(fā)環(huán)境,可以輕松運行在諸如Android等小型內(nèi)存占用設(shè)備和Raspberry Pi等微控制器上。
換句話說,Micronaut滿足云原生、多語言、獨立于設(shè)備的需求,并與GraalVM等項目完美集成,用于編譯運行速度更快的Java代碼。 當(dāng)然,研發(fā)人員也不必局限于Micronaut這一種選擇。
Java不一定很沉重
研發(fā)人員通常認(rèn)為Java意味著重量級,這種判斷更多地與JVM提供的用于構(gòu)建框架的API和工具有關(guān),這些歷來基于運行時使用,運行時注釋分析及構(gòu)建應(yīng)用程序的方式不可避免地導(dǎo)致內(nèi)存消耗增加。
相比之下,預(yù)編譯將編程語言轉(zhuǎn)換為Java字節(jié)碼或?qū)⒆止?jié)碼轉(zhuǎn)換為機器代碼的過程 ,對許多開發(fā)人員來說是未知的,但在某些應(yīng)用程序平臺被大量使用。Micronaut所做的是采用這一理念并將其應(yīng)用于服務(wù)器端編程。
Java應(yīng)用程序需要等待幾秒鐘才可啟動的日子已經(jīng)過去,這要歸功于微服務(wù)的出現(xiàn),但這并不是Micronaut的唯一優(yōu)勢,它還集成了追蹤和安全工具,并且不必容器化。如果使用Java應(yīng)用程序,研發(fā)人員可能需要依賴容器實現(xiàn)許多功能。Micronaut讓這些功能都在運行時編譯,因此容器需求就會消失,這讓測試變得更加容易。
參考鏈接:
https://www.forbes.com/sites/oracle/2019/01/07/grails-founder-what-java-developers-dont-know-about-memory-can-cost-them-money-in-the-cloud/#2792bb3044e1
Micronaut項目開源地址:https://github.com/micronaut-projects/micronaut-core
總結(jié)
以上是生活随笔為你收集整理的Java程序员:不要因未知而让云成本大涨的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统/etc/hosts文件配置
- 下一篇: Java™ 教程(自动装箱和拆箱)