摘要:期待大家提供高見(jiàn)建設(shè)我們的服務(wù)之路參考服務(wù)之路漫談一服務(wù)之路漫談二網(wǎng)易云計(jì)算基礎(chǔ)服務(wù)深度整合了及容器技術(shù),提供彈性計(jì)算工具鏈及微服務(wù)基礎(chǔ)設(shè)施等服務(wù),幫助企業(yè)解決架構(gòu)及運(yùn)維等問(wèn)題,使企業(yè)更聚焦于業(yè)務(wù),是新一代的云計(jì)算平臺(tái),點(diǎn)擊可免費(fèi)試用。
此文已由作者堯飄海授權(quán)網(wǎng)易云社區(qū)發(fā)布。
歡迎訪(fǎng)問(wèn)網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營(yíng)經(jīng)驗(yàn)。
Monolithic架構(gòu)在產(chǎn)品訪(fǎng)問(wèn)量很大的情況下,有可能常會(huì)導(dǎo)致整個(gè)產(chǎn)品迭代或升級(jí)過(guò)程不能按預(yù)期進(jìn)行,或者上線(xiàn)風(fēng)險(xiǎn)的不確定性導(dǎo)致上線(xiàn)時(shí)常常信心十足。那么MSA(微服務(wù)架構(gòu))的模式能在很程度上避免Monolithic架構(gòu)在規(guī)模服務(wù)應(yīng)用下的一些缺陷。
微服務(wù)架構(gòu)這個(gè)詞語(yǔ)出現(xiàn)的較早,其實(shí)公司的很多產(chǎn)品也是這么開(kāi)發(fā)和運(yùn)行的,直到ThoughtWorks的專(zhuān)家討論過(guò)微服務(wù)后。Fred George,、James Lewis,Martin Fowler通過(guò)專(zhuān)門(mén)寫(xiě)博文討論微服務(wù),才使得微服務(wù)變成了下一個(gè)時(shí)髦術(shù)語(yǔ),但實(shí)際上大量的論文也沒(méi)有劃分什么才是真正的微服務(wù),但現(xiàn)在每個(gè)公司都想使用一些微服務(wù)來(lái)完成產(chǎn)品的開(kāi)發(fā)。
MSA(微服務(wù)架構(gòu))
在日常的工作中,我們有可能會(huì)有機(jī)會(huì)接觸到運(yùn)行很多早的大型的遺留系統(tǒng),除了特別強(qiáng)大的牛人之外,一般的開(kāi)發(fā)人員或者新人基本上無(wú)法全面的理解系統(tǒng)內(nèi)部的運(yùn)行方式,如果又有新的功能要及時(shí)上線(xiàn) ,那么處理遺留代碼的風(fēng)險(xiǎn)就很高了,經(jīng)常會(huì)出現(xiàn)在對(duì)業(yè)務(wù)理解不全面的情況下修改了某處代碼而引入其他關(guān)鍵的部分。日前有些業(yè)務(wù)團(tuán)隊(duì)確定就遇到了這樣的問(wèn)題,基本通過(guò)微服務(wù)能較好的解決這個(gè)難題,可能按最新的框架模型編寫(xiě)一些小的服務(wù)組合起來(lái),完成業(yè)務(wù)流程,等所以的業(yè)務(wù)都能夠覆蓋全面時(shí),那么老的系統(tǒng)基本上就可以下線(xiàn)了。
微服務(wù)其實(shí)只是一種新的架構(gòu)概念,沒(méi)有什么新的東西,也沒(méi)有明確的范圍定義,只是通過(guò)將功能盡可能的按需求分解到各個(gè)離散的服務(wù)中從而達(dá)到各服務(wù)間的解藕,甚至可以簡(jiǎn)單的看成一個(gè)個(gè)非常小的Monolithic架構(gòu)組合。
微服務(wù)是一種簡(jiǎn)單的應(yīng)用,每個(gè)服務(wù)基本上只完成自己角色的任務(wù),沒(méi)有額外的業(yè)務(wù)代碼,有些甚至一個(gè)算法實(shí)現(xiàn)都可能當(dāng)做一個(gè)服務(wù)來(lái)發(fā)布,比如之前Pomelo游戲框架的地圖的AOI服務(wù),這些服務(wù)基本簡(jiǎn)單到只能完成一個(gè)功能,非常的輕量級(jí)和容易理解,公司內(nèi)的新的項(xiàng)目有些目前基本上采用這樣服務(wù)化的方式來(lái)實(shí)現(xiàn)的,只是將一些業(yè)務(wù)代碼簡(jiǎn)單的包裝通過(guò)通信層較好的完成服務(wù)調(diào)用。
這種架構(gòu)的方式的實(shí)現(xiàn)方式如下:
Alt pic
相對(duì)于前文中的Monolithic架構(gòu)模式中提到的應(yīng)用軟件開(kāi)發(fā)的非功能要求,這些微服務(wù)的架構(gòu)有什么區(qū)別呢?
沒(méi)錯(cuò),這種MSA架構(gòu)實(shí)現(xiàn)方式與SOA的模式非常相似,有些人會(huì)認(rèn)為基本上一樣的,但是微服務(wù)還是有一定的區(qū)別的,SOA的架構(gòu)早期的采用ESB這種企業(yè)總線(xiàn)的方式來(lái)實(shí)現(xiàn),里面包括了很多業(yè)務(wù)規(guī)則,消息路由,很多是采用重型的中間件來(lái)實(shí)現(xiàn)的,整體對(duì)開(kāi)發(fā)人員不是很透明,查問(wèn)題的效率也不是很高。微服務(wù)更加輕量級(jí),所有的操作可能直接通過(guò)消息傳遞的方式來(lái)實(shí)現(xiàn),中間件只是消息的搬運(yùn)工,不會(huì)對(duì)消息進(jìn)行任務(wù)處理。
采用這種架構(gòu)模式的優(yōu)勢(shì)是:
輕量級(jí) 每個(gè)開(kāi)發(fā)者都能容易理解;相關(guān)開(kāi)發(fā)工具對(duì)小應(yīng)用也也較好的支持,而不管相關(guān)的機(jī)器的配置;整個(gè)過(guò)程無(wú)論是編譯,部署過(guò)程都很輕量級(jí),這將使用開(kāi)發(fā)人員,測(cè)試人員和運(yùn)維人員工作效率更加高效。
易升級(jí) 每個(gè)服務(wù)都可以獨(dú)立部署,只要輸入輸出一致,各服務(wù)可以更新的完成運(yùn)維。
易上手 由于代碼簡(jiǎn)單,無(wú)論是新入職的員工還是頂替的角色都能較好的現(xiàn)在業(yè)務(wù)邏輯,每個(gè)組都能獨(dú)立工作,減少和其他的組的溝通的開(kāi)銷(xiāo)。
容錯(cuò)性,每個(gè)服務(wù)獨(dú)立部署,某一個(gè)服務(wù)的失敗不會(huì)影響整體的業(yè)務(wù)不可訪(fǎng)問(wèn),能大大提高用戶(hù)的SLA服務(wù)時(shí)間,提高用戶(hù)的體驗(yàn)。
易擴(kuò)展 由于每個(gè)服務(wù)都有對(duì)應(yīng)的資源需求,很少會(huì)引起資源競(jìng)爭(zhēng),比如各個(gè)服務(wù)可以連接不同的數(shù)據(jù)庫(kù)來(lái)完成對(duì)數(shù)據(jù)庫(kù)的依賴(lài)。
易運(yùn)維 通過(guò)復(fù)制多份的方式來(lái)實(shí)現(xiàn)模向擴(kuò)展,負(fù)載均衡完成請(qǐng)求路由。
易掉頭 微服務(wù)能較好的隨時(shí)使用新技術(shù),新的框架帶來(lái)的紅利,而不用受到技術(shù)債的影響。
當(dāng)然,隨著系統(tǒng)服務(wù)的逐步細(xì)化和擴(kuò)大,每個(gè)服務(wù)多帶帶部署,微服務(wù)架構(gòu)的一些問(wèn)題也暴露出來(lái)了:
由于每個(gè)服務(wù)的多帶帶部署,按照日前云計(jì)算的使用方式,每個(gè)服務(wù)都申請(qǐng)一臺(tái)云主機(jī)來(lái)部署,將造成大量的工作時(shí)間化在溝通和交流上,包括主機(jī)的申請(qǐng),初始化和權(quán)限申請(qǐng)等,其次每個(gè)產(chǎn)品要申請(qǐng)大量的云主機(jī)來(lái)服務(wù),數(shù)量將成指數(shù)級(jí)別增長(zhǎng),從來(lái)進(jìn)一步帶來(lái)運(yùn)維管理等相關(guān)問(wèn)題。
資源的使用方式,微服務(wù)采用云主機(jī)部署的方式也將使用資源的利用不充分,造成很多的資源浪費(fèi),包括內(nèi)存,磁盤(pán)等,以前只有運(yùn)行一個(gè)JVM就能跑起來(lái)的服務(wù),現(xiàn)在可能需要運(yùn)行多個(gè)JVM才能完成。
關(guān)鍵性業(yè)務(wù)復(fù)雜,對(duì)于一些業(yè)務(wù)要求很高的場(chǎng)景,比如訂單支付之類(lèi)的服務(wù)會(huì)引入分布式事務(wù)的復(fù)雜操作,日前我們公司也開(kāi)發(fā)了TCC的分布式事務(wù)來(lái)處理這類(lèi)問(wèn)題。
分布式系統(tǒng) 通過(guò)服務(wù)調(diào)用,至少增加了一層的開(kāi)銷(xiāo),當(dāng)然這種開(kāi)銷(xiāo)一般情況下基本可以忽略,服務(wù)端調(diào)用除了業(yè)務(wù)的邏輯之外要的開(kāi)銷(xiāo)非常小;除此之外還需要明確了解自己的業(yè)務(wù)類(lèi)型,這樣才能更好的根據(jù)業(yè)務(wù)類(lèi)型部署運(yùn)行不同類(lèi)型的主機(jī)上。
測(cè)試?yán)щy 開(kāi)發(fā)人員在完成自己代碼開(kāi)發(fā)后,由于涉及到各個(gè)系統(tǒng)的業(yè)務(wù),因此實(shí)現(xiàn)的不同的測(cè)試用例要跨不同的服務(wù)來(lái)編寫(xiě),同時(shí)由于分布式事務(wù)之類(lèi)的操作,導(dǎo)致測(cè)試場(chǎng)景更加復(fù)雜,對(duì)于服務(wù)的測(cè)試需要測(cè)試人員編譯相關(guān)的測(cè)試接口和集成測(cè)試用例來(lái)完成,因此對(duì)測(cè)試人員的要求會(huì)更高。
部署復(fù)雜 運(yùn)維人員部署不同的類(lèi)型的服務(wù)需要了解不同的部署方法,由于服務(wù)的部署復(fù)雜,對(duì)應(yīng)帶來(lái)的協(xié)調(diào)管理成本也會(huì)相應(yīng)的增加,如何高效的實(shí)現(xiàn)服務(wù)部署的自動(dòng)化就變得非常的嚴(yán)峻。通過(guò)DEVOPS技術(shù)來(lái)減少和防止由于繁煩的配置導(dǎo)致事故。
通過(guò)二種架構(gòu)方式的對(duì)比,采用何種架構(gòu)方式來(lái)完成應(yīng)用的部署對(duì)于技術(shù)負(fù)責(zé)人或架構(gòu)師來(lái)說(shuō)也是一個(gè)非常有挑戰(zhàn)性的難題,一般在項(xiàng)目的初期或業(yè)務(wù)上線(xiàn)DEADLINE的需求下,會(huì)采用前者架構(gòu)來(lái)快速實(shí)現(xiàn),在項(xiàng)目初期一般也不會(huì)遇到非常大的訪(fǎng)問(wèn)量的應(yīng)用的,同時(shí)細(xì)化,全分布化服務(wù)化的架構(gòu)也會(huì)導(dǎo)致開(kāi)發(fā)速度變慢。而如果業(yè)務(wù)快速發(fā)展,項(xiàng)目的技術(shù)架構(gòu)債也會(huì)更加重,需要人員來(lái)完成服務(wù)化的架構(gòu)改造來(lái)適用業(yè)務(wù)的發(fā)展。因此何時(shí)采用架構(gòu)模式需求根據(jù)項(xiàng)目的業(yè)務(wù)需求和實(shí)際的能力來(lái)決定,當(dāng)其他的系統(tǒng)不能很好的服務(wù)于項(xiàng)目或不能滿(mǎn)足項(xiàng)目的生態(tài)需求時(shí),這也是負(fù)責(zé)人或架構(gòu)師的職責(zé)所在。
同樣,在項(xiàng)目開(kāi)發(fā),測(cè)試和上線(xiàn)時(shí),不同的架構(gòu)模式需要使用不同的部署工具來(lái)實(shí)現(xiàn)高效的自動(dòng)部署,盡量減少各人員的溝通和管理等成本,專(zhuān)業(yè)人員只要把注意力放在自身的業(yè)務(wù)范圍內(nèi),為項(xiàng)目的上線(xiàn)實(shí)現(xiàn)工作自身的價(jià)值。對(duì)于Monolithic架構(gòu)的應(yīng)用,我們的自動(dòng)部署平臺(tái)系統(tǒng)(http://omad.hz.netease.com) 能較好的擔(dān)當(dāng)這類(lèi)角色,但是對(duì)于MSA服務(wù)架構(gòu)的項(xiàng)目,自動(dòng)部署平臺(tái)系統(tǒng)盡管也能部署,但是也會(huì)遇到上面提到部署問(wèn)題,比如:主機(jī)數(shù)量爆炸式的增長(zhǎng)帶來(lái)的管理成本,對(duì)資源的合理使用等。如何解決這些問(wèn)題,需要大家一起努力來(lái)解決,特別是如果和GOOGLE一樣每周需要20億個(gè)服務(wù)部署的時(shí)候,我們對(duì)應(yīng)的服務(wù)能跟上業(yè)務(wù)的需求不?我們的PaaS的服務(wù)能否很好的面對(duì)這些挑戰(zhàn)?作好準(zhǔn)備了嗎?
后續(xù)本文將繼續(xù)介紹其他公司的服務(wù)化解決方案,包括ebay,Amazon,淘寶等國(guó)內(nèi)外,隨后也將詳細(xì)介紹我們的實(shí)現(xiàn)方案和具體做法,敬請(qǐng)期待。
其實(shí),我們的PaaS服務(wù)化之路剛剛開(kāi)始; 其實(shí),我們的PaaS服務(wù)化之路已經(jīng)開(kāi)始;
最后,PaaS可能是一套開(kāi)發(fā)、測(cè)試、運(yùn)維的規(guī)范和流程的實(shí)戰(zhàn)總結(jié),也可能是系統(tǒng)化的工具組合,但業(yè)務(wù)和技術(shù)是不斷變化的,沒(méi)有那個(gè)理論和工具能一勞永逸地回答和解決所有問(wèn)題,只有最好,只有適合,所以PaaS也不是銀彈。期待大家提供高見(jiàn)建設(shè)我們的PaaS服務(wù)之路!
參考:
http://flux7.com/devops-for-s...
http://www.oschina.net/transl...
http://www.infoq.com/cn/news/...
http://microservices.io/patte...
http://www.csdn.net/article/2...
PaaS服務(wù)之路漫談(一)
PaaS服務(wù)之路漫談(二)
網(wǎng)易 云計(jì)算基礎(chǔ)服務(wù) 深度整合了 IaaS 、 PaaS 及容器技術(shù),提供彈性計(jì)算、 DevOps 工具鏈及微服務(wù)基礎(chǔ)設(shè)施等服務(wù),幫助企業(yè)解決 IT 、架構(gòu)及運(yùn)維等問(wèn)題,使企業(yè)更聚焦于業(yè)務(wù),是新一代的云計(jì)算平臺(tái), 點(diǎn)擊可免費(fèi)試用 。
文章來(lái)源: 網(wǎng)易云社區(qū)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25270.html
摘要:當(dāng)前隨著國(guó)內(nèi)外云計(jì)算廠(chǎng)商對(duì)于不同服務(wù)模式的不斷探索已經(jīng)使得整個(gè)云計(jì)算市場(chǎng)實(shí)現(xiàn)了快速增長(zhǎng)尤其是對(duì)于像混合云這類(lèi)高復(fù)雜的應(yīng)用來(lái)說(shuō)確實(shí)在很大程度上推動(dòng)了國(guó)內(nèi)整個(gè)云產(chǎn)業(yè)的利潤(rùn)增長(zhǎng)。近些年,國(guó)內(nèi)的云計(jì)算市場(chǎng)已經(jīng)呈現(xiàn)出了多行業(yè)深度化應(yīng)用的發(fā)展態(tài)勢(shì),特別是隨著物聯(lián)網(wǎng)等技術(shù)快速發(fā)展,帶動(dòng)了私有云、公有云等云計(jì)算市場(chǎng)的快速發(fā)展,越來(lái)越多的城市開(kāi)始開(kāi)展試點(diǎn)工作,在電力、物流、交通、智慧城市、環(huán)保、醫(yī)療、教育等很...
摘要:下面是我畫(huà)的一個(gè)簡(jiǎn)單的類(lèi)比圖扯到虛擬機(jī)和容器的區(qū)別,我決定祭出這張神圖簡(jiǎn)單看圖來(lái)說(shuō)就可以知道容器比虛擬化來(lái)的更高效。虛擬化沒(méi)有抽象整個(gè)硬件,它們只是抽象應(yīng)用或應(yīng)用的部分。一般來(lái)說(shuō)元可以用個(gè)月,而且目前還有元的紅包,個(gè)人感覺(jué)是非常劃算的。 云平臺(tái)實(shí)現(xiàn)的技術(shù)原理大同小異,但是難度最大的還是這里的工程難度——說(shuō)白了就是實(shí)現(xiàn)起來(lái)需要調(diào)配資源,多人協(xié)作,工期漫長(zhǎng),協(xié)同開(kāi)發(fā)難度大,同時(shí)還要兼顧用戶(hù)...
摘要:下面是我畫(huà)的一個(gè)簡(jiǎn)單的類(lèi)比圖扯到虛擬機(jī)和容器的區(qū)別,我決定祭出這張神圖簡(jiǎn)單看圖來(lái)說(shuō)就可以知道容器比虛擬化來(lái)的更高效。虛擬化沒(méi)有抽象整個(gè)硬件,它們只是抽象應(yīng)用或應(yīng)用的部分。一般來(lái)說(shuō)元可以用個(gè)月,而且目前還有元的紅包,個(gè)人感覺(jué)是非常劃算的。 云平臺(tái)實(shí)現(xiàn)的技術(shù)原理大同小異,但是難度最大的還是這里的工程難度——說(shuō)白了就是實(shí)現(xiàn)起來(lái)需要調(diào)配資源,多人協(xié)作,工期漫長(zhǎng),協(xié)同開(kāi)發(fā)難度大,同時(shí)還要兼顧用戶(hù)...
摘要:下面是我畫(huà)的一個(gè)簡(jiǎn)單的類(lèi)比圖扯到虛擬機(jī)和容器的區(qū)別,我決定祭出這張神圖簡(jiǎn)單看圖來(lái)說(shuō)就可以知道容器比虛擬化來(lái)的更高效。虛擬化沒(méi)有抽象整個(gè)硬件,它們只是抽象應(yīng)用或應(yīng)用的部分。一般來(lái)說(shuō)元可以用個(gè)月,而且目前還有元的紅包,個(gè)人感覺(jué)是非常劃算的。 云平臺(tái)實(shí)現(xiàn)的技術(shù)原理大同小異,但是難度最大的還是這里的工程難度——說(shuō)白了就是實(shí)現(xiàn)起來(lái)需要調(diào)配資源,多人協(xié)作,工期漫長(zhǎng),協(xié)同開(kāi)發(fā)難度大,同時(shí)還要兼顧用戶(hù)...
閱讀 1458·2023-04-25 19:00
閱讀 4161·2021-11-17 17:00
閱讀 1771·2021-11-11 16:55
閱讀 1531·2021-10-14 09:43
閱讀 3132·2021-09-30 09:58
閱讀 861·2021-09-02 15:11
閱讀 2130·2019-08-30 12:56
閱讀 1408·2019-08-30 11:12