去哪兒網(wǎng)馬文: ESAAS平臺(tái)技術(shù)開發(fā)實(shí)戰(zhàn)
馬文,去哪兒網(wǎng)平臺(tái)事業(yè)部數(shù)據(jù)平臺(tái)研發(fā)工程師, 于2015年7月份加入去哪兒網(wǎng), 在平臺(tái)事業(yè)部從事運(yùn)維開發(fā)工作。其工作范圍主要有Mesos / Marathon / Docker等資源管理調(diào)度和容器方面的研究,ELK日志收集方面的研究,Elasticsearch數(shù)據(jù)搜索技術(shù)的研究以及Elasticsearch SAAS平臺(tái)的建設(shè)和運(yùn)維工作。
馬文先生所在的去哪兒網(wǎng)ops部門屬于運(yùn)維和開發(fā)部門,主要負(fù)責(zé)公司基礎(chǔ)設(shè)施的開發(fā)和保障,為公司提供基礎(chǔ)平臺(tái)的建設(shè)與基礎(chǔ)公共設(shè)施的建設(shè)。采訪過(guò)程中,馬文先生告訴筆者,作為公司的后勤保障部門,我們的工作就是為公司的其他業(yè)務(wù)部門提供優(yōu)質(zhì)的服務(wù),例如某個(gè)業(yè)務(wù)需要搜索服務(wù),我們就為他們提供搜索平臺(tái);某個(gè)部門要使用日志收集功能,就會(huì)為他們提供這一服務(wù)。因此,如何建設(shè)一個(gè)強(qiáng)大的系統(tǒng)平臺(tái),至關(guān)重要。為此,我們利用Mesos/Docker技術(shù)開發(fā)了Elasticsearch SAAS(ESAAS)平臺(tái)。
Elasticsearch SAAS(ESAAS)平臺(tái)在開發(fā)過(guò)程中遇到的***困難是什么?是如何解決的?隨后,筆者就這一話題與馬文先生進(jìn)行了溝通。在談到相關(guān)的技術(shù)話題后,馬文先生在回答筆者提問(wèn)時(shí)充分體現(xiàn)出了一名研發(fā)工程師的嚴(yán)謹(jǐn),講話思維敏捷,邏輯清晰,除了技術(shù)上的相關(guān)內(nèi)容溝通外,沒有過(guò)多的話語(yǔ)。
馬文先生表示,利用Mesos/Docker技術(shù)開發(fā)的Elasticsearch SAAS(ESAAS)平臺(tái)是2016年3/4月份剛剛上線的系統(tǒng),是一個(gè)比較年輕的系統(tǒng)。在這個(gè)系統(tǒng)的建設(shè)過(guò)程中,主要遇到了三個(gè)方面的問(wèn)題。
***,在系統(tǒng)建設(shè)初期遇到了服務(wù)編排的問(wèn)題,這也是大部分私有云服務(wù)最核心的問(wèn)題,主要是解決怎么才能把系統(tǒng)中的各個(gè)組件合理的編排在一個(gè)流程之內(nèi)。在遇到這個(gè)問(wèn)題后,團(tuán)隊(duì)積極去尋找一些業(yè)內(nèi)比較好的開源的成果,一是參考了ES官方提供的Elasticsearch Cloud這項(xiàng)服務(wù),它是一個(gè)基于ES的基礎(chǔ)的云服務(wù)平臺(tái)。二是參考了亞馬遜提供的基礎(chǔ)云服務(wù)。除此之外,我們還結(jié)合公司內(nèi)部的實(shí)際使用情況,比如在沒有進(jìn)行這項(xiàng)業(yè)務(wù)之前,公司各個(gè)業(yè)務(wù)部門是怎么樣使用ES服務(wù)的,進(jìn)行了系統(tǒng)的設(shè)計(jì)。
因此,在Elasticsearch SAAS(ESAAS)平臺(tái)開發(fā)過(guò)程中,主要參考了業(yè)界比較好的開源系統(tǒng),結(jié)合公司內(nèi)部的實(shí)際情況,進(jìn)行了設(shè)計(jì)和開發(fā)。
第二,在服務(wù)上線后,后期的開發(fā)和維護(hù)過(guò)程中遇到的***的問(wèn)題是私有云平臺(tái)內(nèi)部資源過(guò)熱。所謂資源過(guò)熱,是因?yàn)镋lasticsearch SAAS(ESAAS)平臺(tái)是一個(gè)資源池化的系統(tǒng),把所有的資源都放到一個(gè)池子當(dāng)中,就會(huì)出現(xiàn)這個(gè)問(wèn)題。原因是由于我們提供的ES服務(wù)是以集群為單位的,每個(gè)業(yè)務(wù)線向我們申請(qǐng)ES服務(wù)時(shí)有時(shí)會(huì)造成資源扎堆的情況,例如某幾臺(tái)服務(wù)器由于Mesos調(diào)度的結(jié)果就會(huì)有比較集中的ES節(jié)點(diǎn),就會(huì)造成幾種情況發(fā)生。***種是某些服務(wù)器的磁盤已經(jīng)用滿,而其他服務(wù)器的磁盤利用率則不高。第二種是計(jì)算I/O比較大的幾個(gè)集群扎堆在一起,導(dǎo)致這些服務(wù)器的I/O會(huì)非常高,其他服務(wù)器利用率就會(huì)較低。
在解決資源過(guò)熱的問(wèn)題上,分成了三個(gè)步驟。***步是統(tǒng)計(jì)整體平臺(tái)中資源的情況,統(tǒng)計(jì)磁盤扎堆的情況、I/O扎堆的情況,并將統(tǒng)計(jì)的結(jié)果做聚合分析,進(jìn)行直觀展示,這樣就能看到集群里面哪一塊局部過(guò)熱。第二步是人工調(diào)整,根據(jù)***步的展示結(jié)果,通過(guò)人工遷移的方法去調(diào)整過(guò)熱的點(diǎn),進(jìn)行平衡使用。通過(guò)逐步調(diào)整,就會(huì)總結(jié)出一套規(guī)律和算法模式。第三步是根據(jù)人工調(diào)整的規(guī)則,變成自動(dòng)化的處理,將重復(fù)的人工勞動(dòng),變成自動(dòng)化。
馬文先生表示,Elasticsearch SAAS(ESAAS)平臺(tái)開發(fā)已經(jīng)進(jìn)入到第二步的調(diào)整,并且總結(jié)了一些經(jīng)驗(yàn),接下來(lái)將會(huì)進(jìn)入第三步,將重復(fù)的人工勞動(dòng)變成自動(dòng)化。逐步的系統(tǒng)就會(huì)自動(dòng)解決資源過(guò)熱的情況,不再需要人工參與。他表示,目前系統(tǒng)已經(jīng)覆蓋了30+的業(yè)務(wù),在系統(tǒng)上已經(jīng)有50個(gè)集群,已經(jīng)承載了公司大部分的ES服務(wù)。存儲(chǔ)規(guī)模已經(jīng)能夠達(dá)到200TB+的數(shù)據(jù)存儲(chǔ)量。此外,私有云的構(gòu)建模式已經(jīng)在公司推廣開來(lái),其他的部門也在按照我們這種私有云的模式在后續(xù)構(gòu)建一些其他相關(guān)的服務(wù)平臺(tái)。
在采訪結(jié)束前,筆者詢問(wèn)了馬文先生對(duì)WOT峰會(huì)的一些建議,馬文先生表示,WOT不光是技術(shù)交流的峰會(huì),更多的是一個(gè)平臺(tái),技術(shù)人共同成長(zhǎng)的平臺(tái)。在這個(gè)平臺(tái)上,有很多技術(shù)牛人聚集在一起,在一起分享,不僅對(duì)于我個(gè)人,對(duì)于技術(shù)圈都有推動(dòng)作用。對(duì)我個(gè)人的提高也有推動(dòng)。他建議我們應(yīng)該多增加一些線下的技術(shù)交流,以推動(dòng)技術(shù)人的共同成長(zhǎng)。