68
技術社區[雲棲]
細品這杯香濃的咖啡——阿裏中間件高級專家沈詢的Java之旅
摘要:一葉知秋,回顧我的Java之路,最感謝還是阿裏巴巴能夠給我們這些技術人員創造出這樣有挑戰的業務場景和業務需要,也感謝有這樣一群人能夠為了這個目標一起努力到現在。
與Java的不解之緣
看到這個專題名字的第一眼,真是感慨萬千:Java已經有20年曆史了啊,我竟然也用了這語言8年了,真是轉眼一瞬。
王晶昱(花名:沈詢)
回想起8年前的我,應該是正在大學宿舍裏努力地從網上搜索C語言的各種教程,在“值傳遞和指針傳遞的區別是什麼?”“如何避免引用計數循環引用?”等問題中東突西撞不得要領吧。然後在某天,我偶然間看到了一門據稱比C++簡單的Java語言,恰巧還碰上一個好老師——莫倩老師,自然而然地激發起我去了解和學習Java的興趣。現在還記得當時在學習《ThinkinJava》時,我還不是特別理解BruceEckel介紹Java與C++的差別時提到的一句話:“Java是一種生產力語言”。當時我看著這句話,心裏一直在想:語言嘛,應該大同小異,能有什麼生產力提升?一個解釋型語言怎麼可能超越編譯語言呢?
轉眼,我使用Java已有8個年頭了,現在想想,Java真的帶給了我很多:它盡可能地避免我寫出錯誤的代碼。它不需要我去計算指針偏移量,也不需要我去關心垃圾回收問題,連Collection類都有DougLea這樣的大神做好了封裝。這些語言內建機製和類庫極大地減輕了我的頭腦負擔,讓我能夠更加專注地完成業務邏輯。而最讓我驚喜的是,Java一直不懈地追求JVM虛擬機的持續優化,各種眼花繚亂的鎖優化、動態字節碼編譯調優、GC新算法等JVM優化層出不窮。
在最近的幾年,我也可喜地看到,在Oracle的帶領下,Java語言的演進變得非常迅速。當我還在熟悉Java7的forkJoin框架的時候,支持Lambda的Java8已正式發布了。
現在,我也想從我個人角度,給Java點個讚。確實,對我而言,這是一門生產力語言,而Java也成功地幫助阿裏巴巴、淘寶走過了高速發展時期,並造就了我們阿裏的一支明星團隊:阿裏巴巴-共享業務-中間件和穩定性平台。
說起這個團隊,其實它在內部的名字一般稱為Java中間件。你看把Java放在了團隊的名字裏,這就是真愛啊!從2007年開始,我們就逐漸發現,外部企業級中間件並不是非常適合我們互聯網業務的實際發展需要。麵對著每年翻番的用戶量和用戶請求,我們不得不開始進行分布式應用體係的探索。當時可真是沒什麼能夠參照的,全都得靠自己去探索,經過了三年多不斷摸索,我們徹底地將係統進行了服務化、分布式改造。
目前,整個阿裏集團幾乎所有的應用都在使用這些中間件。我想,這也是阿裏技術體係的精華所在吧。
最近這幾年,阿裏的核心技術體係架構已經非常穩定可靠了。我們又在這些核心中間件的基礎上,不斷地深入細化運維體係,盡可能地做到自動化、智能化,為集團節省了比較多的設備成本和運維成本。在2015年,Java中間件更是響應了阿裏集團上雲的夢想,將阿裏集團七年的技術積累,一股腦地搬到了雲上,目前所提供的主要產品有:企業分布式應用服務(EDAS)、分布式關係數據庫(DRDS)、分布式消息服務(ONS)。它們都是使用Java編寫的,為大家量身定做的分布式中間件,與互聯網應用體係相結合,能夠非常輕鬆地實現企業IT架構的隨需定製和可線性擴縮。如果大家有需求,可以按照自己的需要來進行選擇。
與Java一起成長
能夠取得這樣的成績,Java功不可沒。除了我上麵提到語言特性對我們的幫助之外,在團隊之中,我們也非常關注整個Java的生態體係。基本上,無論我們有什麼新的想法,都可以立刻在Java的開源世界中找到對應的一些實現,裏麵有很多還非常靠譜,Netty、Tomcat、Ibatis、Hibernate、Spring、Struts、ZooKeeper、Hadoop、Mahout、Cassandra……我能舉出無數的開源軟件,它們都對我們的平台積累起到了非常大的作用。
同樣的,我們也在積極嚐試將自己係統的積累反饋回到社區裏,大家可以在github.com/alibaba下麵找到很多我們開源出來的軟件,在這裏麵我想特別的提幾個:RocketMQ(消息隊列)、Druid(連接池)、FastJson(JSON解析引擎)、Dubbo(RPC框架)等等。這些開源軟件與其他友商的各種開源、閉源的Java軟件一起豐富了Java生態體係,也讓我們解決問題變得更加輕鬆。
對我個人而言,Java的生態體係之所以能夠這樣豐富,主要原因在於它編寫一次、多點運行的特性,以及一直堅持著的向下兼容能力。這些都非常有利於Java生態體係的積累和演進,也造就了現在如此豐富的Java開源軟件環境和體係。
提到Java的向下兼容能力,我也想稍微聊一下我的看法。我經常能看到很多人談到,Java的曆史包袱太重了,為了兼容這些曆史遺留的包袱,Java的演進已經非常困難,這會導致Java語言的崩潰。針對這個問題,我個人的看法是:首先,Java作為一個被這麼廣泛的使用的語言,有著這麼深厚的係統積累,完全不考慮係統的兼容性而演進整個係統,這其實是比較危險的,對其他革新進行兼容並包可能才是它最好的發展方向。就目前而言,我幾乎沒看到過哪個語言能夠比較好地解決這種語言升級所導致的軟件斷層問題,所以,更多的隻是兩害取其輕的過程吧。同時,我也非常高興地看到,依托於JVM,我們有了大量的新的語言實現,這裏麵有Groovy,Scala,JPython等等。它們都非常優秀,這些新生的語言與Java一起,進一步豐富了整個Java的生態體係,也更加堅定了我對Java生態體係的信心,它一定還能再戰十年!
寄語現在,展望未來
一葉知秋,回顧我的Java之路,最感謝還是阿裏巴巴能夠給我們這些技術人員創造出這樣有挑戰的業務場景和業務需要,也感謝有這樣一群人能夠為了這個目標一起努力到現在。
能夠跟這些大牛們一起工作,耳濡目染,不斷提高,是我的工作生涯中最為寶貴的一筆財富。而如果能夠回到過去,我最想告訴8年以前的自己:“要買房!”
笑~~
其實是:“還是要特別注重基礎,操作係統、網絡、算法數據結構、離散數學、數據庫原理與實踐,這些看起來枯燥而無味的基礎科學,是我目前感到知識最為匱乏,但卻最為急需的部分,要了解它們是必須付出非常多的時間才有可能理解通透些。而這些基礎的紮實程度,就直接決定了你的高度”。可惜,我沒辦法在21天內學會C++,這些建議,也就隻能提供給還有機會實踐的各位做參考了。
作者簡介:王晶昱花名沈詢,阿裏高級專家,來自阿裏巴巴中間件和穩定性平台。目前主要負責阿裏的分布式數據庫DRDS(TDDL)和阿裏的分布式消息服務ONS(RocketMQ/Notify)兩個係統。
本文選自程序員電子版2015年5月B刊,該期更多文章請查看這裏。2000年創刊至今所有文章目錄請查看程序員封麵秀。歡迎訂閱程序員電子版(含iPad版、Android版、PDF版)。
本文轉載自:csdn
最後更新:2017-04-01 13:38:50