阿里手持50萬獎金等你处渣,是時候展示真正的技術(shù)了伶贰!

對于程序員來說,什么才最為重要

?一筆高達(dá)50萬的巨額獎金罐栈?

?一個和千萬程序員一同賽跑的游戲黍衙?

?一次挑戰(zhàn)雙11萬億級服務(wù)調(diào)用的機(jī)會?

場主認(rèn)為荠诬,敲碼路上琅翻,我們所追求的是不斷進(jìn)階的自我提升!

4月26號柑贞,2018云棲大會南京峰會上方椎,阿里巴巴研究員林昊正式發(fā)布了第四屆阿里中間件性能挑戰(zhàn)賽。

這是首次把賽題設(shè)置在開源背景上钧嘶,旨在讓更多技術(shù)開發(fā)者參與其中棠众。

挑戰(zhàn)賽以開源項目為背景,核心技術(shù)為Dubbo和RocketMQ有决,目的是通過大賽向技術(shù)愛好者們傳達(dá)開源精神闸拿。

林昊在發(fā)布中表示,“對于開發(fā)人員來講书幕,很多工作都使用了開源的東西胸墙,開源對整個世界也產(chǎn)生了非常大的影響。對阿里來講也同樣按咒,阿里巴巴也同樣使用了開源的軟件,在這個過程中但骨,我們結(jié)合阿里的場景励七,對整個開源的產(chǎn)品進(jìn)行了很多的改進(jìn),也不斷開始回饋到社區(qū)奔缠÷犹В”

而且!此次大賽還收到了JimJagielski (Apache基金會聯(lián)合創(chuàng)始人)的祝福哦P0ァA讲ā瞳步!

感興趣的同學(xué)可以直接長按以上二維碼或戳中以下鏈接進(jìn)行報名了!

https://tianchi.aliyun.com/markets/tianchi/aliware2018contest?spm=5176.100065.5490641.1.31fe67b7UN1OQ0(若未能跳轉(zhuǎn)腰奋,煩請復(fù)制鏈接至瀏覽器打開)


從2017年起单起,阿里巴巴開源的步伐正在加速。

2017年9月劣坊,RocketMQ在Apache畢業(yè)嘀倒,成立了Apache頂級項目(TLP)。

10月份局冰,OpenMessaging發(fā)布测蘑,分布式消息中間件、流處理領(lǐng)域的應(yīng)用開發(fā)標(biāo)準(zhǔn)康二,目前已正式入駐Linux基金會碳胳,這也是國內(nèi)首個在全球范圍內(nèi)發(fā)起的分布式消息領(lǐng)域國際標(biāo)準(zhǔn)。

11月沫勿,社區(qū)突然熱鬧起來挨约,Dubbo快速更新,引發(fā)了非常廣泛的關(guān)注藕帜。

今年烫罩,Dubbo進(jìn)入了Apache,目前正在孵化期洽故。

Apache基金會聯(lián)合創(chuàng)始人 Jim Jagielski?表示:“ Apache頂級項目RocketMQ是一個極其強(qiáng)大且具有變革性的軟件項目贝攒,眾多公司都是它的深度用戶。Dubbo目前正在Apache軟件基金會內(nèi)孵化时甚,具有巨大的潛力隘弊。”

賽題深度解析

賽題解析

了解 Dubbo 的朋友們都知道荒适,Dubbo不僅僅是一款高性能的 RPC 通訊框架梨熙,更是一套完整的微服務(wù)解決方案——服務(wù)注冊與發(fā)現(xiàn)、負(fù)載均衡刀诬、服務(wù)治理等咽扇,這些都是我們耳熟能詳?shù)哪芰Α5?Dubbo 也有著天然的不足陕壹,初賽的題目便由此而來质欲。

初衷

Dubbo 一直致力于為 Java 應(yīng)用提供高效、穩(wěn)定和可用于生產(chǎn)環(huán)境的RPC通訊能力糠馆。在不使用 RESTful 接口的情況下嘶伟,用戶很難將 Dubbo 與其它語言實(shí)現(xiàn)的系統(tǒng)對接起來。

因此本次比賽將打破語言的藩籬又碌,參賽團(tuán)隊可以盡情選取你最中意的技術(shù)九昧,主流的也好绊袋,非主流的也罷——We don't care——讓 Dubbo 在多語言的方向上邁出第一步。

“ 提到 Dubbo 就不能不說微服務(wù)铸鹰,而言及微服務(wù)就一定有 Service Mesh 的一席之地癌别。”

傳統(tǒng)的微服務(wù)向我們展現(xiàn)了服務(wù)化的未來藍(lán)圖掉奄,也提供了諸多方法論和最佳實(shí)踐指導(dǎo)我們完成架構(gòu)的變革规个。但是顯然實(shí)施過微服務(wù)的朋友們都一定清楚,這是一個異常復(fù)雜且充滿了不確定性的改造過程姓建。

將單體系統(tǒng)剝離诞仓、引入服務(wù)化組件(如果 Dubbo 不是你的第一選擇,你更有理由關(guān)注本次比賽了)速兔、將內(nèi)部調(diào)用轉(zhuǎn)化為遠(yuǎn)程調(diào)用墅拭、解決因?yàn)檎{(diào)用遠(yuǎn)程化和分布化而帶來的各種次生問題(網(wǎng)絡(luò)問題、安全問題涣狗、狀態(tài)管理問題谍婉、一致性問題等等)。

在擁有復(fù)雜系統(tǒng)的組織內(nèi)部镀钓,這樣的改造不亞于夢魘穗熬。想想看要把各種不標(biāo)準(zhǔn)的 Java 應(yīng)用、PHP 應(yīng)用丁溅、Python 應(yīng)用等全部打通且服務(wù)化唤蔗,不是你在做夢,就是客戶在做夢窟赏。

可這樣的夢境就是我們要面對的現(xiàn)實(shí)妓柜,而Service Mesh 無疑是夢境架構(gòu)師遞給你的一根救命稻草。簡言之涯穷,Service Mesh 另辟蹊徑棍掐,在不深入服務(wù)內(nèi)部的情況下,以 Agent 的形式與服務(wù)共生拷况,并由 Agent 提供一切微服務(wù)所需要的能力作煌。

正如其名稱所揭示的那樣,Service Mesh 就如同一張網(wǎng)格赚瘦,將各種服務(wù)網(wǎng)羅在其下最疆。這次初賽的題目就是希望參賽選手編寫一個高性能的 Agent 實(shí)現(xiàn),讓 Dubbo 融入 Service Mesh 這張大網(wǎng)蚤告。

場景

在本次比賽中,并不需要實(shí)現(xiàn)一套完整的Service Mesh 框架服爷,因此我們對場景進(jìn)行了限定杜恰。

得益于 Docker 提供的容器化能力获诈,讓我們可以很方便的模擬出想要的場景。如圖所示心褐,整個場景由 5 個 Docker 實(shí)例組成(藍(lán)色的方框)舔涎,分別運(yùn)行了 etcd、Consumer逗爹、Provider 服務(wù)(綠色的方框)和 Agent 代理(紅色的圓圈)亡嫌。

Provider 是服務(wù)提供者,Consumer是服務(wù)消費(fèi)者掘而,Consumer 消費(fèi) Provider 提供的服務(wù)挟冠。Agent 是 Consumer 和 Provider 服務(wù)的代理,每個 Consumer 或 Provider 都會伴隨一個共生的 Agent袍睡。etcd 是注冊表服務(wù)知染,用來記錄服務(wù)注冊信息。

從圖中可以看出斑胜,Consumer 與 Provider 之間的通訊并不是直接進(jìn)行的控淡,而是經(jīng)過了 Agent 的中轉(zhuǎn)。這看似多余的一環(huán)止潘,卻在 Service Mesh 的架構(gòu)中扮演著舉足輕重的角色掺炭。

首先,Agent 需要實(shí)現(xiàn)負(fù)載均衡的能力凭戴。在圖中涧狮,藍(lán)色方框的大小代表了容器的性能。我們可以發(fā)現(xiàn)簇宽,一個Consumer 實(shí)例的性能是三個Provider 實(shí)例性能的總和勋篓,而且三個 Provider 的性能又是以1:2:3的比例分配的。假如整個系統(tǒng)性能是60魏割,則 Consumer 占30譬嚣,Provider(small) 占 5,Provider(medium) 占10钞它,Provider(large) 占15拜银。因此任何一個 Provider 服務(wù)的性能都比 Consumer 要小,Agent 必須做到負(fù)載均衡才能保證任意一個 Provider 服務(wù)不會被壓垮遭垛。

第二尼桶,Agent 需要實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)的能力。服務(wù)注冊與發(fā)現(xiàn)是微服務(wù)的核心能力锯仪,Consumer Agent 具體要訪問哪一個 Provider Agent 不是在配置文件中寫死的泵督,而是動態(tài)發(fā)現(xiàn)的。簡單來說庶喜,當(dāng)Agent 啟動的時候小腊,需要將自己的信息寫入 etcd 注冊表救鲤,在服務(wù)調(diào)用發(fā)生的時候,再從 etcd 中讀取相關(guān)的注冊信息秩冈,這個過程就是最簡單的服務(wù)注冊與發(fā)現(xiàn)本缠。

第三,Agent 需要實(shí)現(xiàn)協(xié)議轉(zhuǎn)換的能力入问。Service Mesh 的一大特色就是可以實(shí)現(xiàn)不同語言丹锹、不同框架、不同協(xié)議間服務(wù)的互聯(lián)互通芬失,靠的就是其協(xié)議轉(zhuǎn)換的能力楣黍。在比賽設(shè)定的場景中,Consumer 使用 HTTP 協(xié)議麸折,而 Provider 使用 Dubbo 協(xié)議锡凝,在沒有 Agent 幫助的情況下,他們之間是無法通信的垢啼。

作為 Service Mesh Agent窜锯, 其實(shí)還有很多可以實(shí)現(xiàn)的功能,如流量控制芭析、服務(wù)降級或熔斷锚扎、安全認(rèn)證等等,但以上三點(diǎn)是本次比賽必須做到的能力馁启,其他能力不做要求驾孔。

另外我們還要考慮 Agent 的通用性,一個不具有通用性的 Agent 是沒有商業(yè)價值的惯疙。除此之外翠勉,?Agent 占用的系統(tǒng)資源應(yīng)該盡量小,而且不和共生的服務(wù)爭搶資源霉颠,否則“皮之不存对碌,毛將焉附”。如果服務(wù)失去了響應(yīng)蒿偎,那么 Agent 的性能再好也沒有存在的意義了朽们。

跑分

跑分環(huán)境是由一臺 4 核 8G 的施壓機(jī)和一臺 8 核 16G 的被壓機(jī)組成。所有 5 個 Docker 實(shí)例均運(yùn)行在被壓機(jī)上诉位。每個項目的每一次跑分會獨(dú)占一臺被壓機(jī)骑脱。流程大致如下:

1.準(zhǔn)備跑分環(huán)境,創(chuàng)建并鎖定工作區(qū)

2.根據(jù)提交的地址苍糠,從鏡像倉庫中拉取鏡像

3.驗(yàn)證 Provider叁丧、Consumer 及啟動腳本文件的簽名,以妨被篡改

4.啟動 etcd 實(shí)例,并驗(yàn)證服務(wù)可用性

5.啟動三個 Provider 實(shí)例歹袁,并驗(yàn)證服務(wù)可用性

6.啟動 Consumer 實(shí)例坷衍,并驗(yàn)證服務(wù)可用性

7.以最高并發(fā)數(shù)對系統(tǒng)進(jìn)行預(yù)熱

8.分若干次不同的壓力水平,對系統(tǒng)進(jìn)行壓力測試条舔,并記錄 QPS 值

9.取最優(yōu)的 QPS 作為最終的跑分結(jié)果,并上報給天池系統(tǒng)

10.按順序依次停止 Consumer 實(shí)例乏矾、三個 Provider 實(shí)例和 etcd 實(shí)例

11.清理 Docker 實(shí)例及鏡像

12.收集日志并上傳到 OSS

13.解鎖工作區(qū)孟抗,清理環(huán)境

因?yàn)?b>本屆比賽不限語言、不限技術(shù)钻心,因此需要一種手段對選手的運(yùn)行環(huán)境進(jìn)行隔離凄硼。借助 Docker 鏡像,參賽選手可以隨意安裝運(yùn)行時環(huán)境捷沸、添加組件庫摊沉、并定制 Agent 的啟動腳本。

但需要注意的是:

“ 因?yàn)?Provider 和 Consumer 服務(wù)與 Agent 是共生的痒给,因此他們都是被打到同一個 Docker 鏡像中的说墨。”

我們在賽題設(shè)計的時候已經(jīng)對代碼進(jìn)行了充分的隔離苍柏,以保證選手只需要關(guān)注賽題允許修改的部分——與 Agent 有關(guān)的內(nèi)容尼斧。

但不管怎樣,由于構(gòu)建 Docker 鏡像的主動權(quán)在大家手里试吁,就勢必會有篡改 Provider 和 Consumer 及其啟動腳本的可能性存在棺棵。

所以,本著公平的原則熄捍,在跑分流程中增加了對相關(guān)文件驗(yàn)證簽名的過程烛恤,如果簽名不通過,將失去本次評測機(jī)會余耽。

優(yōu)化

因?yàn)閮?yōu)化過程是本次比賽關(guān)注的重點(diǎn)缚柏,因此不能做過多的展開,僅僅提供幾個參考的方向宾添。

1.使用協(xié)程船惨。協(xié)程可以理解為輕量級的線程,可以節(jié)約因?yàn)榫€程切換而造成的性能損失缕陕。

2.使用異步通訊粱锐。Agent 與 Agent 之間的通訊機(jī)制完全由選手自行控制,采用非阻塞的異步通訊機(jī)制可以有效提高系統(tǒng)性能扛邑。

3.使用緩存怜浅。合理緩存響應(yīng)結(jié)果,當(dāng)相同的請求再次到來的時候,調(diào)用鏈可以不必經(jīng)過系統(tǒng)中的每一個節(jié)點(diǎn)恶座,從而盡快返回搀暑。

以上分別從賽題初衷、應(yīng)用場景跨琳、跑分環(huán)境與過程以及少許優(yōu)化方向的角度自点,對本屆比賽的題目進(jìn)行了簡單的剖析,希望對即將參加比賽的親們能有所幫助脉让。在此預(yù)祝各位參賽選手能取得優(yōu)異的成績桂敛,進(jìn)軍復(fù)賽和總決賽。

注:阿里中間件性能挑戰(zhàn)賽是由阿里巴巴集團(tuán)發(fā)起溅潜,阿里巴巴中間件术唬、阿里云天池聯(lián)合承辦的工程視角品牌賽事。自2015年開始已經(jīng)成功舉辦了三屆滚澜。

賽事的初衷是為熱愛技術(shù)的年輕人提供一個挑戰(zhàn)世界級技術(shù)問題的舞臺粗仓,希望選手在追求性能極致的同時,能深刻體會技術(shù)人的匠心精神设捐,用技術(shù)為全社會創(chuàng)造更大價值借浊。

大賽報名通道,點(diǎn)擊即可進(jìn)入挡育,是時候展現(xiàn)真正的技術(shù)了巴碗!

https://tianchi.aliyun.com/markets/tianchi/aliware2018contest?spm=5176.100065.5490641.1.31fe67b7UN1OQ0(若未能跳轉(zhuǎn),煩請復(fù)制鏈接至瀏覽器打開)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末即寒,一起剝皮案震驚了整個濱河市橡淆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌母赵,老刑警劉巖逸爵,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凹嘲,居然都是意外死亡师倔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門周蹭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趋艘,“玉大人,你說我怎么就攤上這事凶朗〈呻剩” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵棚愤,是天一觀的道長搓萧。 經(jīng)常有香客問我杂数,道長,這世上最難降的妖魔是什么瘸洛? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任揍移,我火速辦了婚禮,結(jié)果婚禮上反肋,老公的妹妹穿的比我還像新娘那伐。我一直安慰自己,他們只是感情好石蔗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布喧锦。 她就那樣靜靜地躺著,像睡著了一般抓督。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上束亏,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天铃在,我揣著相機(jī)與錄音,去河邊找鬼碍遍。 笑死定铜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怕敬。 我是一名探鬼主播揣炕,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼东跪!你這毒婦竟也來了畸陡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤虽填,失蹤者是張志新(化名)和其女友劉穎丁恭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斋日,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牲览,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恶守。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片第献。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兔港,靈堂內(nèi)的尸體忽然破棺而出庸毫,到底是詐尸還是另有隱情,我是刑警寧澤押框,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布岔绸,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盒揉。R本人自食惡果不足惜晋被,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刚盈。 院中可真熱鬧羡洛,春花似錦、人聲如沸藕漱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肋联。三九已至威蕉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間橄仍,已是汗流浹背韧涨。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侮繁,地道東北人虑粥。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像宪哩,于是被迫代替她去往敵國和親娩贷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理锁孟,服務(wù)發(fā)現(xiàn)彬祖,斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 前言 基于 Docker 的容器技術(shù)是在2015年的時候開始接觸的罗岖,兩年多的時間涧至,作為一名 Docker 的 De...
    Java架構(gòu)閱讀 8,663評論 2 144
  • 世界是一 個圖書館,每個人都是一本書桑包。我喜歡讀那些好書南蓬。一本好書是一個朋友,一個朋友更是一本好書哑了。書有多少種赘方,朋友...
    奧巴龍閱讀 211評論 0 3
  • 風(fēng)雪交加的冬天 思緒在茫茫宇宙間跳躍 回憶過去 挫折的不期而至 泥濘道路的層層疊疊 好似能擊碎人生的所有 但青春的...
    白豐閣閱讀 171評論 5 7
  • 一. JQueryMobile jQuery Mobile is a HTML5-based user inter...
    我不叫奇奇閱讀 556評論 0 2