轉(zhuǎn)轉(zhuǎn)公司架構(gòu)算法部孫玄:AI下的微服務(wù)架構(gòu)
原創(chuàng)【51CTO.com原創(chuàng)稿件】2014年前后,微服務(wù)架構(gòu)理念慢慢流行開來(lái),加之Amazon、Netflix等著名互聯(lián)網(wǎng)公司的應(yīng)用實(shí)踐,開發(fā)者們更加認(rèn)定微服務(wù)能夠打破架構(gòu)層面的瓶頸。時(shí)至今日,無(wú)論是新開發(fā)系統(tǒng)、還是有十多年光景的遺留系統(tǒng),不談微服務(wù)團(tuán)隊(duì)實(shí)屬罕見。那么,微服務(wù)架構(gòu)當(dāng)前應(yīng)用現(xiàn)狀如何?弊端有哪些?AI技術(shù)落地又帶來(lái)哪些挑戰(zhàn)?
近日,2018WOT全球軟件與運(yùn)維技術(shù)峰會(huì)重量級(jí)嘉賓,轉(zhuǎn)轉(zhuǎn)公司架構(gòu)算法部負(fù)責(zé)人孫玄接受了我們專訪,核心圍繞微服務(wù)架構(gòu)的優(yōu)勢(shì)、應(yīng)用場(chǎng)景與轉(zhuǎn)轉(zhuǎn)微服務(wù)架構(gòu)演進(jìn),及AI技術(shù)應(yīng)用必然要面對(duì)的挑戰(zhàn)展開。
孫玄·轉(zhuǎn)轉(zhuǎn)公司***架構(gòu)師/架構(gòu)算法部負(fù)責(zé)人
微服務(wù)架構(gòu)的優(yōu)勢(shì)、應(yīng)用場(chǎng)景與弊端
微服務(wù)架構(gòu)的特點(diǎn)
談微服務(wù)架構(gòu)之前我們必要先說說單體架構(gòu)。單體架構(gòu)是指業(yè)務(wù)功能的實(shí)現(xiàn)全部在一個(gè)進(jìn)程(process)內(nèi)完成,優(yōu)勢(shì)有二:
其一,在于請(qǐng)求響應(yīng)延遲低,接收客戶端請(qǐng)求,經(jīng)過一次網(wǎng)絡(luò)交互從數(shù)據(jù)庫(kù)批量獲取數(shù)據(jù),其余的功能全部在進(jìn)程內(nèi)完成,避免了多次的網(wǎng)絡(luò)交互;
其二,第二僅一個(gè)進(jìn)程,部署和運(yùn)維成本小。
但業(yè)務(wù)功能單元間耦合嚴(yán)重、擴(kuò)展性差、技術(shù)選型單一(在一個(gè)進(jìn)程內(nèi)是否可以采用多種開發(fā)語(yǔ)言?)等缺點(diǎn)也很明顯。其中架構(gòu)顆粒過粗,嚴(yán)重影響系統(tǒng)迭代速度是***的問題。
單體架構(gòu)很難滿足持續(xù)高速發(fā)展的互聯(lián)網(wǎng)業(yè)務(wù),故按照某些維度進(jìn)行拆分:
- 按照系統(tǒng)水平方向進(jìn)行拆分(水平分層架構(gòu))。
- 按照業(yè)務(wù)功能垂直拆分(SOA架構(gòu))。
- 按照業(yè)務(wù)功能垂直拆分又按照系統(tǒng)水平方向進(jìn)行拆分(微服務(wù)架構(gòu))。
如下圖所示,微服務(wù)架構(gòu)是Martin Fowler 在2014年提出的架構(gòu)模式。
微服務(wù)架構(gòu)一般是按照業(yè)務(wù)領(lǐng)域拆分服務(wù)、一系列小服務(wù)構(gòu)成、服務(wù)獨(dú)立部署、獨(dú)立運(yùn)行、服務(wù)間去中心化管理(任何一個(gè)服務(wù)都可以采用任何開發(fā)語(yǔ)言 C/PHP/Go/Java等。
運(yùn)行于任何的平臺(tái)Linux/Windows等,理想是豐滿的,現(xiàn)實(shí)相對(duì)骨感)。
孫玄老師表示,微服務(wù)首先按照業(yè)務(wù)領(lǐng)域模型垂直拆分,即根據(jù)不同的業(yè)務(wù)功能單元進(jìn)行垂直拆分。之后,對(duì)垂直拆分后的服務(wù),在水平方向繼續(xù)進(jìn)行拆分。
微服務(wù)架構(gòu)的優(yōu)勢(shì)與現(xiàn)狀
當(dāng)問及微服務(wù)架構(gòu)的優(yōu)勢(shì),孫玄這樣這樣說,采用微服務(wù)架構(gòu)后,項(xiàng)目能夠做到快速迭代,持續(xù)交付。服務(wù)架構(gòu)的出現(xiàn),解決了水平分層架構(gòu)以及SOA架構(gòu)拆分不徹底的問題。
- 從業(yè)務(wù)角度看,微服務(wù)架構(gòu)本質(zhì)上一個(gè)業(yè)務(wù)架構(gòu),對(duì)業(yè)務(wù)了解越深刻,微服務(wù)拆分越合理;
- 從系統(tǒng)角度看,微服務(wù)架構(gòu)是水平分層架構(gòu)和SOA架構(gòu)的結(jié)合體。
提到微服務(wù)架構(gòu),就不得不提到Netflix公司。Netflix是一家成功實(shí)踐微服務(wù)架構(gòu)的互聯(lián)網(wǎng)公司,幾年前,Netflix就把它的幾乎整個(gè)微服務(wù)框架棧開源貢獻(xiàn)給了社區(qū)。
Netflix公司的開源框架組件已經(jīng)在Netflix的大規(guī)模分布式微服務(wù)環(huán)境中經(jīng)過多年的生產(chǎn)實(shí)戰(zhàn)驗(yàn)證,正逐步被社區(qū)接受為構(gòu)造微服務(wù)框架的標(biāo)準(zhǔn)組件。Pivotal去年推出的Spring Cloud開源產(chǎn)品,主要是基于對(duì)Netflix開源組件的進(jìn)一步封裝,方便Spring開發(fā)人員構(gòu)建微服務(wù)基礎(chǔ)框架。
微服務(wù)架構(gòu)的應(yīng)用場(chǎng)景
當(dāng)前,國(guó)內(nèi)有很多系統(tǒng)在擁抱微服務(wù)架構(gòu),轉(zhuǎn)轉(zhuǎn)二手交易平臺(tái)也是之一。除內(nèi)部積極實(shí)施微服務(wù)架構(gòu)外,一些公司還會(huì)把框架開源出來(lái),比如百度的ppc,阿里的Dubbo等。
微服務(wù)架構(gòu)不適用的應(yīng)用場(chǎng)景有三:內(nèi)部系統(tǒng)、系統(tǒng)要求低延遲和數(shù)據(jù)要求強(qiáng)一致性。
內(nèi)部系統(tǒng)
這些系統(tǒng)包括企業(yè)內(nèi)部OA系統(tǒng)(比如工作匯報(bào)等)、財(cái)務(wù)審計(jì)系統(tǒng)(比如報(bào)銷系統(tǒng)等)、HR系統(tǒng)(比如考勤系統(tǒng)等)、行政系統(tǒng)(比如會(huì)議室預(yù)定等)、運(yùn)維自動(dòng)化系統(tǒng)(工單系統(tǒng)、發(fā)布系統(tǒng)、CMDB系統(tǒng)等)。這類系統(tǒng)的特點(diǎn)是功能相對(duì)簡(jiǎn)單、需求固定,變化頻率不高、使用人數(shù)較少、平均訪問次數(shù)不高。對(duì)這類的系統(tǒng)使用微服務(wù)架構(gòu)的必要性不大。
系統(tǒng)要求低延遲
按照微服務(wù)架構(gòu)拆分服務(wù)后,服務(wù)數(shù)量變多,服務(wù)間的調(diào)用關(guān)系也會(huì)變的錯(cuò)綜復(fù)雜,導(dǎo)致請(qǐng)求的鏈條變長(zhǎng),使得請(qǐng)求的平均耗時(shí)增加。因此對(duì)請(qǐng)求耗時(shí)極其敏感的場(chǎng)景,微服務(wù)架構(gòu)不是合理的選擇。比如量化交易場(chǎng)景,一個(gè)請(qǐng)求會(huì)到達(dá)多個(gè)服務(wù)提供方,哪家服務(wù)方的響應(yīng)被接受取決于服務(wù)方的響應(yīng)速度,在這個(gè)業(yè)務(wù)場(chǎng)景下,哪怕響應(yīng)速度慢1ms,也就無(wú)效了。
數(shù)據(jù)要求強(qiáng)一致性
微服務(wù)架構(gòu)下數(shù)據(jù)比較分散,實(shí)施數(shù)據(jù)一致性相對(duì)困難,特別是強(qiáng)一致性。因此對(duì)數(shù)據(jù)要求強(qiáng)一致性的場(chǎng)景,微服務(wù)架構(gòu)就變得不在合適。
除了上述三大場(chǎng)景外,在互聯(lián)網(wǎng)的其他場(chǎng)景中,都能夠使用微服務(wù)架構(gòu)。
孫玄表示,微服務(wù)架構(gòu)也存在明顯的弊端:開發(fā)人員除了關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn)外,還需要在微服務(wù)模塊里處理一系列問題,比如服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、服務(wù)通訊、負(fù)載均衡、服務(wù)熔斷、請(qǐng)求超時(shí)重試等,這是非常糟糕的。業(yè)務(wù)開發(fā)團(tuán)隊(duì)的強(qiáng)項(xiàng)在于業(yè)務(wù)理解,而不是技術(shù)。能否讓業(yè)務(wù)開發(fā)人員僅關(guān)注業(yè)務(wù)開發(fā),服務(wù)間通訊以及請(qǐng)求管理功能不再關(guān)心?服務(wù)網(wǎng)格架構(gòu)解決了這個(gè)問題,讓業(yè)務(wù)開發(fā)人員真正解脫。
轉(zhuǎn)轉(zhuǎn)二手較易平臺(tái)的微服務(wù)架構(gòu)演進(jìn)
轉(zhuǎn)轉(zhuǎn)二手較易平臺(tái)包括用戶功能、商品功能、交易功能、搜索功能及推薦功能。各個(gè)業(yè)務(wù)單元相對(duì)獨(dú)立,首先按照業(yè)務(wù)領(lǐng)域模型垂直拆分成用戶、商品、交易、搜索、推薦微服務(wù)。對(duì)每一個(gè)功能單元(商品等),繼續(xù)進(jìn)行水平拆分,分為商品網(wǎng)關(guān)層、商品業(yè)務(wù)邏輯層、商品數(shù)據(jù)訪問層、商品DB/Cache,對(duì)用戶、交易、搜索、推薦等業(yè)務(wù)同樣方式進(jìn)行水平拆分。
如下圖,是轉(zhuǎn)轉(zhuǎn)二手較易平臺(tái)最終微服務(wù)架構(gòu)。
轉(zhuǎn)轉(zhuǎn)二手較易平臺(tái)還包括了服務(wù)治理功能:注冊(cè)中心、配置中心。網(wǎng)關(guān)負(fù)責(zé)請(qǐng)求接入,業(yè)務(wù)邏輯層用于各種業(yè)務(wù)邏輯的處理;數(shù)據(jù)訪問層用做數(shù)據(jù)訪問代理,提供ORM、數(shù)據(jù)Sharding以及屏蔽底層存儲(chǔ)的差異性等功能;注冊(cè)中心負(fù)責(zé)服務(wù)的注冊(cè)和發(fā)現(xiàn);配置中心負(fù)責(zé)服務(wù)個(gè)性化配置的讀取。
隨著產(chǎn)品功能越來(lái)越多,業(yè)務(wù)復(fù)雜度也越來(lái)越高,在業(yè)務(wù)邏輯層會(huì)有一些功能重復(fù)出現(xiàn)(比如業(yè)務(wù)邏輯層都需要用戶登錄邏輯功能),解決功能重復(fù)的問題,轉(zhuǎn)轉(zhuǎn)在業(yè)務(wù)邏輯層之下,抽象提取出公共業(yè)務(wù)邏輯層。用戶的請(qǐng)求鏈路變?yōu)榫W(wǎng)關(guān)、業(yè)務(wù)邏輯層、公共邏輯層、數(shù)據(jù)訪問層。
AI下的微服務(wù)架構(gòu)
轉(zhuǎn)轉(zhuǎn)二手交易平臺(tái),在搜索、個(gè)性化推薦、風(fēng)控等領(lǐng)域都有使用AI技術(shù)。從AI方向講,轉(zhuǎn)轉(zhuǎn)使用較多的是機(jī)器學(xué)習(xí),特別是有監(jiān)督學(xué)習(xí)。深度學(xué)習(xí)方面也在嘗試,在風(fēng)控等領(lǐng)域已經(jīng)在使用,取得不錯(cuò)的效果。
就搜索推薦來(lái)說,從本質(zhì)是解決海量商品召回及排序的問題:
- 召回層,涉及到大規(guī)模商品數(shù)據(jù),如何使商品召回更精確,如何使用復(fù)雜模型,無(wú)論是在工程還是在算法應(yīng)用層面,都會(huì)面對(duì)較大的挑戰(zhàn)。
- 排序?qū)樱褂酶嗟奶卣鞑?yīng)用復(fù)雜的排序模型,使得最終序更能符合用戶的期望。
孫玄表示,商品召回量越來(lái)越大,機(jī)器學(xué)習(xí)模型越來(lái)越復(fù)雜,如何合理使用分布式并行計(jì)算技術(shù),使得用戶的請(qǐng)求能夠盡快返回,對(duì)微服務(wù)工程架構(gòu)的挑戰(zhàn)會(huì)越來(lái)越大。
那么,隨著商品量日益增多,機(jī)器學(xué)習(xí)模型越來(lái)越復(fù)雜,在工程架構(gòu)體系方面要如何更好地支持,用戶請(qǐng)求要如何盡可能快速返回?
2018年5月18、19日,2018WOT全球軟件與運(yùn)維技術(shù)峰會(huì)期間,孫玄將在“容器下的AIOps專場(chǎng)“做主題為”轉(zhuǎn)轉(zhuǎn)如何打造AI工程架構(gòu)體系“的演講。屆時(shí)會(huì)對(duì)工程架構(gòu)體系石器、鐵器、工業(yè)革命各個(gè)階段的適用場(chǎng)合、架構(gòu)特點(diǎn)及進(jìn)一步演進(jìn)原因進(jìn)行詳細(xì)闡述。開發(fā)者們能夠?qū)D(zhuǎn)轉(zhuǎn)AI工程架構(gòu)體系演進(jìn)路線知其然知其所以然,從中借鑒一些實(shí)踐經(jīng)驗(yàn),應(yīng)用于自己的AI工程架構(gòu)中。
【被訪者簡(jiǎn)介】
孫玄,現(xiàn)任轉(zhuǎn)轉(zhuǎn)公司***架構(gòu)師/架構(gòu)算法部負(fù)責(zé)人,前58集團(tuán)技術(shù)委員會(huì)主席,高級(jí)系統(tǒng)架構(gòu)師,“架構(gòu)之美”公眾號(hào)作者。擅長(zhǎng)系統(tǒng)架構(gòu)設(shè)計(jì),大數(shù)據(jù),機(jī)器學(xué)習(xí)等技術(shù)領(lǐng)域。代表公司多次參加 Artificial Intelligence Conference、QCon、ArchSummit、SDCC、CCTC、DTCC、Top100、Strata + Hadoop World、WOT 等大會(huì)嘉賓演講,并為《程序員》雜志撰稿 2 篇。 前百度高級(jí)工程師,參與百度社區(qū)搜索部多個(gè)基礎(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。畢業(yè)于浙江大學(xué)。
【本月排行***0】
- 張真:AIOps六大技術(shù)難點(diǎn)與宜信運(yùn)維的重大變革
- 新炬網(wǎng)絡(luò)程永新:插上AI翅膀 運(yùn)維平臺(tái)煥發(fā)出嶄新生命力
- 從SIEM&AI到SIEM@AI AI構(gòu)建下一代企業(yè)安全大腦
- 基于線性網(wǎng)絡(luò)的語(yǔ)音合成說話人自適應(yīng)
- 轉(zhuǎn)轉(zhuǎn)公司架構(gòu)算法部孫玄:AI下的微服務(wù)架構(gòu)
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】