您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)什么是Microservices,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
微服務(wù)的誕生并非偶然: 領(lǐng)域驅(qū)動設(shè)計指導(dǎo)我們?nèi)绾畏治霾⒛P突瘡?fù)雜的業(yè)務(wù);敏捷方法論幫助我們消除浪費,快速反饋;持續(xù)交付促使我們構(gòu)建更快、更可靠、更頻繁的軟件部署和交付能力;虛擬化和基礎(chǔ)設(shè)施自動化(Infrastructure As Code)則幫助我們簡化環(huán)境的創(chuàng)建、安裝;DevOps 文化的流行以及特性團隊的出現(xiàn),使得小團隊更加全功能化。這些都是推動微服務(wù)誕生的重要因素。
實際上,業(yè)界對于微服務(wù)本身并沒有一個嚴(yán)格的定義。James Lewis 和 Martin Fowler 對 Microservices 架構(gòu)做了如下定義:
簡言之,Microservices 架構(gòu)風(fēng)格就像是把小的服務(wù)開發(fā)成單一應(yīng)用的形式, 運行在其自己的進程中,并采用輕量級的機制進行通信(一般是 HTTP 資源 API)。這些服務(wù)都是圍繞業(yè)務(wù)能力來構(gòu)建,通過全自動部署工具來實現(xiàn)獨立部署。這些服務(wù),其可以使用不同的編程語言和不同的數(shù)據(jù)存儲技術(shù),并保持最小化集中管理。
Microservices 包含如下特征:
組件以服務(wù)形式來提供:正如其名,微服務(wù)也是面向服務(wù)的。
圍繞業(yè)務(wù)功能進行組織:微服務(wù)更傾向于圍繞業(yè)務(wù)功能對服務(wù)結(jié)構(gòu)進行劃分、拆解。這樣的服務(wù),是針對業(yè)務(wù)領(lǐng)域有著關(guān)完整實現(xiàn)的軟件,它包含使用接口、持久存儲、以及對旬的交互。因此團隊?wèi)?yīng)該是跨職能的,包含完整的開發(fā)技術(shù):用戶體驗、數(shù)據(jù)庫、以及項目管理。
產(chǎn)品不是項目:傳統(tǒng)的開發(fā)模式,是至力于提供一些被認(rèn)為是完整的軟件。一旦開發(fā)完成,軟件將移交給維護或者實施部門,然后,開發(fā)組就可以解散掉了。而微服務(wù)要求開發(fā)團隊對軟件產(chǎn)品的整個生命周期負(fù)責(zé)。這要求開發(fā)者每天都關(guān)注軟件產(chǎn)品的運行情況,并與用戶聯(lián)系的更緊密,同時承擔(dān)一些售后支持。越小的服務(wù)粒度越容易促進用戶與服務(wù)提供商之前的關(guān)系。Amazon 的理念就是“You build, you run it”,這也正是 DevOps 的文化理念。
強化終端及弱化通道:微服務(wù)的應(yīng)用致力松耦合和高內(nèi)聚,它們更喜歡簡單的REST 風(fēng)格,而不是復(fù)雜的協(xié)議(如WS或者BPEL或者集中式框架)?;蛘卟捎幂p量級消息總線(如 RabbitMQ 或 ZeroMQ 等)來發(fā)布消息。
分散治理:這是跟傳統(tǒng)的集中式管理很大區(qū)別的地方。微服務(wù)把整體式框架中的組件,拆分成不同的服務(wù),在構(gòu)建它們時將會有更多的選擇。
分散數(shù)據(jù)管理:當(dāng)整體式的應(yīng)用使用單一邏輯數(shù)據(jù)庫對數(shù)據(jù)持久化時,企業(yè)通常選擇在應(yīng)用的范圍內(nèi)使用一個數(shù)據(jù)庫。微服務(wù)讓每個服務(wù)管理自己的數(shù)據(jù)庫:無論是相同數(shù)據(jù)庫的不同實例,或者是不同的數(shù)據(jù)庫系統(tǒng)。
基礎(chǔ)設(shè)施自動化:云計算,特別是 AWS 的發(fā)展,減少了構(gòu)建、發(fā)布、運維微服務(wù)的復(fù)雜性。微服務(wù)的團隊更加依賴于基礎(chǔ)設(shè)施的自動化,畢竟發(fā)布工作相當(dāng)?shù)臒o趣。近些年開始火爆的 Docker 也是一個不錯的選擇(可以參閱《簡述 Docker》)。
容錯性設(shè)計:任務(wù)服務(wù)都可能因為供應(yīng)商的不可靠而故障。微服務(wù)應(yīng)為每個應(yīng)用的服務(wù)及數(shù)據(jù)中心提供日常故障檢測和恢復(fù)。
改進設(shè)計:由于設(shè)計會不斷更改,微服務(wù)所提供的服務(wù)應(yīng)該能夠替換或者報廢,而不是要長久的發(fā)展的。
微服務(wù)架構(gòu)(MSA)與 面向服務(wù)架構(gòu)(SOA)相似之處,比如,都是面向服務(wù)。通常 SOA 意味著大而全的整體集中式的解決方案。這讓設(shè)計、開發(fā)、測試、發(fā)布都增加了難度,其中任何細(xì)小的代碼變更,都將導(dǎo)致整個系統(tǒng)的需要重新測試,部署。而微服務(wù)架構(gòu)恰恰把所有服務(wù)都打散,設(shè)置合理的顆粒度,各個服務(wù)間保持低耦合,每個服務(wù)都在其完整的生命周期中存活,互相之間影響降到最低。
SOA 需要對整個系統(tǒng)進行規(guī)范,而 MSA 每個服務(wù)都可以有自己的開發(fā)語言、開發(fā)方式,靈活性大大提高。
對于分布式設(shè)計來說,分布式第一定律是“盡量不要使用分布式”。因為系統(tǒng)的分布式一定會帶來性能的開銷。
微服務(wù)使得開發(fā)變得更簡單,快捷了。以前開發(fā)人員耗費時間來搭建環(huán)境、熟悉代碼結(jié)構(gòu),在微服務(wù)的世界里會簡單許多。但是,微服務(wù)帶來了一系列的非功能性需求,比如說事務(wù)、服務(wù)治理(注冊,發(fā)現(xiàn),負(fù)載,路由,認(rèn)證授權(quán),隔離)、監(jiān)控(日志,性能監(jiān)控,告警,調(diào)用鏈路)、部署、測試等。微服務(wù)依賴于“基礎(chǔ)設(shè)施自動化”。
微服務(wù)不是“銀彈”,何時采用微服務(wù)還需考慮企業(yè)自身的需求。
看完上述內(nèi)容,你們對什么是Microservices有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。