最近,IBM發(fā)布了Open Liberty—WebSphere Liberty的開源實現(xiàn)—進一步體現(xiàn)了IBM為開源社區(qū)所做出的貢獻。這一版本支持基于Eclipse MicroProfile和Java EE API構(gòu)建微服務(wù)和云原生應(yīng)用。
WebSphere Liberty于2012年問世,是一個輕量級的小型應(yīng)用服務(wù)器,用于在Docker、Kunernetes或Cloud Foundry上部署符合Java EE 7規(guī)范的應(yīng)用程序。IBM網(wǎng)站上對其進行了描述:
眺望未來,我們相信Java、開放標準和開源的組合是構(gòu)建卓越應(yīng)用程序的最佳方式。因此,我們在去年聯(lián)合了Red Hat、Payara、Tomitribe和其他一些公司一起致力于推動使用Java來開發(fā)微服務(wù),我們還為我們的MicroProfile和Java EE運行時創(chuàng)建了開源版本。
這并非這些公司之間唯一的一次合作。除了OpenLiberty,IBM還發(fā)布了他們的開源JVM Eclipse Open J9。在今年早些時候,IBM還與Google及Lyft一起開發(fā)了開源項目Istio—一個用于監(jiān)控微服務(wù)的服務(wù)網(wǎng)格。
Open Liberty與Open J9及Istio組合而成的技術(shù)棧可以用于開發(fā)Java微服務(wù)和云原生應(yīng)用。開發(fā)人員還可以使用Open Liberty Tools—一系列輕量級的工具,用于開發(fā)、組裝和部署應(yīng)用程序到Open Liberty。Open Liberty的代碼庫可以在GitHub上找到。
InfoQ采訪了IBM WebSpere和Liberty運行時架構(gòu)師Alasdair Nottingham,談?wù)摿薕pen Liberty相關(guān)話題。
InfoQ:Eclipse Open J9和Istio服務(wù)網(wǎng)格是怎樣被集成到Open Liberty中的?
Alasdair Nottingham:Open Liberty與符合TCK標準的任何一種JVM兼容。不過目前Liberty還不能完全兼容Java SE 9,而Eclipse Open J9只能運行Java SE 9的字節(jié)碼。這是我們需要去解決的一個問題。因為Eclipse Open J9是基于IBM JVM開發(fā)的,所以如果它與Open Liberty能夠支持相同版本的Java SE,那么它們的結(jié)合就是天衣無縫的。從我們的經(jīng)驗來看,相比在Hotspot上運行Open Liberty,J9在內(nèi)存占用和啟動速度方面更具優(yōu)勢。
Istio意欲在Docker或Kubernetes環(huán)境中支持多種語言運行時,它通過在運行時與外部環(huán)境中間扮演協(xié)調(diào)者角色來實現(xiàn)這一目的。這也意味著,用戶可以在不修改應(yīng)用程序代碼的情況下,在發(fā)生故障時使用服務(wù)選擇、服務(wù)超時、重試和回路斷路器功能。
在這種架構(gòu)下,Open Liberty可以很容易地與Istio運行在一起。Open Liberty也支持Eclipse MicroProfile Fault Tolerance規(guī)范,為應(yīng)用程序提供了類似的容錯API,開發(fā)人員可以選擇使用Istio或自己編寫Java代碼來處理這些問題。如果Istio已經(jīng)配置了這些容錯模式,那么就可以停用Open Liberty中的這些功能,因為沒有必要讓應(yīng)用程序和Istio做相同的事情。
InfoQ:MicroProfile和Java EE 8之間的相互影響程度是怎樣的?
Nottingham:Java EE 8是一個非常重要但也很有限的更新版本,而Eclipse MicroProfile正在探索新的API,用于增強Java EE的實際應(yīng)用。
Eclipse MicroProfile對Java EE的未來已經(jīng)產(chǎn)生了重大影響,Eclipse軟件基金在這方面的進展速度驚人。最新的EE4J章程顯示,隨著Java EE移交給Eclipse,MicroProfile將會對Java EE的發(fā)展產(chǎn)生主要影響。
InfoQ:在過去的一年中,為了加快Java在微服務(wù)方面的應(yīng)用,你都與Red Hat、Payara和Tomitribe做了哪些工作?會繼續(xù)和他們合作下去嗎?
Nottingham:這是一次非常有成效的合作。雖然過渡到Eclipse對每一個人來說都是一個巨大挑戰(zhàn),但我們在MicroProfile 1.2上所取得的進展很讓人感到欣慰。每個人都使出渾身解數(shù),希望在JavaOne上有所斬獲。不管是觀眾還是參與者,都能從中體會到樂趣。
我們的合作當然會繼續(xù)下去。這對于Eclipse MicroProfile的成功和Eclipse Enterprise for Java(EE4J)的成功來說都是至關(guān)重要的。
InfoQ:Java每六個月的發(fā)布周期對Open Liberty的開發(fā)和后續(xù)的發(fā)布有什么影響嗎?
Nottingham:是否對Open Liberty的發(fā)布周期產(chǎn)生影響要看JVM發(fā)生了哪些變更。從我們的經(jīng)驗來看,更新到新版本字節(jié)碼會占用比較多的時間。
Java EE重度使用了字節(jié)碼操作,所以更新到新版本字節(jié)碼需要做大量的工作。如果每次發(fā)布新版的Java時都伴隨字節(jié)碼的更新,那么我們就很難跟上步伐。從過去的經(jīng)驗看,我們使用了差不多六個月時間更新到新版的Java,但效果并不理想。所以,我希望字節(jié)碼的變更不會太頻繁。
InfoQ:是什么讓Open Liberty有別于其他的應(yīng)用服務(wù)器?
Nottingham:Open Liberty與其他應(yīng)用程序有一些不同之處。首先是配置的簡易性。我們努力讓配置變得簡單易用,配置文件可以被提交到版本控制系統(tǒng)里,這對于DevOps來說是一個好消息,因為配置文件可以和代碼放在一起了。另一方面,我們的應(yīng)用服務(wù)器可以為應(yīng)用程序提供它們所需要的功能。
Open Liberty從一開始就被設(shè)計成可以為應(yīng)用程序提供必要功能的應(yīng)用服務(wù)器,我們把它們叫作功能單元。我們?yōu)镴ava EE和MicroProfile提供了所有功能,而如果你只需要其中的一小部分功能,那么就可以得到一個小型而快速的服務(wù)器運行時。
InfoQ:關(guān)于Open Liberty,還有其他什么可以分享的嗎?
Nottingham:從功能方面來看,我們要支持Java EE 8。從GitHub上可以看出,我們正在開發(fā)Servlet 4、JAX-RS 2.1、JPA 2.2、JSON-B和JSON-P。其他特性也會陸續(xù)添加進來。
Open Liberty還支持Eclipse MicroProfile 1.2。我們的開發(fā)團隊還參與了新的EE4J項目,所以我很期待我們到時候能夠提供一個實現(xiàn)版本,并支持Java SE 9。
Holly Cummins是IBM Bluemix Garage London的技術(shù)組長,也是WebSphere Liberty Profile的前任交付經(jīng)理,她也分享了她在OpenLiberty方面的經(jīng)驗:
我個人對我們在Liberty上所做的工作感到非常自豪,看到它在GitHub上開源也感到很激動。Open Liberty有一些非常棒的模塊化和動態(tài)特性。運行在本地時,它支持熱部署,可以在無需重新啟動的情況下增加、移除或重配置整個服務(wù)器。運行在云端時,它的模塊化特性可以讓未使用的功能不占用任何磁盤或內(nèi)存。另外,我也很喜歡它那清晰且統(tǒng)一的配置方式。
有趣的是,Liberty是第一個可以運行在Raspberry Pi上的應(yīng)用服務(wù)器(我們隨后也讓它運行在Android設(shè)別上)。而Liberty這種適合小型部署的特點卻也讓它成為大規(guī)模云原生應(yīng)用的最佳選擇,這不得不說是一種悖論。