閱讀128 返回首頁    go 阿裏雲 go 技術社區[雲棲]


“三淘”和阿裏雲成長經曆:千萬不要挑活,記訪談阿裏雲專家子嘉

《沉澱》是雲棲社區品牌欄目,在品味技術人百味人生的同時,也能夠幫助你沉澱技術,獲得點撥。工作中,如果有不錯的大牛讓你受益匪淺,也歡迎通過電子郵件(lose.zy@alibaba-inc.com)推薦采訪,讓更多人受益。我們的想法是:“如果你覺得某個技術挺棒的,不妨品味這些技術人背後的沉澱。”

1.畢業之後從事搜索引擎工作,曾經負責三淘的搜索業務(淘寶 天貓 一淘);

2.搜索對穩定性和延遲的要求非常高,所以會有機會碰到各種問題,比如超時、抖動等等,在解決這些問題的過程中積累了大量經驗也結識了很多人;

3.後來覺得雲計算在這塊會有更大的發揮空間,所以來了阿裏雲;

4.解了RDS全鏈路上的很多重大的穩定性問題,如慢內存、erlang虛擬機調度不均衡、iohang等問題,同時也幫客戶解了很多自身的問題,從而挽留住了很多客戶;

5.將這些專家知識沉澱成天象係統,利用天象的數據再去驅動解決更多問題;

6.在RDS期間也將沉澱的很多搜索知識與數據庫相結合,探索出更多的產品形態,如PetaData+Sphinx;

7.隨著對產品、技術、團隊理解的加深,接手OCS和KVStore的工作;

8.後續我們會如何發展KVStore/Redis,參與社區建設、專注於內核、根據客戶需求推出更多豐富的產品形態;

9.NoSQL產品對延遲要求很高,而且是一個客戶的生命線,如何在業務飛速發展時給係統換輪胎,如何帶團隊探索更多的可能性;

10.對團隊的要求是做事情要麼不做,要做就要做到業界領先,不然對不起那麼好的機會和客戶的信賴.

1
圖:子嘉認為,隻要不退縮,一切問題都會有答案

雖然和子嘉一直是在線上溝通,從來沒有見過麵,但給我的感覺,他是一個很為人著想的人。技術一般都很忙,尤其是帶團隊的技術人,然而麵對郵件采訪前的準備,他一直很耐心地回複我種種疑惑。他很為人著想,怕自己太忙忘記回複,主動說起“記得提醒我”,甚至他還細心地整理了上述素材,供我靈活組織。

子嘉是一個很喜歡挑戰的人。因為挑戰,他一開始就選擇做搜索引擎;因為挑戰,在擁有五年工作經驗後轉型到阿裏雲。那時的阿裏雲還是一個“大工地”,有太多的東西需要建設,有太多挑戰需要去麵對,但他很自信,“如果你覺得這是一種信仰並堅信一定能行,其它的一切都不足為慮。”他說。

郵件采訪中,子嘉著重分享了他在工作上的一些信念。他認為,平時努力工作就是對未來最好的準備。麵對一些技術難題,他堅信:“隻要不退縮,一切問題都會有答案。無論多難的問題,都應該給自己設立一個期限,然後提著頭就上。”

當然,他過去也有一些局限,看到每天都有人會問出同樣的問題,並且對同一個人解釋多次,也會有些生氣。當他突破這種局限,發現自己狹隘後,一個天象係統出來了,這個孕育出的產品和達成的效果都給他和他的大團隊帶來了很大的驚喜。

子嘉先後接觸過搜索、雲計算、Redis、NoSQL等技術,在這些領域不僅做的很好,還有所創新,他是如何做到的?他說,不挑活、勤思考、肯擔當,工作就是最好的學習途徑,“記住千萬不要挑活,有的同學覺得這個活沒有技術含量,那個活沒有前途,但是就沒想過這些‘沒技術含量’的活都做不好,怎麼能去幹那些有技術含量的活呢?”他很篤定,今天種下的種子在未來的一天終會發芽。

對於成長經曆,除了上麵的“不挑活”,他還總結了另外九字:勤思考、多總結和肯擔當。“勤思考,幹活的時候多抬頭看看天,看看方向;多總結,很多人偏於執行而疏於規劃,這種習慣會造成中長期的悲劇,我自己也曾經犯過這個錯誤,交了很多學費;肯擔當,要努力讓自己成為團隊中可以依賴的人,不要讓自己成為可有可無的人,逃避責任隻會讓自己越來越被動。”

以下是本期嘉賓采訪內容

阿裏“一麵”被拒

雲棲社區:請介紹下自己以及所從事的工作。

子嘉:我真實姓名叫蔡鬆露,2009年碩士畢業於上海交通大學,到阿裏工作已有7年多。目前主要負責阿裏雲的雲數據庫Memcache(原OCS)和雲數據庫Redis(原KVStore)產品。

雲棲社區:一開始為什麼會選擇走搜索引擎的道路?

子嘉:主觀上當時覺得搜索引擎對工程和算法的挑戰都非常大,我喜歡這種挑戰;客觀上當年金融危機,職位真心不多,HC也少,沒得選擇。

雲棲社區:麵試阿裏的過程順利嗎,有沒有特別有意思的事分享一下?

子嘉:不算順利,麵試了兩次,第一次應該是表現不好被默拒了。

第二次是補招,由於麵試地點比較遠我就不想去了,被兩個平時一起玩的同學攛掇著過去的,後來的過程就比較順利了,麵試我的是我後來的師兄和主管桂南,攛掇我的兩個同學也和我一起來到了那時的淘寶搜索團隊。

雲棲社區:五年的淘寶、天貓、一淘搜索業務有什麼收獲和心得?

子嘉:

收獲還是非常多的,從技術、管理到對業務和產品的規劃中都學到了很多:

2009年整個淘寶係處於業務飛速發展的時期,當時起了大量的項目,我從那時開始做了大量的項目管理的工作。項目管理貌似瑣碎複雜,但是又有中心和原則,有很多硬性的指標如質量和計劃,也有很多需要柔性去處理的風險和衝突,對管理能力和執行力是一種很好的鍛煉。

在做項目管理的過程中為了不使技術荒廢,最開始的時候我會爭取了解每一塊技術的架構和細節——當然也是為了能夠做到掌控全局。不過,當項目越來越大的時候,你隻能去依賴和信任你的隊友。

對於工程師來說技術還是安身立命所在,但是每個工程師又是需要一定的項目管理經驗的,不然很多事情沒法開展和落地。項目管理段位太多,從1到10其實你自己都不一定知道處於哪個段位,技術沒做好項目管理段位又不高,練了一身四不像的本事是一件自毀前程的事情,你會發現上不去下不來,就那麼浮著很尷尬。其實判斷自己的段位也很簡單,人都是普遍高估自己,但是和比你優秀的人比一下就知道了,所以我對大家的建議是:起碼要做透做深技術,項目管理經驗是必要的,向比你優秀的人學習(看起來很大一鍋雞湯……)。

另外搜索對數據的理解和運營也是比較深厚的,在這裏你能看到各種各樣的數據,也養成了我日後用數據說話的習慣。

當然也犯了很多錯誤,還好大家都比較包容我,我的老板和大老板都給予了我很大的支持和信任。

雲棲社區:能談談電商行業的搜索業務和常規的搜索引擎(如百度)有什麼區別嗎?

子嘉:還是有很大區別的,搜索引擎的核心是理解、發現並精確匹配用戶的需求,但是電商搜索引擎在滿足這一點的基礎上,還要兼顧流量的公平性和效率的問題,為了維持生態的健康和繁榮,有時還要對抗“馬太效應”這種自然規律,需要tradeoff很多東西,而且你的每一個動作都會影響到很多人的生活,想到這一切都不輕鬆。

“平時努力工作就是對未來最好的準備。”

雲棲社區:從事了五年搜索引擎工作之後,為什麼要投身於雲計算大潮?

子嘉:其實我一直都在關注雲計算,也一直在關注各種資訊和王博士對於雲計算的各種思考和客戶案例。從看不懂到看不清再到後來覺得這東西有點意思,慢慢地自己在這方麵也有一些思考,到最終成為一種信仰,我覺得這東西一定能行。

雲棲社區:雲計算的發展已經經過一個階段,在這個階段轉型是否有什麼顧慮?周圍的人當時是怎麼看待你這個決定的?

子嘉:如果你覺得這是一種信仰並堅信一定能行,其它的一切都是不足為慮的。

我加入的時候雲計算剛剛走出泥潭,往滿了說也就是剛有起色,整個阿裏雲還是一個大工地,有太多的東西需要建設,有太多挑戰需要我們去麵對,有太多用戶的期待需要你去完成;別人怎麼看你並不重要,關鍵是你怎麼看你自己,而且當你自己想清楚了之後,你周圍的人包括你的老板都會尊重你的這個決定。

雲棲社區:轉型之路是否順利?為了順利轉型,你都做了哪些努力?

子嘉:挺順利的,沒有為轉型做過什麼特別的準備,隻要平時努力工作就是對未來最好的準備。

值得一提的是在過去的五年中我在搜索引擎、分布式係統和底層上有了一些積累,而這些積累和雲計算相關的挑戰比較match,我也很喜歡去解集團各種各樣的無頭懸案,在這個過程中也有幸結識了未來的老板褚霸——江湖人稱霸爺,所有的這些機緣巧合也算是努力的一種結果。

技術:隻要不退縮一切問題都會有答案

雲棲社區:你到RDS團隊之後,解決了很多重大的穩定性問題,比如慢內存、erlang虛擬機調度不均衡、iohang等,其中,你對哪個最有成就感?哪個前後曆時最久?請談談過程和技術細節。

子嘉:有了之前的那些積累,解起這些問題來雖然有些挑戰,但也算輕車熟路了,而且最關鍵的是在這個過程中你的信心會被慢慢建立起來,我堅信隻要不退縮,一切問題都會有答案。無論多難的問題,都要給自己設立一個期限,然後提著頭就上。

比較有成就感的,比如erlang虛擬機調度器坍塌問題,困擾業界也很久了,大家也不知道問題出在哪裏,生產環境也一直在報警還不能動,沒辦法隻有硬著頭皮上,最終給出解決方案也得到了社區的認可(過程參考這裏 https://erlang.org/pipermail/erlang-questions/2014-November/081563.html);

時間最久的算是iohang了,因為這不是一個技術點的問題而是一個體係的問題,所以解起來周期比較長。

雲棲社區:在RDS期間你還將搜索知識與數據庫相結合,探索出更多的產品形態,如PetaData+Sphinx,在這個過程中有沒有遇到困難?都是如何解決的?

子嘉:當時是有一個時間序列日誌數據庫的需求,為了降低成本,要滿足很多苛刻和變態的限製條件,而且還不能降低用戶體驗。

我做了很多調研和選型,最終決定用PetaData+Sphinx的方式,原生的Sphinx無法處理那麼大的索引數據量,對於實時流式的數據處理也有很多限製,我利用在搜索上的積累對整個架構做了大量的改造,並最終滿足產品和成本的需求,挑戰還是很大的。

雲棲社區:你還將專家知識沉澱成天象係統,利用天象的數據驅動解決了很多問題,請介紹下什麼是天象係統?為什麼要打造這樣的係統?

子嘉:當時霸爺(褚霸)和鳴嵩都有一個共識,要利用數據去回答,並解決我們係統中存在的問題,這算是天象的萌芽。圍繞著這個目標隻要是對這個目標有益的我們都去做,我們積極地去收集各種數據,然後將各種數據串聯起來,並在不同維度上對這些數據進行整合分析,最終孕育出的產品和達成的效果都給我們帶來了很大的驚喜。

做天象本身也是我自己成長和涅槃的一個過程,我積累了很多專家知識,但是這些知識僅限於我自己知道,我又比較懶,懶得寫文章去宣傳,所以我會看到每天都有人會問出同樣的問題。往往我對同一個人解釋一次,過段時間他又來問了,開始還有些生氣,後來我在做天象時突然意識到自己曾經是那麼狹隘,為什麼不直接用係統告訴大家發生了什麼呢?

所以從那時開始我會把所有解過的問題寫到天象代碼中,把所有之前回答問題的時間都用在了寫代碼沉澱上,希望這些技術能夠普惠更多開發者和客戶。

“記住千萬不要挑活”

雲棲社區:請分析下Redis優劣吧?

子嘉:Redis是一款非常優秀的開源緩存類產品,遵循著簡單的設計哲學,這種哲學讓Redis獲得了極大的成功。

當然任何事情都是兩麵的,很多簡單的處理方式也帶來了一些問題,比如fork、aof rewrite等問題,我們也在著力去解這些問題。

雲棲社區:你認為什麼樣的架構或什麼類型適合用Redis?

子嘉:緩存、KV持久化存儲、隊列服務等等,無法一一枚舉,總之勞動人民的智慧有多少Redis可用的場景就有多少。

雲棲社區:Redis的性能受製於哪些因素?順便分享下Redis上的一些優化心得吧?

子嘉:前麵講到的fork、aof rewrite、keys枚舉、弱網環境下主備同步等問題,我們針對這些問題也在做一些優化,心得就是上雲之後一切簡單的東西都會變得複雜,怎麼將這些複雜的東西簡單地呈獻給用戶是我們要思考的。

弱網環境下主備同步這個問題,原生的同步協議在斷網時間過長的時候backlog同步會失效,slave重連master會觸發dump rdb的操作。當實例比較多的時候這對主機和整個機房的帶寬都是一個災難,很容易出現機房斷網恢複之後又馬上被打死的重大故障,我們的優化就是如果同步走backlog,失效的時候走aof同步,不用做dump rdb——當然這個地方也是做了大量的優化。

雲棲社區:遇到Redis訪問異常,你的常規分析思路是什麼?

子嘉:第一是看監控,第二還是看監控,把所有能想到的問題和所有碰到過的問題都做到監控中。

雲棲社區:後續你們將會如何發展KVStore/Redis?

子嘉:最近幾個月我們陸續會有多款產品對外發布,比如全新的備份恢複功能、對LUA的支持、多種Sharding產品形態、跨機房容災等等。

對於大家無感知的後端我們也會做大量的改造,比如內核熱升級、aof rewrite去除等,從更長遠的角度看,我們希望給大家提供最穩定、最高效、最豐富的Redis產品,歡迎大家使用,也歡迎有誌之士來共建。

雲棲社區:請分享下雲產品係統優化上的經驗。

子嘉:雲產品麵臨的挑戰都是類似的,比如用戶要保持tcp鏈接不斷、用戶需要熱升級但是對業務無感知、用戶需要無縫的擴縮容、用戶需要業務永續等等,基於用戶的這些需求各個雲產品都要去做對應的優化和改造。

比如在Redis產品中我們一個最基本的要求就是所有組件都能夠做到不斷鏈接熱升級,在Redis內核部分我們將主體邏輯和主要數據結構都拆成so,當升級redis內核時隻要動態加載一個so就能實現了,在proxy部分我們支持新老版本兩個進程同時跑,然後老版本proxy的所有鏈接都能通過一個本地接口傳遞給新版本proxy進程,之後老版本proxy進程退出,所有的處理邏輯都在新版本proxy上繼續執行,整個過程用戶是無感知的。

雲棲社區:在團隊管理上,你奉行什麼原則?為了達到這樣原則,是如何踐行的?

子嘉:我的原則是通戰略,定方向,放大權,抓細。

通過通戰略和定方向讓大家知道要往哪裏走,自己的職業發展如何和我們的未來規劃相匹配,自己未來在團隊中的位置是什麼;通過放大權讓他們充分發揮、鼓勵他們試錯、給他們最大的自由度的同時,也給他們最大的責任;通過抓細節來看他們的執行情況和問題所在,在發現問題時及時教育並糾正,最終讓人、產品、團隊都能得到成長。

雲棲社區:你先後接觸過搜索、雲計算、Redis、NoSQL等技術,在這些領域,你不僅做的很好,還有所創新。能否分享下自己是如何快速學習的?

子嘉:不挑活、勤思考、肯擔當,工作就是最好的學習途徑,記住千萬不要挑活,有的同學覺得這個活沒有技術含量,那個活沒有前途,但是就沒想過這些“沒技術含量”的活都做不好,怎麼能去幹那些有技術含量的活呢?

而且功不唐捐,你今天種下的種子在未來的一天終會發芽,其實技術都是相通的,搜索、雲計算、Redis共性的東西也非常多,人生本就那麼苦短,為何還設那麼多局限?

勤思考,幹活的時候多抬頭看看天,看看方向,多總結,很多人偏於執行而疏於規劃,這種習慣會造成中長期的悲劇,我自己也曾經犯過這個錯誤,交了很多學費;肯擔當,要努力讓自己成為團隊中可以依賴的人,不要讓自己成為可有可無的人,逃避責任隻會讓自己越來越被動。

雲棲社區:Redis中國用戶組(CRUG)在5月20日正式成立,你對它的成立是怎麼看的?

子嘉:這個時間點很有意思,包含了很多。那麼多誌同道合的人聚在一起是一個很大的緣分,對Redis在中國的發展和交流有著重大和長遠的意義。

阿裏巴巴作為發起者之一,一直是開源的受益者,也一直在不停地回饋社區,我們也希望能通過CRUG促進Redis的良性發展並將自己的一些積累貢獻給社區,然後和整個社區一起成長,和大家一起成長。

首期脫口秀,淘寶造物節背後的VR技術,報名鏈接:https://yq.aliyun.com/webinar/join/35

最後更新:2017-07-19 10:32:38

  上一篇:go  餓了麼四次技術進化的曲折路,記訪談張雪峰
  下一篇:go  訪阿裏資深專家丁奇:他是如何一步步成為MySQL大牛的?