航天信息股份有限公司高級架構師范剛:在互聯(lián)網+的時代,該如何應對系統(tǒng)變革
來自航天信息股份有限公司的范剛分享了在多年實踐中對于系統(tǒng)改造重構的總結與思考。在互聯(lián)網+的背景之下,很多架構師們面對的是層出不窮的需求、不斷更新迭代的新技術以及滿身補丁,讓開發(fā)運維無比頭大的老舊系統(tǒng)。是繼續(xù)縫縫補補還是推倒重來?何去何從,范剛給出了漸進式改造、優(yōu)化與維護并行,平臺與重構并重的答案。很多老舊系統(tǒng)都面臨著體系老舊,業(yè)務繁雜,代碼耦合度高的問題,所謂的漸進式改造,就是在保持系統(tǒng)功能不變的情況下,將業(yè)務領域層和技術支撐平臺解耦,并實現(xiàn)業(yè)務領域層的模塊化,最終”像更換零件一樣更新系統(tǒng)”。在實際的生產環(huán)境中,在進行系統(tǒng)改造的同時,必須滿足新的業(yè)務需求,對于這個問題范剛給出的經驗總結是優(yōu)化與維護并行:由改造組進行系統(tǒng)優(yōu)化,維護組滿足業(yè)務需求,系統(tǒng)優(yōu)化跟隨業(yè)務版本上線,快速迭代小步快跑,便于系統(tǒng)優(yōu)化階段性效果的驗證,也可以有效避免大版本切換的系統(tǒng)性風險。而平臺與重構并重是技術支撐平臺和業(yè)務領域層的優(yōu)化同時展開,平臺組完成技術架構的調研選型、基礎平臺、公共組件的設計和開發(fā);業(yè)務組根據(jù)業(yè)務邏輯進行模塊劃分,結合業(yè)務需求制定項目計劃,完成漸進式重構改造。最后結合項目實例,總結得到軟件重構的七步曲(圖1)。
圖1 軟件重構七步曲
搜狗商業(yè)平臺架構師劉建:搜狗商業(yè)平臺基礎架構演化實踐劉建以搜狗商業(yè)平臺基礎架構為例,向我們完整的展示了一個系統(tǒng)從ALL-IN-ONE的初始階段一步步演化成為一個高性能、高可用、高可擴展的成熟系統(tǒng)。搜狗商業(yè)平臺的架構演化分為初始階段、水平化、服務化和流式計算4個階段(圖2)。
初始階段,業(yè)務優(yōu)先,快速迭代,但隨著業(yè)務規(guī)模的迅速擴張,數(shù)據(jù)庫健康度低,訪問超時等問題日益凸顯。 在水平化階段,通過計算水平化和存儲水平化,成功解決了系統(tǒng)性能和存儲問題,計算水平化的難點在于狀態(tài)的處理,理想的設計是獨立存儲中間狀態(tài),實現(xiàn)計算節(jié)點的無狀態(tài)化;而在進行存儲水平化設計時,則需要更多的關注數(shù)據(jù)源的遷移成本,搜狗商業(yè)平臺是通過自研的數(shù)據(jù)庫分庫分表框架Compass實現(xiàn)平滑遷移。 在服務化階段,通過優(yōu)化解耦實現(xiàn)資源私有化,服務接口化和模塊獨立化,有效降低了團隊之間的溝通協(xié)作成本。搜狗商業(yè)平臺的服務化基礎框架Polaris,是在Thrift基礎之上增加了認證,授權,監(jiān)控,失效重連和負載均衡等機制自研形成。 為了更好的服務客戶,引入了kafka + storm + pump + Binlog Tunnel的流式計算框架,流式系統(tǒng)在設計選型時需要充分考慮消息順序性,消息重復和消息丟失問題,必要時可以進行雙路比對,降低系統(tǒng)風險。最后值得一提的是,搜狗商業(yè)平臺最近開源了嵌入式數(shù)據(jù)庫分庫分表框架Compass,遵循標準的DataSource接口,支持分庫分表、讀寫分離和負載均衡,可屏蔽底層數(shù)據(jù)源差異,支持方便的數(shù)據(jù)源遷移和擴容縮容,并能夠進行有效的數(shù)據(jù)源健康度監(jiān)控。
圖2搜狗商業(yè)平臺基礎架構演化
餓了么創(chuàng)新產品研發(fā)部副總監(jiān)程軍: 餓了么整體架構餓了么技術體系是典型的業(yè)務驅動,業(yè)務量的爆發(fā)式增長推動整體架構不斷向前演化。餓了么經歷了單機時代、集群時代、SOA時代(圖3)的演進過程。為解決性能問題,核心gateway使用F5代替了HAProxy。在SOA過程中,對于核心服務采用數(shù)據(jù)庫按領域拆分、熱數(shù)據(jù)緩存、異步消息通知和服務降級的策略,有效的應對流量洪峰。在數(shù)據(jù)庫方面,餓了么自研了數(shù)據(jù)中間件DAL,實現(xiàn)了MySQL的連接池、分庫分表、讀寫分離、查詢拒絕等功能。引入Service Orchestrator實現(xiàn)前后端分離,提高系統(tǒng)并發(fā)度、縮短響應時間。另外餓了么的核心服務是基于Python 構建,也為我們提供了一個用python架構支持高并發(fā)互聯(lián)網服務的一個范例。
圖3餓了么整體架構
小米科技的架構師張濤:小米網架構變遷實踐來自小米科技的張濤,分享了小米網的架構變遷以及架構選型的一些思考。為應對業(yè)務的迅猛增長,小米網對系統(tǒng)架構做了如下的演進優(yōu)化:對DB按系統(tǒng)拆分,做到水平可擴展;系統(tǒng)調用關系由網狀結構優(yōu)化為星狀結構,引入MQ,實現(xiàn)系統(tǒng)解耦;縱向來看,把系統(tǒng)劃分為調度層、業(yè)務層、數(shù)據(jù)層三層結構,功能明確,接口清晰;引入Cobar解決浪涌導致的高壓。如何在架構設計層面提高效率,降低成本,小米網的做法是抽象基礎服務和基礎組建,節(jié)約開發(fā)成本,提升服務質量;按照“業(yè)務縱切,平臺橫切”的方案,實現(xiàn)業(yè)務的模塊化和基礎服務的平臺化。另外張濤還介紹了小米網的特色技術,包括流量控制架構、通用緩存框架MCC、異步消息推送服務Notify、庫存設計和智能調撥算法、虛擬化和云服務、監(jiān)控和異常、安全策略、SOA等。其中MCC采用的是Twemproxy+redis成熟緩存方案,并考慮了數(shù)據(jù)熱加載,業(yè)務隔離,多機房災備等問題而形成的通用緩存框架;告警量爆炸也是大中型互聯(lián)網公司的常見問題,對此小米給出的建議是:區(qū)分異常和告警,只有滿足一定頻度或數(shù)量的異常才能升級為告警,而所有告警必須處理;小米網的SOA框架如下圖4 所示,框架選型是基于Thrift實現(xiàn)RPC核心功能,基于etcd完成服務注冊、服務發(fā)現(xiàn)、failover、框架支持多語言環(huán)境,研發(fā)可以用很小的成本快速搭建RPC服務。
圖4小米SOA框架
途牛旅游網研發(fā)總監(jiān)高健:途牛網站無線架構變遷途牛旅游網的高健從服務化的推進、多機房異地部署、性能優(yōu)化和APP客戶端技術4個方面介紹了途牛無線架構的演進。在服務化方面,通過引入MQ實現(xiàn)服務的異步化,通過數(shù)據(jù)庫的分庫分表實現(xiàn)高性能的并發(fā)計算,通過引入NoSQL、MySQL異構同步機制,Unix域通信機制實現(xiàn)分布式計算(圖5),并通過注冊中心和監(jiān)控中心實現(xiàn)整個系統(tǒng)的高可用性和高可維護性。多機房異地部署面臨的問題是專線不穩(wěn)定和數(shù)據(jù)同步延遲過大,因此對于對實時性要求較高的數(shù)據(jù)可以采用應用層雙寫的方案。在性能優(yōu)化部分,途牛采用Codis進行熱數(shù)據(jù)緩存,并且自研了緩存更新系統(tǒng)BWT和監(jiān)控系統(tǒng)OSS,保障Codis的易用性和平穩(wěn)運行。而在APP技術方面,采用插件式開發(fā)框架,模塊之間相互獨立,降低耦合度;使用靜態(tài)化資源,提升響應速度;引入alibaba的AndFix框架,實現(xiàn)熱修復。
圖5途牛分布式計算架構
快的打車架構師王小雪:快的打車架構實踐快的架構師王小雪完整的回顧了快的打車架構演化過程,從最開始的功能基本可用,到核心鏈路優(yōu)化,再到體系化架構設計。在核心鏈路優(yōu)化階段面臨的主要問題是LBS查詢性能瓶頸和長連接服務不穩(wěn)定,直接影響到快的核心業(yè)務,問題的原因更多地涉及實現(xiàn)層面的細節(jié):比如MongoDB早期版本全庫鎖的問題,頻繁內存拷貝的問題,超時管理算法效率的問題,考驗著架構師問題快速定位的能力。而在體系化架構設計階段則是更為全局和宏觀的設計和優(yōu)化,包括:系統(tǒng)分布式改造、無線開發(fā)平臺、日志收集檢索系統(tǒng)、實時計算與監(jiān)控和數(shù)據(jù)層改造等。其中系統(tǒng)分布式改造的技術選型是dubbo+RocketMQ,實現(xiàn)服務之間的接口化和異步化;日志收集和檢索系統(tǒng)主要功能是實現(xiàn)問題的快速定位,技術選型是log4j + flume + elasticsearch的組合,單個請求的鏈式調用關系通過flag進行串聯(lián),實現(xiàn)分布式系統(tǒng)的問題追蹤和定位;快的的實時計算系統(tǒng)目標是提供實時準確的運營數(shù)據(jù),技術選型是較為通用的RocketMQ+storm+HBase,RocketMQ為storm和HBase提供流量平滑功能,HBase在使用時根據(jù)業(yè)務場景避免update操作,提升性能;在數(shù)據(jù)源改造(圖6)的基本思路是用HBase查詢代替Mysql的SQL查詢,其中最核心的技術點是Mock Mysql Slave,從mysql master得到binlog數(shù)據(jù)通過MQ同步到HBase、HDFS等異構存儲介質之上,另外HBase的二級索引也是一個社區(qū)比較熱門的話題,快的的方法是在客戶端插入二級索引,相比Coprocessor的方案可更好的兼容HBase批量插入操作。
圖6 統(tǒng)一數(shù)據(jù)同步方案
58同城系統(tǒng)架構師孫玄:58同城高性能移動Push推送平臺架構演進之路孫玄介紹了58移動Push從單平臺、多平臺,再到高性能平臺的演進過程。58最先提供的是iOS的Push服務,iOS不允許service后臺常駐,因此APSN幾乎是IOS Push的唯一選擇,單平臺階段,58搭建了iOS Provider平臺和APSN對接,提供了證書驗證、連接池、錯誤處理等功能。隨著移動流量的爆發(fā),多終端,多APPs,多策略的業(yè)務需求,推動Push進入多平臺階段。關于Android推送,58采用的是自研Android Provider和第三方Push平臺對接的方案;采用抽象公共邏輯,統(tǒng)一封裝接口的方式解決需求多樣化,邏輯復雜化的問題,提升開發(fā)效率。高性能階段則重點解決的是Push性能和穩(wěn)定性的問題,在性能優(yōu)化方面,搭建IOS/Android統(tǒng)一的push平臺(圖7),并通過Push的并行化,異步化提升整體性能;關于穩(wěn)定性的討論主要是集中在Android終端,根據(jù)不同機型選擇不同的Push通道,也可以根據(jù)策略選擇失敗重試機制。
圖7 58同城移動Push架構
騰訊高級工程師徐漢彬:QQ會員活動運營平臺的架構設計演變來自騰訊的徐漢彬以會員活動為背景介紹了AMS的架構演變。QQ活動運營的特點是活動多、周期短、個性化強而且過期作廢。人力成本極為有限和層出不窮的業(yè)務需求是需要解決的主要矛盾,這里徐漢彬給出答案是構建高效的運營開發(fā)模式,整個系統(tǒng)架構從上至下分為前端層、CGI層和服務層,前端層提供基礎組件,CGI實現(xiàn)業(yè)務邏輯,服務層提供平臺支撐,通過活動配置文件實現(xiàn)前端邏輯和后端服務的自由組合(圖8),使產品運營同學可以獨立完成活動發(fā)布。除此之外,系統(tǒng)的性能、可用性和安全性也是架構師需要考慮的問題。性能優(yōu)化方面,AMS引入NoSQL優(yōu)化增查改刪的性能;并采用了帶版本號的CAS樂觀鎖機制提升高頻操作的并發(fā)度,從而支撐了5w+/s的秒殺活動。對于可用性從架構設計和多維度運維監(jiān)控兩個方面來保證,架構設計層面充分考慮了水平擴容、failover、過載保護、服務降級等問題;在運維監(jiān)控角度,建立多通道,多維度的監(jiān)控告警機制,確保及時發(fā)現(xiàn)響應線上問題。關于安全體系,AMS采用了技術手段、產品設計、安全支撐體系多管騎下的思路,程度上保障業(yè)務安全。
其實這里有一個可以引申開來的話題——科技公司的工具文化,有種比較激進的觀點是用最優(yōu)秀的人才來開發(fā)工具,提升整個團隊,整個公司的效率,徐漢彬的分享也從一個側面展示了技術工具的強大威力。
圖8騰訊AMS自動化運營體系
總結聽了上述一線架構大牛的分享,收獲良多,同時也頗有感觸。
全棧架構。從本次架構會場的分享涵蓋了從基礎架構到業(yè)務形態(tài),從系統(tǒng)設計到持續(xù)交付,從安全、監(jiān)控到虛擬化技術,從版本迭代到項目投入產出比等諸多領域。本質上,架構師的職責就是充分評估業(yè)務,人員,成本等要素在技術層面上保障服務的順利落地,穩(wěn)定運行并適時推動平滑升級,期間遇到的所有技術的問題都是架構師需要直面的。既是新業(yè)務新技術的探路者,又是掃清線上系統(tǒng)瓶頸的急先鋒,架構師的擔子,不輕。 趨同存異。一天的分享中,服務化、分庫分表、異步、分布式、安全、監(jiān)控等這些高頻詞反復出現(xiàn),說明架構設計的基本原則和架構師們關注點是趨同的,甚至各自系統(tǒng)架構演化到不同階段遇到的瓶頸和應對的舉措也是驚人的相似。當然也有不同,比如安全,有些場景下關注的業(yè)務安全,有些則更關注數(shù)據(jù)安全;比如數(shù)據(jù)一致性,有些場景要求強一致性,有些只需關注最終一致性。而其實也正是業(yè)務場景的差異給了架構師們展示自己聰明才智的舞臺。 擁抱變化。從分享的主題來看,變化、變遷、演化,主線是一個“變”字。業(yè)務量的迅猛增長會倒逼架構的優(yōu)化和升級,快的和餓了么是典型的例子。而新技術出現(xiàn)也會推動架構的變革,比如服務化可以提升開發(fā)效率,降低協(xié)作成本;比如流式計算,可以改善用戶體驗甚至是引導用戶需求。無論是業(yè)務驅動還是技術驅動,架構師都需要做的就是時刻擁抱變化,成為一個敏銳的觀察者,技術航線的引領者和架構的實踐者。作者介紹:么剛,搜狗商業(yè)平臺架構師,主要負責海量數(shù)據(jù)的分布式存儲和計算,解決分布式、高并發(fā)、強一致性等帶來的技術難題及挑戰(zhàn),保障系統(tǒng)的健壯性,高性能和高可用性。
分享文章:一線互聯(lián)網公司的架構實踐
分享URL:http://www.rwnh.cn/article4/cgjooe.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網站制作、軟件開發(fā)、網站設計公司、移動網站建設、搜索引擎優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)