ApacheCon北美站參會(huì)見聞,RocketMQ全力出擊
一、ApacheCon簡介和議程
在開源領(lǐng)域,ApacheCon和OSCON是最負(fù)盛名的兩大頂會(huì)(從今年開始,Linux基金會(huì)又推出了Open Source Summit,每年全球巡回舉行)。ApacheCon可以看作是Apache Committer的全球集會(huì),參加分享的Speaker除了Apache董事會(huì)下的各路President,Chairman,Director, Officer等,當(dāng)屬Committer最多,他們大多數(shù)為一線頂級(jí)的工程師&架構(gòu)師。平時(shí)大家都是郵件里溝通往來,借著每年一次的ApacheCon歡聚一起,聊開源,談技術(shù),確是一件快事。
本次ApacheCon北美站的官方Slogan是“TOMORROW'S TECHNOLOGY TODAY.”沒錯(cuò),透過這次會(huì)議,我們確實(shí)看到了一些未來幾年會(huì)在Apache社區(qū)、甚至?xí)藙?dòng)整個(gè)開源領(lǐng)域的技術(shù)方向,比方說Serverless技術(shù)、深度學(xué)習(xí)等。再比方說Apache RocketMQ(哈哈,這也是我們團(tuán)隊(duì)的目標(biāo)之一)。今年的大會(huì)還專門把大數(shù)據(jù)部分拆了出去,為期三天的會(huì)議實(shí)際上也分了兩個(gè)議題 - ApacheCon和Apache BigData。因?yàn)槭峭谂e行,我們并沒有去領(lǐng)略Apache BigData的風(fēng)采,不過透過分享嘉賓的Topic簡介,我們還是能夠管中窺豹,領(lǐng)略其中一二。
總的日程安排上,本次大會(huì)有30多個(gè)主題方向, 4個(gè)子會(huì)議(ApacheIoT、CloudStack Collaboration Conference、FlexJS Summit 和TomcatCon),共計(jì)200多個(gè)演講,規(guī)模不可謂不大~
二、Day1第一天
我們主要參加了BarCampApache,有些類似workshop。每個(gè)人先做簡短自我介紹,從介紹中抽取相關(guān)話題,如下圖。大家圍繞著這些主題一起交流討論,氛圍確實(shí)很輕松,也利于發(fā)揮(不過還是有一些小緊張,畢竟學(xué)校畢業(yè)后就沒怎么正經(jīng)的和老外“勾搭”過)。我們主要共享了3個(gè)話題,分別是“MQ in Practice”,“Differences between Queue”和“Open Source in China”。在簡單介紹了Apache ActiveMQ,Apache Kafka和Apache RocketMQ之間設(shè)計(jì)上和功能特性上的區(qū)別后,一位德國小哥,追著我們問“RocketMQ是否已經(jīng)全面替換了Kafka”,“從從你的介紹中,似乎RocketMQ已經(jīng)全面超越Kafka了,是嗎”哇,多么具有挑釁的問題啊,而我們的回答也是不亢不卑,既體現(xiàn)了中國人的謙遜,也表明了我們對(duì)RocketMQ產(chǎn)品的信心。也正是透過這次簡單的討論,引起了更多的同學(xué)來聽我們第三天的技術(shù)分享。有位印度小哥,在我們分享完了過來,和我說“很想聽下你們的分享,沒想到來晚了”我連忙安慰他說“There is a video in apache official, you can watch it !”,他這才“悻悻”離開。
三、第二天上午-Keynote環(huán)節(jié)
BarCampCon可以看做是ApacheCon的一個(gè)預(yù)熱,正式的會(huì)議今天拉開了序幕,通過下面的Agenda,我們可以看到上午是基本上都是Keynote,和國內(nèi)的Qcon一樣,主要是一些大佬們致辭。首先來自Apache基金會(huì)的President Sam的分享“Keynote: State of the Feather - Sam Ruby, President, Apache Software Foundation”。關(guān)于Sam的個(gè)人介紹,大家可以參看這里(https://apachecon2017.sched.com/event/9yTE/keynote-state-of-the-feather-sam-ruby-president-apache-software-foundation)。Sam的介紹也基本圍繞著Apache的要義上,上圖說明。
Community over Code的理念是對(duì)Apache社區(qū)18年的精髓提煉。但我們看這個(gè)問題切不可偏薄,在強(qiáng)調(diào)社區(qū)重要性的同時(shí),也要關(guān)注產(chǎn)品,關(guān)注設(shè)計(jì),關(guān)注代碼。Apache開源項(xiàng)目,我讀過源碼的項(xiàng)目不在少數(shù),困擾我內(nèi)心的疑惑也是在看到這句話后有了一絲理解。為什么Apache很多頂級(jí)項(xiàng)目的代碼寫的沒有想象中的那么好,有的項(xiàng)目早期的代碼甚至可以用“慘不忍睹”來形容。我想社區(qū)提出這個(gè)理念的是好的,是站在大家具備了一定工匠代碼能力的前提下提出來的。在大家都關(guān)注代碼可讀性,可維護(hù)性,可擴(kuò)展性之外,強(qiáng)調(diào)思路外延,產(chǎn)品理念外延。也正因?yàn)橛辛撕芎玫纳鐓^(qū),很好的群眾基礎(chǔ),你的產(chǎn)品才會(huì)被更多的人接納,被更多人喜歡。所以我們看這個(gè)問題,一定要先立足我們的產(chǎn)品設(shè)計(jì),編碼測試等。
我們現(xiàn)在還屬于Podlings狀態(tài),團(tuán)隊(duì)今年也在嘗試去運(yùn)營一個(gè)更多元化,更健康的社區(qū),爭取早日成為TLP。
接下來,是來自Hortonworks的Co-founder Alan Gates的分享Training Our Team in the Apache Way。談到Hortonworks,我想大家應(yīng)該不陌生,尤其是Hadooper們,作為Hadoop商業(yè)化三駕馬車之一的Hortonworks,在開源方面的貢獻(xiàn)真不少,如下圖:
他們通過和Apache合作,分享Apache開源理念與研發(fā)機(jī)制,培養(yǎng)更多的,更高產(chǎn)的Open Source Coder。這個(gè)與后面的Jim分享的InnerSource的思路可以聯(lián)系起來,利用開源軟件優(yōu)秀的研發(fā)理念,運(yùn)作內(nèi)部項(xiàng)目,從而獲得成功。
接下來是來自ApacheCon白金贊助商IBM的Keynote: Apache CouchDB: A Tale of Community, Cooperation and Code。可能很多同學(xué)都不是太了解這個(gè)存在了近十年的Apache頂級(jí)項(xiàng)目。MongoDB是和它對(duì)應(yīng)的非Apache產(chǎn)品,它們都是文檔型NoSQL數(shù)據(jù)庫。這次也主要是以產(chǎn)品介紹為主。
最后一個(gè)keynote來自劍橋美女博士Sandra Matz的關(guān)于數(shù)字化心里評(píng)測方面的分享,與傳統(tǒng)那種“照鏡子”的問題式方式不同,數(shù)字化充分利用我們的社會(huì)數(shù)據(jù),借助如Twitter, Instagram, facebook, google+等社交媒體,將個(gè)人的數(shù)字化足跡轉(zhuǎn)換為psychological profiles,利用這些評(píng)判人的性格(Openness, Conscientiousness, Extraversion, Agreeableness, Neuroticism etc.),像Facebook這樣的社交媒體甚至可以以此為參考來做精準(zhǔn)營銷,協(xié)同推薦等。整個(gè)議題感覺和這次大會(huì)不是很搭,但是講到性格特征時(shí),會(huì)場笑聲朗朗,氛圍甚是輕松。
四、第二天下—技術(shù)Session環(huán)節(jié)
Keynote完了之后,接下來就是CoffeeBreak,短暫休息之后,開始技術(shù)燒腦分享。和國內(nèi)Qcon一樣,Apache 80多個(gè)topic,被安排到了6個(gè)半天里,同一時(shí)刻有至少4個(gè)topic同時(shí)進(jìn)行,而我們關(guān)注重點(diǎn)主要集中在了Apache Way、MQ、IoT、大數(shù)據(jù)、性能相關(guān)。下面挑幾個(gè)我們參加的分會(huì)場給大家分享一下。
1、Netflix公司關(guān)于Cassandra在Netflix的應(yīng)用
首先是來自Netflix公司云數(shù)據(jù)架構(gòu)師Vinay Chella帶來的Cassandra的分享,在我們的記憶里,Cassandra火了兩把,第一次是它剛開源的時(shí)候,借著Bigtable,Dynamo等知名存儲(chǔ)模型,那個(gè)時(shí)候國內(nèi)也有很多人研究應(yīng)用它。再后來就是2.0出來。相比于HBase,Cassandra更適合于實(shí)時(shí)事務(wù)處理(這兩者的對(duì)比,大家可以參考這篇HBase vs. Cassandra: NoSQL Battle!)。Netflix同學(xué)的分享開頭先提出了一個(gè)CDE(Cloud Database Engineering)的概念(在Netflix內(nèi)部,Responsible for providing data stores as services @ Netflix)。
而Cassandra在Netflix的體量大體上有上萬的節(jié)點(diǎn),PB的數(shù)據(jù)規(guī)模,每秒百萬的事務(wù)處理。面臨的挑戰(zhàn)也基本上圍繞在運(yùn)維監(jiān)控層面,產(chǎn)品的敏捷迭代。考慮到Cassandra的存儲(chǔ)模型(先記錄日志CommitLog,然后數(shù)據(jù)開始寫入到 Column Family 對(duì)應(yīng)的 Memtable 內(nèi)存中,在滿足一定條件時(shí),再把 Memtable 的數(shù)據(jù)批量的刷新到磁盤上,存儲(chǔ)為 SSTable ),監(jiān)控圍繞在延遲(主要和Coordinator相關(guān)),集群的健康狀況(如Gossip問題,Thrift服務(wù)狀態(tài),Dmesg等硬件情況,日志錯(cuò)誤等)。Netflix同學(xué)分享了它們的monitoring方案,不僅僅是快照,可以實(shí)時(shí)監(jiān)控成千上萬的節(jié)點(diǎn)和集群
接下來講了一堆Maintenance的工具,大體是是自己基于開源開發(fā)的一些運(yùn)維監(jiān)控,解決備份,故障恢復(fù),集中式配置管理,Token的自動(dòng)分發(fā)等。在接下來比較有意思的是它的開源工具Benchmarking工具
最后,把所有的一切Stitching it together,提出了它們的Cassandra服務(wù)架構(gòu)。
2、Apache Commons Crypto: Another wheel of Apache Commons
接下來的topic是“Apache Commons Crypto: Another wheel of Apache Commons”常見的密碼學(xué)原語都有哪些呢?
Apache Commons Crypto 是一個(gè)高性能的加密庫,使用 AES-NI (Advanced Encryption Standard New Instructions) 進(jìn)行優(yōu)化,通過JNI的形式封裝了OpenSSL。它的發(fā)展也比較有意思,早起被用在Hadoop(HDFS)加解密、編解碼體系中,有17+倍性能提升。后來Intel和Apache Commons社區(qū)合作,推出了Apache Commons Crypto工具,旨在收益其它大數(shù)據(jù)項(xiàng)目,如Spark等。Crypto提供了Low level Cipher API, Stream API, Random API。接下來分享了為什么要造這個(gè)輪子,既然有了JCE(Java Cryptography Extension)
而Crypto性能之高歸納起來,大致有這么幾點(diǎn)1. AES算法固化到硬件層面(Intel®AES-NI)。2 利用指令集的并行機(jī)制。最后,到底有哪些大數(shù)據(jù)組件使用了該算法呢?
3、InnerSource 101 and The Apache Way
接下來,由我們的導(dǎo)師Jim,也是Apache軟件基金會(huì)的 co-founder分享了InnerSource 101 and The Apache Way.
基本的原則有哪些,社區(qū)和代碼之間的關(guān)系如何?
關(guān)于社區(qū)的思考又是如何的? 總體上來講,Jim的分享還是讓我很受啟發(fā)的。雖然只是一些方法以及一些相對(duì)寬泛的原則性指導(dǎo)。但Apache 18年的歷史長河孕育了無數(shù)成功開源項(xiàng)目的經(jīng)驗(yàn),讓我欽佩不已。開源軟件的產(chǎn)品經(jīng)驗(yàn),社區(qū)孵化都可以反哺到我們的日常工作,甚至是商業(yè)包裝上來,關(guān)于這一點(diǎn),消息團(tuán)隊(duì)也在不斷探索,期待有一天能把我們的思考也分享出來。
4、NTT公司在IoT業(yè)務(wù)上采用Kafka踩過的10個(gè)大坑
接下來的主題,我們重點(diǎn)去聽了日本NTT DATA Corporation關(guān)于IoT的分享。說是IoT,其實(shí)用了大量篇幅在講Kafka作為連接服務(wù)器在大規(guī)模部署中遇到的問題以及解決方案。最近團(tuán)隊(duì)上線了Kafka服務(wù),通過和Apache RocketMQ的后臺(tái)服務(wù)打通,期間也踩了不少坑,做了很多改進(jìn)和優(yōu)化。大家如果有需求,歡迎來Aliware MQ官網(wǎng)來試試。
5、ActiveMQ Artemis 2.0
接下來是RedHat同學(xué)關(guān)于Artemis的分享,說實(shí)話我關(guān)注它很久了(主要是感興趣它的產(chǎn)品形態(tài))。原型是JBoss的HornetMQ,之前和Apache ActiveMQ做了融合,作為其子項(xiàng)目在Apache社區(qū)孵化。不過從這次的分享來看,2.1版本和ActiveMQ做了整合,如下圖:
從協(xié)議支撐來講,比Apache RocketMQ要豐富一些,也做了自己的線路層協(xié)議。用它自己的話來說是protocol agnostic。剩下的介紹了一些它內(nèi)部的異步存儲(chǔ)機(jī)制,高可用,傳輸層Netty的使用以及優(yōu)化等。說到這,要提下我們在做的OpenMessaging這個(gè)項(xiàng)目,Apache的MQ起初都是面向企業(yè)應(yīng)用的,在安全、異構(gòu)形態(tài)的支撐方面要更加擅長,在面對(duì)互聯(lián)網(wǎng)高并發(fā),大數(shù)據(jù)流量,海量終端在線領(lǐng)域還是有不少空缺的。我們經(jīng)常在講互聯(lián)網(wǎng)的趨勢,那下一個(gè)趨勢是什么呢?我們能不能成為趨勢的制造者,亦或者跟隨趨勢順勢而為,光想想這些問題就讓人激動(dòng)不已。好了,中間插播下廣告,阿里中間件(Aliware)消息團(tuán)隊(duì)招聘進(jìn)行中,希望我們都能“賭準(zhǔn)”下一個(gè)云計(jì)算趨勢,成為“弄潮兒”。
五、Day3第三天
1、How to Become an IoT Developer (and Have Fun!)
因?yàn)榻裉熘形缬形覀傾pache RocketMQ的分享,早上大家花了1個(gè)小時(shí)過了下場,打起百分之一百二的精氣神。接下來去會(huì)場聽了來自我們的導(dǎo)師Justin的分享How to Become an IoT Developer。在開篇,他介紹了自己跟IoT結(jié)下的梁子
接下來就是一堆物聯(lián)網(wǎng)趨勢已經(jīng)來臨之類的判斷,以及用軟件的思路去做硬件編程。在Arduino下的編程體驗(yàn)是什么樣的?
接下來Justin又分享了各種電子元器件,電路板等硬件設(shè)施的特點(diǎn)。有一些我自己都沒聽懂。最后,引用他結(jié)尾的PPT做一個(gè)總結(jié)。總結(jié)的非常精辟。沒錯(cuò),對(duì)于人生來說,確實(shí)一個(gè)很好的Journey(活到老,折騰到老,更是學(xué)到老。尤其像他這種工作20多年的Apachers)。我們還把中文的“老司機(jī)”(Old Driver)講給他聽,在Apache這個(gè)社區(qū)里,它確實(shí)是不折不扣的老司機(jī)。
2、Apache RocketMQ - Trillion Messaging in Practice
接下來,就是我們阿里中間件(Aliware)消息團(tuán)隊(duì)分享的話題--Apache RocketMQ – Trillion Messaging in Practice,令人振奮的是我們這個(gè)會(huì)場有視頻錄播,這對(duì)我們來說確實(shí)是一個(gè)福音。這樣我們回去就可以聽聽自己第一次的英文分享,便于總結(jié),有利于下次發(fā)揮的更好,和國際開源社區(qū)的交流更加流暢。非常巧的是,這個(gè)演講結(jié)束后,就有幾個(gè)韓國、印度和國外的華裔來問問題,可見英文在國際開源社區(qū)溝通中的重要性。
在分享過程中我們也介紹了阿里中間件(Aliware)商業(yè)產(chǎn)品的高級(jí)特性,旁邊的印度同學(xué)一直在問“這個(gè)…你們會(huì)開源嗎?”答案當(dāng)然是肯定的。不過這里面需要有策略,我們目前是有時(shí)間差的,內(nèi)核與擴(kuò)展,核心專利等多種有效機(jī)制,來保證我們在分享我們開源情懷胸襟的同時(shí),防止一些不“友好”的事情發(fā)生。開源商業(yè)化這種玩法,在國際科技巨擘里面屢見不鮮。像IBM這次會(huì)議就來宣傳他們的CouchBase和OpenWhisk商業(yè)版本。其它的如Pivotal,RedHat等就更不必說了。
3、CloudStack Collaboration Conference
再接下來,去CloudStack分會(huì)場去兜了圈,CloudStack這次能夠作為四場Mini峰會(huì)之一去舉辦,可見其在Apache基金會(huì)下發(fā)展的勢頭是多么良好。前幾年,國內(nèi)OpenStack大行其道,中國社區(qū)的各種meetup搞的也是風(fēng)生水起。很多公司,像華為,網(wǎng)易也有專職的崗位去做這塊。而和它相對(duì)的CloudStack國內(nèi)知曉的人不多,而CloudStack最大優(yōu)勢就在于apache基金會(huì)的管理,這是保證CloudStack能持續(xù)有生命力的關(guān)鍵。Apache基金會(huì)的管理中,很重要的一點(diǎn)是社區(qū)高于代碼。Apache基金會(huì)關(guān)注社區(qū)的建設(shè),項(xiàng)目本身的代碼質(zhì)量會(huì)因?yàn)樯鐓^(qū)的繁榮得到改善,社區(qū)也是項(xiàng)目有生命力的關(guān)鍵。我自己本身對(duì)于這塊的踐行比較少,所以這塊就一筆帶過。最近也在計(jì)劃花點(diǎn)時(shí)間去研究下這塊,希望能給我們的私有云,公有云大規(guī)模部署運(yùn)維帶來一些啟發(fā)。
六、Day4-第四天
1、Apache httpd 2.4新功能和性能現(xiàn)狀
上午主要去聽了HTTP 2.4,HTTP/2相關(guān)的一些Topic。主要想解下Apache Server對(duì)于Nginx的競爭如何發(fā)展,以及HTTP2目前的生產(chǎn)實(shí)踐效果。
這里的測試都是基于本地的靜態(tài)網(wǎng)站以及反向代理,所有的配置也幾乎都是out-of-the-box的。由此可見Apache Server 2.4的Event MPM模型已經(jīng)有很不錯(cuò)的吞吐性能。至于孰優(yōu)孰劣,做過性能測試的同學(xué)都知道,沒有benchmark一切都是沒有信服力的。大家還是看看這些截圖,僅做參考,實(shí)際的流量特性,分布也和測試是完全不同。
去年阿里中間件(Aliware)消息團(tuán)隊(duì)研發(fā)的MQ中繼產(chǎn)品也利用了HTTP2高性能、防火墻友好、安全特性等,實(shí)現(xiàn)跨網(wǎng)絡(luò),跨云基礎(chǔ)實(shí)施的通訊。在實(shí)現(xiàn)過程中也對(duì)HTTP2進(jìn)行了簡單的探尋研究,為此提出了降級(jí)的MVP自由線路層協(xié)議,防止HT先·TP2的基礎(chǔ)設(shè)施對(duì)硬件限制。通過跟蹤Netty HTTP2模塊代碼,也發(fā)現(xiàn)了不少問題。在這塊有研究的同學(xué),歡迎和我們交流。
2、OpenWhisk和IoT話題
最后讓我們以O(shè)penWhisk的topic為尾。OpenWhisk幾乎是和RocketMQ同時(shí)期(IBM捐贈(zèng))進(jìn)入Apache的。我對(duì)它的印象還比較深,在Apache董事會(huì)需要審核的月報(bào)里,我都會(huì)留意它的報(bào)告。一開始聲稱是一個(gè)Gateway解決方案,到現(xiàn)在已經(jīng)朝Serverless framework發(fā)展了。
接下來開始介紹它們的商業(yè)化解決法方案Bluemix:
最后的提問環(huán)節(jié),有外國友人提到是否有機(jī)會(huì)集成ActiveMQ作為Event Provider,IBM的同學(xué)順口還提了Apache RocketMQ也在它們的考慮范圍,看來這次Apache RocketMQ北美之旅不虛此行哈。
七、大會(huì)總結(jié)
4天的燒腦時(shí)間就這樣嗖的過去了,是時(shí)候收斂并總結(jié)一下這次ApacheCon的參會(huì)感受了。
1. 和開篇呼應(yīng)下,ApacheCon的主要參會(huì)人員大部分是全球各種Apache項(xiàng)目的Committer,都是貨真價(jià)實(shí)的一線Coder。整體會(huì)議的技術(shù)含量較高,但同時(shí)也影響了其參會(huì)觀眾的規(guī)模。20多人的小會(huì)場很難看到滿員的情況,這要是放在國內(nèi),100人的場地應(yīng)該都可以爆滿(從前年的Apache亞洲路演來看)。從這個(gè)角度來講,我們的軟件行業(yè)對(duì)Apache這個(gè)品牌還是非常認(rèn)可的。
2. 亞裔參會(huì)人員不少,國內(nèi)參會(huì)的同學(xué)集中在Intel,EMC,Ebay,華為和阿里巴巴。從一定程度看到了公司的政策傾向,受此影響不斷創(chuàng)新自研出一些可以影響全球的產(chǎn)品的意愿也越來越強(qiáng)。我們的近鄰日本的開發(fā)者來作分享的也不少。從這點(diǎn)來看,我們國家的軟件行業(yè),至少是FOSS層面慢慢地走上了正軌。
3. 全球軟件行業(yè)中,開源商業(yè)化的趨勢非常明顯。所有的Apache基金會(huì)旗下的開源軟件,放眼望去,背后幾乎都有商業(yè)化公司在運(yùn)作。這也是這些年從Linux這種早期開源商業(yè)化模式中不斷驗(yàn)證出來的盈利模式??蛻魧?duì)于這種后付費(fèi)的產(chǎn)品,Apache品牌效應(yīng)更為認(rèn)可。
4. 拉回現(xiàn)實(shí),就像之前強(qiáng)調(diào)的那樣,捐贈(zèng)RocketMQ是非常積極的第一步,我們的產(chǎn)品在易用性,穩(wěn)定性等方面距離我們心里的那個(gè)“第一”還有一定差距,我們需要更加清醒的認(rèn)識(shí)到這點(diǎn)。我們要按照既定節(jié)奏穩(wěn)扎穩(wěn)打,做一樣精一樣,將國外那種嚴(yán)謹(jǐn),工匠精神貫徹到底,相信我們的開源軟件產(chǎn)品一定可以帶來不同的體驗(yàn)。
【本文為51CTO專欄作者“阿里巴巴官方技術(shù)”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】