當前位置:
首頁 > 科技 > 微博近幾年的架構演進之路和架構師的技能素養

微博近幾年的架構演進之路和架構師的技能素養

【編者按】每個人的成長曲線不同,有的人在研究生之時就已有相當知名的產品和框架,從而在接下來的工作中一路順風順水,有的人缺需要經歷一個又一個的坑才能成長,不管是前者的聰明高效,還是後者的笨鳥先飛,他們都是在邁著腳步不斷地向前。不妨,我們停下腳步看下一些同行,以激勵自己更好地前行。CSDN與你相約SDCC 2017·深圳站講師。

以下為正文:

【嘉賓】陳波,新浪微博研發中心平台架構技術專家。08年加入新浪,參與IM系統的後端研發。09年之後從事新浪微博的系統研發及架構工作,在海量數據存儲、峰值訪問、規模化緩存服務及開放平台等方面參與技術架構改進,當前主要負責微博平台的基礎設施、中間件的研發及架構優化工作,經歷新浪微博從起步到成為數億用戶的大型互聯網系統的技術演進過程。

CSDN:請先和大家介紹下您和目前所從事的工作,以及關注哪些技術領域?

陳波:我已經是10+年的碼農了,自2008年加入新浪,最初從事新浪IM的後端研發。09年之後開始微博Feed平台系統的的研發及架構工作,深度參與最初若干個版本幾乎所有業務的開發和架構改進,13年後開始從事微博平台基礎架構相關的研發工作,經歷了新浪微博從起步到當前月活數億用戶的大型互聯網系統的技術演進過程。當前主要從事微博feed平台的基礎設施、緩存中間件的研發及架構優化工作。關注的領域包括應用的服務化,緩存的服務化,分布式存儲及緩存,混合雲服務,大數據及高可用架構等。

CSDN:你是如何走上技術這條路的?談談畢業工作這些年來在工作中的收穫和體驗。

陳波:大三的時候,同門師兄開發並上線了5Q校園BT網,下載速度非常快,廣受歡迎,很快就把服務從華中科技大學擴展部署到武漢、西安的其他各大高校,然後還被千橡互動收購,當時這件事情挺轟動的,給我的感覺也很震撼,感受到了計算機技術的力量,於是堅定了以後從事技術開發的念頭,自學了更多計算機相關知識,考程序員相關的證書,到BBS找開發兼職等。到研究生階段,在實驗室參與了幾個軟體系統的研發,算是正式踏入了IT行業。

07年畢業,在3G門戶工作了一年,之後一直在新浪做研發至今。工作中的最大收穫:一是結識了很多志同道合的技術好友;二是重度參與並見證了新浪微博從起步到成為大型互聯網系統的技術演進過程,系統演進中經歷了很多曲折、困難、不眠之夜,回頭看卻正好是進步的腳印。

我的工作體驗是:把工作當成事業來做,工作是完成,事業是不僅做好,而且要做到更好,把工作做成創業,就會發現研發不僅是編碼,還要考慮架構演進、業界動態、技術發展、產品創新、成本控制(存儲成本、機器耗電、公有雲計費)等,大公司里一樣可以「創業」,而且這樣的創業成本不高也很有樂趣;另外就是要保持對技術的新鮮感,不斷擴展視野。

CSDN:您自08年加入新浪以來,就未曾換過工作,我們知道技術人可以通過跳槽接觸更廣闊的技術領域和認識更多大牛等,是企業還是團隊的文化,是哪些因素吸引您留在新浪堅持近十年的呢?

陳波:實際上,08年之前我在3G門戶工作。前面也講過,我的工作理念是把工作當做事業、當作創業來做,和一群志同道合的人,創造一個對社會進步、開啟民智、大眾娛樂有意義的產品,並把他做大做強,這個過程是一個艱難曲折的過程,也是一個充滿歡樂和收穫的過程。

除此之外,吸引我留在新浪近十年,還有幾點:

首先是開放的企業文化,自黑成傳統,曾經因業務發展過快,伺服器嚴重不足,微博上,員工一邊自己黑公司、黑領導,同時大夥還不分晝夜反覆調研、分析支撐數據,不斷優化、改善系統架構,最後系統性能大幅提升,不僅滿足了業務發展需要,服務穩定性也增加不少;

其次是積極向上的團隊文化,平台內部每周、每月的技術分享,不同組之間通過項目橫縱向合作,新技術也有充足的試驗場;

最後,個人覺得在微博做研發是一個很有意義的事情,工作能養家,還能促進社會進步,不是挺好?跳槽可以認識大牛,微博可以自產更多大牛,不信到我們的首架群(微博出品的各廠首席架構師群)看看,哈哈。

CSDN: 09年之後您就從事新浪微博的系統研發及架構工作,也經歷新浪微博從起步到成為數億用戶的大型互聯網系統的技術演進過程,可否分享下您對架構的理解?以及您對於架構師是如何定義的?他的能力,以及職責。

陳波:我個人對架構的理解是這樣的:

從開發人員的角度,架構是系統整體結構的規劃設計,也是系統實現的一個草圖,主要包含抽象出來的模塊、交互協議及設計決策。因為架構的模塊、協議、決策是抽象層面的規劃,所以具體實現跟業務相關,要考慮業務的需求與特性,還跟業務發展階段相關,要考慮業務當前的規模及發展階段,選擇合適的實現方案,必要時對當前的架構做適當的修改和演進。所以,架構是設計出來的,更是演進出來的;另外沒有最好的架構,只有更適合(當前業務場景和階段)的架構。

關於架構師如何定義:

架構師負責設計系統整體架構,確定系統實現的行動綱領,使設計的項目盡量高性能、高可用、易實現,並且在上線後運維方便,在新功能加入時擴展性良好。

架構師的能力要求:

1. 較強的代碼能力,對日常問題有豐富的閱歷及解決之道,設計不是空談,需要實踐,代碼能力、解決問題的能力是系統實踐的一個副產品;

2. 較好的抽象能力,業務需求在架構師消化後,需要轉化為設計藍圖,這中間需要大量的抽象。

3. 良好的溝通和組織能力,架構設計出來,需要組織討論、頻繁溝通,讓項目組成員理解架構組成及設計取捨的原因,明白架構設計中的how和why,在遇到疑問、反對、建議時,能進行良好的溝通並有序的推進。

4. 較好的團隊協作能力和領導能力,架構師需要得到項目組成員的認可,在關鍵時刻對技術的選擇作出及時、有效的決定,並為決定負責。

架構師的主要職責:

1. 把業務需求轉換為實現架構,定義每個組成模塊的外部特性,比如它的依賴、性能、異常處理等,並確定模塊之間如何通信,最終形成可以指導業務開發的行動圖;

2. 組織討論,組織更多的人來了解、討論架構,能夠讓大家理解架構整體方案、模塊特性及邊界、決策權衡點,進而可以自行進行組件服務的設計及實現;

3. 協助項目經理制定開發計劃和控制項目進度;

4. 確定系統的基礎架構、實現技術,必要時組織技術調研和攻關。

CSDN:這幾年的微博,有哪些技術架構的節點性事件?能否就各階段從穩定性、可用性、性能、安全、監控等多方面來闡述快的高可用架構。

陳波:微博技術架構的節點性事件非常多。從feed分發策略上,有最初的推(push)模式,到後來的拉(pull)模式,到目前的hybrid(推拉結合)模式。從feed平台系統實現上,從最初的大一統實現結構,到11年的模塊拆分,到13年構建motan RPC框架,進而14年開始服務的拆分、服務化,到目前基於混合雲架構的微服務化。還有很多其他重要的節點性事件,如feed content存儲及緩存結構從json/xml 改為更高效的protocol Buffer結構;首次在國內大規模使用和推廣使用Redis;大數據處理引入Hadoop;系統部署採用混合雲架構等等。

初期階段,微博主要採用LAMP架構,feed採用push模式推送,存儲放在MySQL,緩存採用memcached。這一階段,微博用戶快速增加,整體服務的穩定性不夠,遇到突然事件或核心資源宕機時,可能會出現「暫時無法訪問」的頁面。此階段,所有數據和請求在一個大的邏輯IDC,嚴重的緩存故障可能會導致DB被打滿並雪崩,進而導致整個系統異常;因為運維人員不夠,開發需要自行部署、切換服務,資源缺乏統一監控,容易出現故障。

中高級階段,後台實現從PHP改為java,微博採用統一的Feed平台架構,對Feed平台業務進行模塊化、平台化改造,feed採用推拉結合的hybrid模式;將服務部署到多個物理IDC,構建了統一的降級策略,任何資源的異常和宕機,隻影響某個業務的不穩定,而不會影響其他業務;所有的業務、資源進行監控全覆蓋,出現宕機、部分服務crash也能及時處理,並不會影響整體服務的可用性。

當前階段,微博進一步進行服務化、雲化的改進。當前微博對外主要以移動客戶端、web主站、開放平台三種方式提供服務,並通過平台接入層訪問微博Feed平台體系。其中平台服務層把各種業務進行模塊化拆分,把諸如feed計算、微博內容、關係、用戶、評論、短鏈、私信等分解為獨立的服務模塊,對每個模塊實現服務化架構,通過標準化協議進行統一訪問。中間層通過各種服務組件來構建統一的標準化服務體系,如motan提供統一的rpc遠程訪問,configService提供統一的服務發布、訂閱,cacheService提供通用的緩存訪問,SLA體系、Trace體系、TouchStore體系提供系統通用的健康監測、跟蹤、測試及分析等。存儲層主要通過Mysql、HBase、Redis、分布式文件等對業務數據提供落地存儲服務。整體服務的穩定性、安全性大幅提升。

CSDN:可否請您簡單介紹一下微博整體架構的一些架構特點?

陳波:目前微博架構特點:

1. 可擴展性較好,前端機、業務服務、資源層面支持按需快速擴容,可以通過快速增加私有雲、公有雲的伺服器數量來提升集群的整體性能。

2. 可用性較高,多活,無單點,任何機器、資源、服務甚至IDC的異常,不會導致整體服務的異常;

3. 處理能力強大,日常面對億級別的日活用戶、百億級的日介面訪問,還能從容應對峰值流量、突發流量;

4. 較為完善的監控、報警系統,服務有風吹草動,運維和開發人員能快速感知、定位及處理。

CSDN:您作為技術人員,可否分享下學習新知識或技能的方法?

陳波:我個人的看法是,希望對一些人有所幫助和借鑒:

1. 保持對新技術的熱情和興趣,經常從國內外技術網站獲取最新技術訊息及實現;

2. 分享及討論,分享的過程也是一個自我沉澱和升華的過程,討論可以使你理解的更清晰;

3. 學以致用,對新技術、新知識有了足夠的了解後,能在工作中引入、優化及推廣。

CSDN:您最期待在SDCC 2017·深圳站大會上看到哪些內容?

陳波:大數據場景下,對業界具體的應用問題,各廠的解決之術及解決之道。

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

深度學習在推薦領域的應用
兒童學編程的原因以及方法
5個你必須知道的Docker實用工具
Redis Cluster探索與思考
物聯網浪潮之下,前端工程師如何迎刃而上?

TAG:CSDN |

您可能感興趣

系統架構、網站架構的演進變化
今日頭條架構演進之路,高壓下的架構演進專題
胡喜:螞蟻金服十五年技術架構演進之路
荔枝架構實踐與演進歷程
圖說分散式架構的發展和演進
核心交易鏈路架構設計與演進
高可用、彈性動態的金融級移動架構在螞蟻金服的演進之路
App的業務發展和架構演進
抓樂GO的系統架構是如何從0開始演進的?
架構精講:Hadoop技術框架和架構演進方向
畢玄:阿里十年,從分散式到雲時代的架構演進之路
掃盲篇-IT架構的演進
架構只能用在後端嗎?談談架構在APP和前端里的應用和演進
只需十分鐘,了解分散式架構的演進過程
架構演進這件事兒,和吃火鍋是一樣兒的
整部篆刻史,是工、寫交替演進的過程
你是如何看待技術架構演進?
洋碼頭技術演進之路
對話微軟小冰武威:聊天機器人的演進之路
從文明構建與演進的視域研究中國歷史