了解更多關(guān)于應(yīng)用程序開(kāi)發(fā)的未來(lái)隨著應(yīng)用程序變得更大和復(fù)雜,開(kāi)發(fā)人員面臨著讓?xiě)?yīng)用程序更靈活地適應(yīng)變化而不損害整個(gè)應(yīng)用程序完整性的挑戰(zhàn)。答案是微服務(wù),這是一種新的軟件架構(gòu),亞馬遜或 Netflix 等巨頭認(rèn)為它對(duì)于保持其服務(wù)的功能性和實(shí)用性至關(guān)重要。看看微服務(wù)背后的原因以及為什么會(huì)改變應(yīng)用程序的構(gòu)建方式。
什么是微服務(wù)
許多應(yīng)用程序使用了幾十年的傳統(tǒng)語(yǔ)言是單體架構(gòu)模式。然而,隨著新應(yīng)用程序變得更大和復(fù)雜,開(kāi)發(fā)人員面臨著軟件結(jié)構(gòu)的新挑戰(zhàn)。所以他們開(kāi)始尋找一種新的方式來(lái)構(gòu)建應(yīng)用程序,這就是微服務(wù)架構(gòu)的出現(xiàn)。“微服務(wù)”一詞是由一個(gè)軟件工程師團(tuán)隊(duì)在 2012 年創(chuàng)建的,但在 2014 年變得更加流行,當(dāng)時(shí)另一位知名開(kāi)發(fā)人員 Mártin Fowler 在他的出版物中經(jīng)常使用這個(gè)概念。
根據(jù)微服務(wù)模式的作者 Chris Richardson 的說(shuō)法:“微服務(wù)是一種將應(yīng)用程序構(gòu)建為服務(wù)集合的架構(gòu)”。換句話說(shuō),它是將應(yīng)用程序分解為幾個(gè)部分。微服務(wù)是一種軟件開(kāi)發(fā),其中軟件由小型獨(dú)立服務(wù)組成,這些服務(wù)通過(guò)定義明確的 API 進(jìn)行通信。這些服務(wù)的所有者是獨(dú)立的小團(tuán)隊(duì)。微服務(wù)架構(gòu)使應(yīng)用程序更容易擴(kuò)展和更快地開(kāi)發(fā)。微服務(wù)的目標(biāo)是實(shí)現(xiàn)復(fù)雜應(yīng)用程序的高效和快速交付。作為該架構(gòu)一部分的服務(wù)具有特定的特征:它們可獨(dú)立部署、高度可維護(hù)和可測(cè)試、松散耦合并圍繞業(yè)務(wù)能力進(jìn)行組織。
為什么微服務(wù)技術(shù)如此具有革命性?
單體結(jié)構(gòu)意味著應(yīng)用程序的所有組件(進(jìn)程)都集成在一起,并且它們作為單個(gè)服務(wù)一起執(zhí)行。如果進(jìn)入應(yīng)用程序的進(jìn)程之一有高峰需求,則必須擴(kuò)展整個(gè)架構(gòu)。因此,隨著代碼的增長(zhǎng),擴(kuò)展單體應(yīng)用程序變得更加困難。微服務(wù)技術(shù)解決了這個(gè)問(wèn)題。使用微服務(wù)時(shí),應(yīng)用程序是由獨(dú)立組件創(chuàng)建的,這些組件將應(yīng)用程序的每個(gè)進(jìn)程作為服務(wù)執(zhí)行。
即使這些組件/微服務(wù)相互獨(dú)立,它們也可以使用輕量級(jí) API 協(xié)同工作以實(shí)現(xiàn)相同的任務(wù)。通過(guò)使這些服務(wù)獨(dú)立運(yùn)行,它們可以被更新、部署和擴(kuò)展以滿足應(yīng)用程序特定功能的需求。微服務(wù)架構(gòu)的最大優(yōu)勢(shì)之一是它簡(jiǎn)化了在多個(gè)應(yīng)用程序之間共享相似流程的能力。例如,微服務(wù)對(duì)于云中原生應(yīng)用程序的開(kāi)發(fā)和優(yōu)化至關(guān)重要。簡(jiǎn)而言之,微服務(wù)技術(shù)允許開(kāi)發(fā)人員以更快的方式分發(fā)優(yōu)質(zhì)軟件。
微服務(wù)設(shè)備示例
通過(guò)采用微服務(wù),企業(yè)試圖在不斷要求快速部署和產(chǎn)品可擴(kuò)展性的苛刻市場(chǎng)中競(jìng)爭(zhēng)。了解微服務(wù)強(qiáng)大功能的一個(gè)好方法是舉一些例子,說(shuō)明當(dāng)今一些最重要的公司如何使用它們。
亞馬遜
亞馬遜是最早將他的架構(gòu)遷移到微服務(wù)的公司之一。對(duì)于亞馬遜來(lái)說(shuō),微服務(wù)是一項(xiàng)關(guān)鍵技術(shù),可以處理每天與其應(yīng)用程序、API 甚至網(wǎng)站相關(guān)的數(shù)百萬(wàn)個(gè)請(qǐng)求。亞馬遜工程師承認(rèn),他們目前的系統(tǒng)無(wú)法通過(guò)單一架構(gòu)進(jìn)行管理。他們記得使用單一方案來(lái)應(yīng)對(duì)不斷變化的流量需求是多么困難。如今,微服務(wù)架構(gòu)允許亞馬遜每 11.7 秒持續(xù)部署一次應(yīng)用程序。
易趣
eBay 是微服務(wù)效率的另一個(gè)很好的例子。該公司的主要應(yīng)用程序使用了幾個(gè)必須能夠每天處理數(shù)百萬(wàn)個(gè)請(qǐng)求的微服務(wù)。根據(jù) CTO Steven Fisher 的說(shuō)法,eBay 基于 1000 項(xiàng)必須在系統(tǒng)內(nèi)運(yùn)行的服務(wù)。通過(guò)使用微服務(wù),eBay 可以更輕松地添加新功能、分配新的開(kāi)發(fā)工作并減少不必要的依賴關(guān)系。
網(wǎng)飛
每天,Netflix 平均收到 10 億次調(diào)用其不同服務(wù)的電話。有了這些數(shù)字,Netflix 積累了 30% 的互聯(lián)網(wǎng)流量。如果沒(méi)有微服務(wù)架構(gòu),Netflix 都無(wú)法容納如此多的請(qǐng)求。多虧了微服務(wù),這家流媒體巨頭能夠通過(guò)其視頻流 API 適應(yīng) 800 多種類(lèi)型的設(shè)備。對(duì)于每個(gè)用戶請(qǐng)求,Netflix API 會(huì)向不同的服務(wù)器發(fā)出另外 5 個(gè)請(qǐng)求,以保持服務(wù)的連續(xù)性。
微服務(wù)如何與容器一起工作
由于微服務(wù)改變了開(kāi)發(fā)和交付應(yīng)用程序的方式,容器成為封裝微服務(wù)和簡(jiǎn)化應(yīng)用程序包的參數(shù)配置、維護(hù)和管理等功能的最佳方法。當(dāng)你在容器中分配微服務(wù)時(shí),硬件性能更好,更容易協(xié)調(diào)所有服務(wù),包括存儲(chǔ)、網(wǎng)絡(luò)連接和安全。容器和微服務(wù)為在云中開(kāi)發(fā)原生應(yīng)用程序奠定了基礎(chǔ)。因此,這兩種技術(shù)的集成有助于現(xiàn)有應(yīng)用程序的改造和優(yōu)化。容器有助于創(chuàng)建基礎(chǔ)設(shè)施的可復(fù)制副本、任務(wù)自動(dòng)化、節(jié)省設(shè)置大量應(yīng)用程序的時(shí)間,并且它們可以更快地識(shí)別哪些組件需要預(yù)防和糾正措施。
微服務(wù)架構(gòu)還是單體架構(gòu)?
很難說(shuō)哪種架構(gòu)是最好的,因?yàn)樗鼈兌加糜诓煌哪康牟⒕哂胁煌暮锰帯?shí)際上,一切都取決于項(xiàng)目的復(fù)雜程度以及開(kāi)發(fā)人員想要的方式。確實(shí),微服務(wù)正在以多種方式改變應(yīng)用程序的開(kāi)發(fā)。然而,這項(xiàng)技術(shù)仍處于第一階段,并且在某種程度上可能具有挑戰(zhàn)性。例如,由于分布式部署,測(cè)試可能非常復(fù)雜。微服務(wù)需要大量?jī)?nèi)存,將應(yīng)用程序碎片化到多個(gè)服務(wù)中可能會(huì)花費(fèi)大量時(shí)間進(jìn)行規(guī)劃。這就是為什么許多人認(rèn)為微服務(wù)構(gòu)建一種藝術(shù)。
微服務(wù)的未來(lái)
隨著物聯(lián)網(wǎng)的興起,由于編碼、部署和擴(kuò)展的靈活性,微服務(wù)似乎是大多數(shù)開(kāi)發(fā)人員實(shí)施應(yīng)用程序的解決方案。根據(jù)國(guó)際數(shù)據(jù)公司 (IDC) 的數(shù)據(jù),由于速度更快、成本更低和無(wú)限增值的承諾,預(yù)計(jì) 2020 年 90% 的新企業(yè)應(yīng)用程序?qū)⒉捎梦⒎?wù)。由于“最佳實(shí)踐手冊(cè)”將幫助開(kāi)發(fā)人員實(shí)施,微服務(wù)的可用性也應(yīng)該很快得到改善。此外,共存微服務(wù)和單體架構(gòu)的更好環(huán)境將成為可能。專(zhuān)家認(rèn)為,微服務(wù)將更多地參與容器化。