微服務(wù)架構(gòu)那點(diǎn)事

微服務(wù)架構(gòu)那點(diǎn)事

相信很多朋友了解微服務(wù)架構(gòu)都是從Martin Fowler的那篇文章開始。而實(shí)際上,Martin卻并不是最早談及微服務(wù)架構(gòu)的,本篇文章就和你聊聊微服務(wù)架構(gòu)定義的那點(diǎn)事。

最易懂的版本

Martin Fowler的這篇文章《Microservices》通俗易懂的講解了什么是微服務(wù)架構(gòu).


微服務(wù)架構(gòu)是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級(jí)的通信機(jī)制互相協(xié)作(通常是基于HTTP協(xié)議的RESTful API)。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。

我在2015年4月QCon的《基于微服務(wù)架構(gòu),改造企業(yè)遺留系統(tǒng)的實(shí)踐》演講上,將這四個(gè)特性定義抽象為“小、獨(dú)、輕、松”。最后一個(gè)字之所以定義成松,是為了讀起來能朗朗上口。確切的講,所代表的含義其實(shí)是服務(wù)具備獨(dú)立的流水線,能夠被獨(dú)立的構(gòu)建,并且被獨(dú)立的部署。實(shí)際上,Martin Fowler并不是最早提出微服務(wù)架構(gòu)概念的人。

最早期的版本

最早提出微服務(wù)架構(gòu)概念的,是Fred George。他一位非常傳奇的人物,從業(yè)40多年,接觸過70+編程語言,就職過IBM、TW等多家公司,并在社區(qū)和大會(huì)上做過很多分享。后來成立獨(dú)立的咨詢公司,為金融、電信、保險(xiǎn)、航空等多個(gè)行業(yè)提供敏捷、持續(xù)交付、DevOps等轉(zhuǎn)型服務(wù),他也是最早實(shí)踐XP、Scrum、和看板的人之一.

在2012年3月的Agile India上,F(xiàn)red George分享了題為

Micro (u)Services Architecture -small, short lived services rather than SOA.

的演講。在演講中,他描述了從2005~2009年期間,他和所在的團(tuán)隊(duì)是如何將100萬行的傳統(tǒng)J2EE程序,通過解耦、自動(dòng)化驗(yàn)證等實(shí)踐,逐漸分解成20多個(gè)5K行代碼的小服務(wù),又分解成200多個(gè)500行代碼的服務(wù)的過程,而其中,也大談了基于Kafka的消息解耦服務(wù)間依賴。我認(rèn)為,這是對(duì)微服務(wù)定義的最早版本了。

最簡潔的版本

Adrain Cockcroft,Netflix的云架構(gòu)師,主導(dǎo)了Netflix從2009到2016年服務(wù)化拆分、從數(shù)據(jù)中心遷移到云平臺(tái)、以及組織、流程、工具等的演進(jìn)等.

他對(duì)微服務(wù)的定義是:

Loosely coupled service oriented architecture with bounded contexts.

其中兩個(gè)核心點(diǎn)Loosely coupled 和 Bounded context。Loosely coupled表明,服務(wù)之間是松耦合的。什么叫松耦合?就是指服務(wù)能夠被獨(dú)立更新。如果不能被獨(dú)立更新,那證明服務(wù)就不是松耦合的。Bounded context,源于DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)),表明對(duì)于服務(wù)而言,它的業(yè)務(wù)是獨(dú)立的,我們不需要知道它的依賴者,根據(jù)接口就可以更新服務(wù)的代碼。我認(rèn)為,這是對(duì)微服務(wù)定義的最簡潔版本了。

最與時(shí)俱進(jìn)的版本

第三個(gè)版本,來自Neal Ford,他是TW的資深技術(shù)專家,《卓有成效的程序員》作者,也是TW技術(shù)雷達(dá)的發(fā)起者和維護(hù)者之一。

他對(duì)微服務(wù)架構(gòu)的定義是

“Microservices are the first post DevOps revolution architecture.

這是第一次將微服務(wù)和DevOps緊密關(guān)聯(lián)起來的版本。

實(shí)際上,DevOps作為一場開發(fā)與運(yùn)維手拉手,心連心的運(yùn)動(dòng),正在席卷著整個(gè)社區(qū)。DevOps所涵蓋的一系列文化、實(shí)踐以及自動(dòng)化的理念(CALMS),是微服務(wù)演進(jìn)過程中必不可少的先決條件。可以說,在傳統(tǒng)的運(yùn)維模式下,有效實(shí)現(xiàn)微服務(wù)架構(gòu)幾乎是不可能的,因?yàn)槲⒎?wù)的實(shí)施需要自動(dòng)化基礎(chǔ)設(shè)施、自動(dòng)化部署、自動(dòng)化驗(yàn)證、以及利用有效的工具完成運(yùn)維、監(jiān)控、告警等。而只有將DevOps與微服務(wù)緊密的結(jié)合起來,才能達(dá)到事半功倍的效果。

總結(jié)

如上就是我認(rèn)為微服務(wù)演進(jìn)過程中,最具有代表性的幾個(gè)定義,當(dāng)然,除了這3位大師,還有很多其他大師,譬如Sam Newman,James Lewis等發(fā)表的見解。

感興趣的朋友可以繼續(xù)挖掘一下,了解微服務(wù)架構(gòu)演進(jìn)過程中,大師們是如何看待微服務(wù)架構(gòu)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 微服務(wù)架構(gòu)介紹 1.1 什么是微服務(wù)架構(gòu)? 形像一點(diǎn)來說,微服務(wù)架構(gòu)就像搭積木,每個(gè)微服務(wù)都是一個(gè)零件,并使...
    靜修佛緣閱讀 6,808評(píng)論 0 39
  • 在我們的軟件開發(fā)流程中,經(jīng)常需要面臨改動(dòng),有來自用戶需求的改動(dòng),來自市場的,以及為了一些潛在機(jī)會(huì)而產(chǎn)生的改動(dòng)等。當(dāng)...
    草莓豆豆龍閱讀 5,773評(píng)論 0 7
  • 一、微服務(wù)將變得輕量級(jí) 架構(gòu)需要由人去設(shè)計(jì),這些人被稱為架構(gòu)師。或許很多人并未授予架構(gòu)師的頭銜,但自己卻從事著架構(gòu)...
    justmilkrain閱讀 5,552評(píng)論 10 109
  • 最近幾年,微服務(wù)架構(gòu)異軍突起,與容器技術(shù)相輔相成,成為架構(gòu)設(shè)計(jì)領(lǐng)域熱議的話題。而《技術(shù)雷達(dá)》作為ThoughtWo...
    王健_TW閱讀 1,234評(píng)論 0 8
  • 本文是GitChat《Serverless 風(fēng)格微服務(wù)的持續(xù)交付(上):架構(gòu)案例》部分內(nèi)容已做修改。文章聊天實(shí)錄請(qǐng)...
    顧宇閱讀 3,350評(píng)論 1 13

友情鏈接更多精彩內(nèi)容