在談微服務(wù)之前我們需要先了解兩個概念:SOA和ESB长豁。
SOA
面向服務(wù)的架構(gòu)(SOA)是一個組件模型疾捍,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的悯蝉,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺篷帅、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互枢贿。
這是百度百科中給出的解釋。簡單來說刀脏,SOA可以理解為企業(yè)內(nèi)部各類系統(tǒng)的集成局荚,每個系統(tǒng)對外提供粗粒度的服務(wù),這些服務(wù)都部署在一個中心平臺上愈污,這個平臺就是ESB(Enterprise Service Bus)—企業(yè)服務(wù)總線耀态。
這是我們對于SOA的理解,不難看到暂雹,ESB是一個很重的機(jī)制首装,首先他集成了多種異構(gòu)系統(tǒng),使得內(nèi)部通訊方式復(fù)雜杭跪,協(xié)議眾多仙逻。其次,ESB的高度中心化給企業(yè)帶來了一定的單點(diǎn)故障的隱患涧尿,并且在ESB上統(tǒng)一部署服務(wù)系奉,也一定程度上限制了服務(wù)的后期擴(kuò)展」昧基于以上這些不足喜最,微服務(wù)應(yīng)運(yùn)而生。
在微服務(wù)架構(gòu)中庄蹋,首當(dāng)其沖強(qiáng)調(diào)的第一個重點(diǎn)就是瞬内,企業(yè)的業(yè)務(wù)系統(tǒng)要徹底的組件化,模塊化限书,服務(wù)化虫蝶。首先要把整體業(yè)務(wù)分割成一個個可以獨(dú)立設(shè)計,開發(fā)倦西,運(yùn)行的小業(yè)務(wù)能真。這里的獨(dú)立是指從業(yè)務(wù)層,應(yīng)用層扰柠,到數(shù)據(jù)層粉铐,物理層都是獨(dú)立的。這個就是微服務(wù)分散管理的思想卤档。另一個重點(diǎn)就是每個獨(dú)立的服務(wù)之間通過輕量級的設(shè)備與HTTP型的API進(jìn)行溝通蝙泼,解決了傳統(tǒng)SOA架構(gòu)中ESB機(jī)制下內(nèi)部通訊復(fù)雜,協(xié)議眾多劝枣,調(diào)用困難的難點(diǎn)汤踏。其實(shí)對于微服務(wù)來說织鲸,每個獨(dú)立的業(yè)務(wù)所提供的接口能力本身其實(shí)就是這個業(yè)務(wù)所能提供的服務(wù),服務(wù)和業(yè)務(wù)是一起部署的溪胶,服務(wù)通過已有的接口能力發(fā)布和暴露出來搂擦。
談完了微服務(wù)的概念,最后讓我們來聊聊微服務(wù)的優(yōu)缺點(diǎn)和它能給企業(yè)帶來的收益哗脖。
首先微服務(wù)的優(yōu)勢顯而易見—獨(dú)立瀑踢。微服務(wù)的架構(gòu)下每個服務(wù)都是獨(dú)立的,可以由不同的團(tuán)隊獨(dú)立開發(fā)才避,使得開發(fā)團(tuán)隊可以關(guān)注于這一個業(yè)務(wù)功能橱夭,提高開發(fā)效率,并且因為它的獨(dú)立性工扎,使得每個服務(wù)可以應(yīng)用不同的語言和開發(fā)環(huán)境進(jìn)行開發(fā)徘钥。而且微服務(wù)架構(gòu)并不是完全的獨(dú)立,它強(qiáng)調(diào)每個服務(wù)間是松散耦合的肢娘,服務(wù)間通過輕量級的接口進(jìn)行溝通呈础,各自獨(dú)立存在的同時還保證了服務(wù)之間的耦合關(guān)聯(lián)。能完成傳統(tǒng)SOA架構(gòu)的功能的同時橱健,在很大程度上解決了SOA架構(gòu)中的難點(diǎn)而钞。
有優(yōu)勢就有劣勢,對于微服務(wù)架構(gòu)來說拘荡,首當(dāng)其沖的缺點(diǎn)就是臼节,不同的團(tuán)隊之間要解決溝通上的沖突。團(tuán)隊多了珊皿,交流就顯得更加重要网缝,甚至很多專家認(rèn)為實(shí)現(xiàn)微服務(wù)需要DevOps的同步推進(jìn)。其次就是技術(shù)上的難點(diǎn)蟋定,分割成一個個獨(dú)立的業(yè)務(wù)模塊以后粉臊,服務(wù)間進(jìn)行通信的接口設(shè)計就變得尤為重要。最后就是微服務(wù)架構(gòu)的部署驶兜,如何科學(xué)合理的將微服務(wù)架構(gòu)下的系統(tǒng)部署到服務(wù)器上扼仲,在保證各個服務(wù)高效運(yùn)行的同時,盡可能的降低成本抄淑,是采用微服務(wù)架構(gòu)的企業(yè)要考慮的重點(diǎn)屠凶。
最后,給大家推薦一個采用微服務(wù)架構(gòu)設(shè)計開發(fā)的項目管理工具—華為軟件開發(fā)云肆资,這是一款涵蓋軟件開發(fā)全生命周期管理的工具矗愧,面向開發(fā)者提供軟件開發(fā)云服務(wù),即開即用迅耘,隨時隨地在云端進(jìn)行項目管理贱枣、配置管理监署、代碼檢查颤专、流水線纽哥、編譯、構(gòu)建栖秕、部署春塌、測試、發(fā)布等簇捍,讓開發(fā)者快速而又輕松地開啟云端開發(fā)之旅只壳。