1. 程式人生 > >【SDCC講師專訪】搜狗劉建:架構師=學習能力+好奇心+持續實踐

【SDCC講師專訪】搜狗劉建:架構師=學習能力+好奇心+持續實踐

CSDN年度技術盛宴 “SDCC 2015中國軟體開發者嘉年華”將於2015年11月19-21日在北京召開。CSDN軟體研發頻道將採訪一些與會講師,談談他們將在會上分享的內容。

本期我們採訪的講師是來自搜狗架構師劉建——負責商業平臺基礎架構,對分散式計算、服務化、流式計算、資料庫架構、高可用高可靠等方面都有較深刻的理解和實踐經驗。

劉建,北京航空航天大學計算機專業博士,此前供職於IBM中國研究院,主要方向是分散式計算、面向服務體系結構等,有多年大規模複雜系統架構實踐經驗。目前關注大資料基礎平臺,效率提升工具等。 

 

CSDN:請簡單介紹下您和目前的工作,以及關注的領域。

劉建:大家好,我博士畢業於北京京航空航天大學計算機學院,目前擔任搜狗架構師,主要負責搜狗商業平臺的基礎研發和平臺架構方向,涉及資料儲存、分散式計算、服務化、安全等以及廣告計費、報文等核心業務服務。目前主要關注大資料基礎平臺、流式計算、效率提升工具。之前在IBM研究院從事SaaS平臺中身份聯邦的研發工作。

CSDN:您是如何成長為一名架構師的?以及對架構是怎樣的理解?

劉建:我覺得要成為架構師,主要是學習能力+好奇心+實踐經驗。

我在研究生和在IBM研究院工作階段主要方向是面向服務計算,當時對架構比較有興趣,閱讀過大量與架構相關的書籍:比如Software Architecture Bootcamp、重構、設計模式等,也搗騰過SEDA並且有過實踐,得到的各方面的指導也偏巨集觀,因此會不自覺的從巨集觀和整體性的方向去思考問題,把握系統,會主動思考系統的瓶頸以及目前所負責部分的不足以及優化的方向。

初來搜狗時負責網盟廣告平臺研發,後來調整為負責商業平臺基礎研發和平臺架構。有幸經歷了搜狗廣告業務的快速發展,廣告物料數從千萬級到十億級的爆炸式增長階段。在此期間,先後主導和參與了統一使用者中心、統一許可權中心、資料庫分庫分表框架、SOA框架、資料平臺等的設計和研發工作,並完成了Hadoop、Storm、Spark、Kafka、Thrift等開源軟體的升級和引入,積累了較多的架構實踐經驗,從而成長為架構師。

個人認為架構主要涉及到兩個層次:

分別為基礎架構和業務架構。

我個人更多的側重於基礎架構。我認為一個好的架構需要能夠儘可能的具備通用性,滿足高效能、高可用、高可擴充套件性等特點,另外能夠快速定位故障點,具備較快的故障恢復能力,更好的運維及監控能力等,在其進化升級過程中儘可能的保證相容性,能夠平滑進行遷移和切換。

CSDN:能否全面介紹下搜狗商業平臺的基礎架構?有著怎樣的特點和難點?

劉建:搜狗商業平臺涉及搜尋推廣、網盟推廣、品牌推廣商業廣告投放平臺架構設計和研發,提供十億級以上線上廣告管理及相關支援。基礎架構需要解決分散式,高併發,大資料量,強一致性等帶來的各種技術難題及挑戰,構建和持續優化基礎服務,保證高可靠、高效能、高可擴充套件性、低成本的快速支撐各項新業務。我們將基礎架構分為三個層次:

  • 基礎平臺:主要是我們使用的基礎框架,包括SOA框架、資料庫分庫分表框架、資料儲存、資料快取、離線/線上資料處理、分散式一致性協調等方面的框架等。部分框架是基於開源技術構建,所利用的開源軟體主要包括:Spring、Redis、Mysql、MongoDB、Hadoop、Kafka、Storm、Zookeeper等。
  • 基礎服務:主要提供業務無關的通用基礎服務,包括唯一序列號服務、資料傳輸/同步服務、認證、授權、配置、分散式任務排程、訊息、圖片、簡訊和郵件等。
  • 核心服務:主要是同業務相關的服務,比如計費服務、稽核服務等。

商業平臺的基礎架構同主流的網際網路軟體基礎架構基本保持一致,必須具備分散式、高併發、高可用、可擴充套件性等方面特徵。同時,由於商業平臺直接涉及到商業客戶的廣告投放,所有的故障都可能導致潛在的收入損失,因此對高可用的要求非常高。我們在設計基礎架構元件的時候,會詳細的評估潛在的故障點以及各類故障對收入的影響,同時也會盡可能的提升其可追蹤性,保證在極限場景下能夠快速定位問題。另外,廣告的實時性非常重要,例如,廣告上下線的實時性會顯著影響客戶的消耗,同時也會導致無效的投放,影響收入。我們也一直提高實時性,減少無效投放,保證客戶體驗。

CSDN:您認為工程師如何成為架構師?

劉建:我覺得從工程師到架構師是一個“由點到面”,“從區域性到整體”的過程,工程師關注的是高效的實現功能,關注專案區域性;而架構師在考慮區域性的基礎上,更多的考慮整體,包括技術實現的風險及規避手段,可測試性、可運維性及可監控性等,需要卓越的技術能力、良好的大局觀、更多的實踐經驗,能夠有效的轉換視角,從巨集觀和微觀兩個層次考慮問題。可以從以下幾點做起:

  • 從手頭專案的架構優化做起,提升個人技術能力;
  • 持續學習和交流新的技術、新的思想、新的架構;
  • 保持對主流技術的關注度,持續思考其對手頭專案的適配度,合適的時候將其應用於實踐;

CSDN:技術人員如何合理做好時間管理?您有哪些建議?

劉建:對於技術人員來說,大部分時間都在處理需求、設計及研發、線上問題,並且基本都有提升個人技術能力的訴求。一般情況下,各種中斷性事務會導致時間浪費比較嚴重,特別是在設計思路被打斷時,工作效率會變低。因此,可在集中的時間段內處理中斷性事務,例如,在固定的時間處理郵件,在早上就確認同工作相關的產品需求。其次,保證從事技術性工作的時間基本是一個整體,這樣思路能夠保持連貫,工作會更有效。另外,可以合理使用TODOList,確保當天的事情當天基本能夠完成。最後,對於各類會議討論,可根據同自己工作的相關性來選擇參加。

CSDN:這些年來新語言(舊語言新用)或新技術層出不窮,你看好哪些新語言(技術)?為什麼?開發者應如何應對這種新技術浪潮?以及您有什麼高效的學習方法分享?

劉建:這裡主要談談我們部門的情況。在語言層面,我們部門目前使用的主流語言是Java、C++、Python以及指令碼語言。就技術而言,結合部門情況及網際網路趨勢,我們對高效的利用大資料和流式處理比較關心。我們目前比較關注的方向在Scala語言和Spark框架等。關注Scala其主要原因是我們有比較多的Java資產沉澱,可以同Scala更有效的結合,而且Scala的生產效率比較高。關注Spark的原因是由於我們經常會到對商業資料的進行各層次各維度的動態分析,傳統的方式開發效率都比較慢,或者無法處理如此龐大資料量,我們需要一個高效的工具,而Spark恰好具備了這些特徵。

新的技術層出不窮,對於開發者來說需要持續學習。新的技術和語言是為了適應新的需求而出現的,其底層的理論基礎變動並不是特別大,因此技術人員也需要多關注軟體相關的基礎理論,比如資料庫、作業系統、資料結構和演算法等。在學習方法上面,我一般會制定切實合理的學習計劃,帶著需解決的問題去學習,學習和實踐相結合並且多同領域內專家交流。

CSDN:您現在每天還程式設計嗎?是如何安排程式設計、技術學習、管理的時間的?

劉建:我現在主要的技術工作包括架構評審及程式碼審查、基礎架構優化和行業對齊。用於程式設計的時間整體算來應該在20%~30%之間,主要是對基礎架構中的元件進行優化和升級。技術學習一般是利用平時的空閒時間完成。技術管理上的時間大概佔20%左右,管理上的事務一般會在剛上班和下班之前進行處理。

CSDN:您在本次SDCC 2015大會上想分享的話題是?

劉建:本次主要分享搜狗快速迭代業務下基礎架構演化實踐,以搜狗商業平臺近年來的基礎架構演化為背景,介紹其演化過程中的幾個主要階段:

  1. 計算的水平擴充套件階段;
  2. 儲存的水平擴充套件階段;
  3. 服務化階段;
  4. 流式計算階段。

最後,分享相關實踐經驗,以及搜狗在業務快速迭代的過程中逐步優化其基礎架構的原則、經驗教訓和思考。

CSDN:您最期待在SDCC 2015大會上看到哪些內容?

劉建:我希望能夠看到在網際網路高併發大資料量下的實踐經驗總結,特別是碰到的開源軟體的坑、線上問題的處理思路,以及能夠給我帶來思考、讓我對架構等方面能夠產生重新認識的原創性內容。

相關推薦

no