航天信息股份有限公司高級(jí)架構(gòu)師范剛:在互聯(lián)網(wǎng)+的時(shí)代,該如何應(yīng)對(duì)系統(tǒng)變革

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