58同城三個(gè)產(chǎn)品線的架構(gòu)設(shè)計(jì)成功經(jīng)驗(yàn)分享
原創(chuàng)本文是WOT2016互聯(lián)網(wǎng)運(yùn)維與開(kāi)發(fā)者大會(huì)的現(xiàn)場(chǎng)干貨,新一屆主題為WOT2016企業(yè)安全技術(shù)峰會(huì)將在2016年6月24日-25日于北京珠三角JW萬(wàn)豪酒店隆重召開(kāi)!
2016年4月14-15日,在北京珠三角JW萬(wàn)豪酒店,51CTO舉辦了WOT互聯(lián)網(wǎng)運(yùn)維與開(kāi)發(fā)者峰會(huì)。WOT秉承專注技術(shù),服務(wù)技術(shù)人群的理念,自 2012年首次舉辦以來(lái),歷經(jīng)八屆,積累了大量的技術(shù)資源,成為廣大技術(shù)從業(yè)者和技術(shù)愛(ài)好者一致認(rèn)可的技術(shù)分享大會(huì)、交流和人脈拓展平臺(tái)。會(huì)后,記者專訪了本次大會(huì)監(jiān)控與性能優(yōu)化專場(chǎng)的沈劍講師,他分享的內(nèi)容是創(chuàng)業(yè)公司快速搭建立體化監(jiān)控平臺(tái)之路。
沈劍 58到家技術(shù)委員會(huì)主席、技術(shù)總監(jiān)
嘉賓介紹
沈劍,58到家技術(shù)委員會(huì)主席、技術(shù)總監(jiān)。曾任百度高級(jí)工程師,58高級(jí)架構(gòu)師,C2C技術(shù)部負(fù)責(zé)人,58技術(shù)學(xué)院優(yōu)秀講師。目前,他主要負(fù)責(zé)58到家后端的技術(shù)管理工作,比如說(shuō)架構(gòu)部、后端平臺(tái)部、基礎(chǔ)服務(wù)部、DBA,還有測(cè)試平臺(tái)等相關(guān)偏后臺(tái)的技術(shù)工作。
在本次WOT峰會(huì)上,沈劍老師分享了《創(chuàng)業(yè)公司快速搭建立體化監(jiān)控平臺(tái)之路》。沈老師是2015年9月份加盟58到家,當(dāng)時(shí)整個(gè)到家的技術(shù)監(jiān)控體系還沒(méi)有搭建起來(lái),他結(jié)合這幾個(gè)月在到家做的一個(gè)監(jiān)控系統(tǒng)來(lái)分享創(chuàng)業(yè)性公司如何快速搭建監(jiān)控平臺(tái)這一技術(shù)主題,比如58到家是如何小成本快速建立起服務(wù)器監(jiān)控、進(jìn)程監(jiān)控、端口監(jiān)控、接口監(jiān)控、錯(cuò)誤日志監(jiān)控、業(yè)務(wù)系統(tǒng)監(jiān)控等立體化監(jiān)控體系,有怎樣的經(jīng)驗(yàn)及實(shí)踐。
采訪實(shí)錄如下:
記者:您的從業(yè)經(jīng)歷非常豐富,高級(jí)工程師、架構(gòu)師、技術(shù)講師,您更偏向于哪個(gè)角色?您是如何輕松實(shí)現(xiàn)各個(gè)角色間的切換?
沈劍:我更傾向于架構(gòu)師的角色,因?yàn)榧軜?gòu)師需要幫助應(yīng)用線解決應(yīng)用中的實(shí)際問(wèn)題,能夠給公司帶來(lái)非常大的收益,而且在解決問(wèn)題的過(guò)程中,我個(gè)人也有成長(zhǎng)和提高,非常有成就感。技術(shù)講師,也是我們技術(shù)委員會(huì)的一個(gè)工作職責(zé),這個(gè)角色是因?yàn)槲覀€(gè)人比較喜歡總結(jié)并將學(xué)到的一些技術(shù)點(diǎn)跟大家分享。
記者:技術(shù)委員會(huì)的職責(zé)定位是什么,相當(dāng)于公司內(nèi)部培養(yǎng)新員工“大學(xué)”?
沈劍:技術(shù)委員會(huì)日常負(fù)責(zé)招聘、技術(shù)培訓(xùn)、職級(jí)發(fā)展等工作,具體包括社會(huì)招聘,人才培養(yǎng),校招生的培訓(xùn),各個(gè)職級(jí)人員的培訓(xùn)、職位晉升。其中很多工作是人力部門(mén)同事來(lái)主導(dǎo),但是一些技術(shù)方面的工作,比如說(shuō)技術(shù)的評(píng)審需要高階的技術(shù)人員來(lái)評(píng)判,包括校園招聘,一些技術(shù)試卷的產(chǎn)出和一些技術(shù)面試等。技術(shù)委員會(huì)還有一項(xiàng)核心的工作職責(zé),就是對(duì)公司技術(shù)發(fā)展方向的把關(guān)和重點(diǎn)項(xiàng)目、重點(diǎn)系統(tǒng)的技術(shù)方案把關(guān),對(duì)公司的技術(shù)戰(zhàn)略發(fā)展提出建議。
記者:您經(jīng)歷的幾個(gè)產(chǎn)品線,它們的架構(gòu)設(shè)計(jì)亮點(diǎn)有哪些,有哪些成功經(jīng)驗(yàn)可以分享?
沈劍:我就分享幾個(gè)我曾經(jīng)負(fù)責(zé)過(guò)的系統(tǒng)的一些特點(diǎn),比如我之前負(fù)責(zé)過(guò)即時(shí)通信系統(tǒng),即時(shí)通信系統(tǒng)和站點(diǎn)系統(tǒng)、電商系統(tǒng)不一樣的地方是它是基于通知的系統(tǒng),站點(diǎn)系統(tǒng)、電商系統(tǒng)都是用戶往站點(diǎn)去發(fā)一個(gè)請(qǐng)求,實(shí)現(xiàn)響應(yīng)一個(gè)頁(yè)面。但是即時(shí)通訊系統(tǒng),比如QQ,你即使沒(méi)有向QQ服務(wù)發(fā)送任何請(qǐng)求,但是你的客戶端會(huì)收到請(qǐng)求,它是基于通知的系統(tǒng),要有獨(dú)立通知的通道,這就需要有一個(gè)TCP長(zhǎng)連接。所以,即時(shí)通訊系統(tǒng)的在線量、并發(fā)量,包括響應(yīng)處理時(shí)間上面臨很多技術(shù)挑戰(zhàn)。
我再舉一個(gè)例子是推薦系統(tǒng),原來(lái)在58同城負(fù)責(zé)推薦系統(tǒng)的架構(gòu)設(shè)計(jì),推薦系統(tǒng)和其他系統(tǒng)不一樣的地方在于它是一個(gè)在線和離線相結(jié)合的系統(tǒng)。離線狀態(tài)下,系統(tǒng)可以計(jì)算出一些推薦結(jié)果,當(dāng)用戶實(shí)時(shí)訪問(wèn)的時(shí)候?qū)?huì)獲取該推薦的結(jié)果,同時(shí)要支持分流的系統(tǒng)。普通的系統(tǒng),任何用戶去訪問(wèn)一個(gè)頁(yè)面,可能獲得的結(jié)果是相同的。但是對(duì)于推薦系統(tǒng),每個(gè)用戶訪問(wèn)同一個(gè)頁(yè)面,系統(tǒng)根據(jù)該用戶的歷史行為、興趣返回的頁(yè)面,推薦出來(lái)的結(jié)果是不一樣的。這就要求架構(gòu)師在做架構(gòu)設(shè)計(jì)的時(shí)候,要支持一個(gè)流量過(guò)來(lái)的時(shí)候,能夠分配到不同的子系統(tǒng),實(shí)現(xiàn)不同的頁(yè)面推薦策略,獲取不同的推薦結(jié)果。
還有,針對(duì)因某些熱門(mén)活動(dòng)引發(fā)的短期瞬間流量過(guò)大,架構(gòu)師在架構(gòu)設(shè)計(jì)中要提前考慮到,對(duì)互聯(lián)網(wǎng)的高并發(fā)在可用性、擴(kuò)展性上做有針對(duì)性的設(shè)計(jì)。為了應(yīng)對(duì)高并發(fā),系統(tǒng)要有很強(qiáng)的擴(kuò)展性,比如可以通過(guò)增加機(jī)器,就可以增加系統(tǒng)的性能,擴(kuò)展性很好時(shí),流量增加的時(shí)候,系統(tǒng)只要簡(jiǎn)單增加機(jī)器就可以。如何做好設(shè)計(jì)上的預(yù)留呢?常見(jiàn)的架構(gòu)設(shè)計(jì)分為三層,站點(diǎn)層、服務(wù)層和數(shù)據(jù)層。站點(diǎn)層和服務(wù)層的設(shè)計(jì)準(zhǔn)則,就是說(shuō)服務(wù)無(wú)狀態(tài),系統(tǒng)不能保存任何數(shù)據(jù),只要不保存任何數(shù)據(jù),沒(méi)有狀態(tài),通過(guò)加機(jī)器就可以簡(jiǎn)單實(shí)現(xiàn)擴(kuò)充性能。數(shù)據(jù)層有狀態(tài),系統(tǒng)要做好水平切分,不能將所有的數(shù)據(jù)都保存在一臺(tái)機(jī)器上,要水平分布在不同機(jī)器上,這樣也可以通過(guò)增加機(jī)器擴(kuò)充系統(tǒng)容量。這是比較專業(yè)的架構(gòu)設(shè)計(jì)注意點(diǎn)。
記者:最后一個(gè)問(wèn)題,58到家技術(shù)發(fā)展中,您遇到的最大問(wèn)題是什么?您和您的團(tuán)隊(duì)是如何通過(guò)架構(gòu)設(shè)計(jì)解決的?
沈劍:58到家是一個(gè)初創(chuàng)的公司,到現(xiàn)在發(fā)展不到兩年的時(shí)間,創(chuàng)業(yè)的公司初期基本是業(yè)務(wù)跑得非常快,為了應(yīng)對(duì)業(yè)務(wù)的快速發(fā)展,技術(shù)支持上也是怎么快怎么來(lái),可能用了一些開(kāi)源的方法。每個(gè)團(tuán)隊(duì)使用不同的方法,幫助業(yè)務(wù)快速的迭代和發(fā)展,但是各團(tuán)隊(duì)各做一套,在整體的框架之內(nèi),有些事情可能就做重復(fù)了。比如說(shuō)監(jiān)控系統(tǒng),A業(yè)務(wù)線實(shí)現(xiàn)了一個(gè)小的監(jiān)控系統(tǒng),B業(yè)務(wù)線也實(shí)現(xiàn)了一個(gè)小的監(jiān)控系統(tǒng),快速滿足初期監(jiān)控需求,但是在公司層面、更高層面,這個(gè)小監(jiān)控系統(tǒng)就做重復(fù)了。我現(xiàn)在負(fù)責(zé)后端的一些部門(mén),希望從底層架構(gòu)設(shè)計(jì)上進(jìn)行框架統(tǒng)一,在框架層面上就把這個(gè)監(jiān)控系統(tǒng)實(shí)現(xiàn)了,涉及到這個(gè)監(jiān)控系統(tǒng)的部門(mén)都可以使用這一統(tǒng)一的監(jiān)控框架,不需要每個(gè)業(yè)務(wù)部門(mén)單獨(dú)去開(kāi)發(fā)小監(jiān)控系統(tǒng)了。以后,這些公用的工具平臺(tái)和框架,可以幫助各個(gè)業(yè)務(wù)線去解決他們通用的痛點(diǎn)問(wèn)題。