欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單介紹一下什么是microservice微服務(wù)

 更新時(shí)間:2023年03月22日 10:43:39   作者:Young丶  
這篇文章主要介紹了一下什么是microservice微服務(wù)微服務(wù)的定義,微服務(wù)到底是什么意思?什么樣的架構(gòu)可以叫做微服務(wù)?這篇文章可以給你答案

微服務(wù)(microservice)是一種軟件架構(gòu),正得到越來越多的關(guān)注。

但是,它到底是什么意思?什么樣的架構(gòu)可以叫做微服務(wù)?

網(wǎng)上的文章雖然很多,但是都太復(fù)雜,初學(xué)者不容易看懂。我認(rèn)為,這個(gè)概念其實(shí)非常簡單,可以很通俗地說明白。

圖片

一、單體軟件

要理解微服務(wù),首先需要理解軟件架構(gòu)的演變。

早期的軟件,所有功能都寫在一起,這稱為單體架構(gòu)(monolithic software)。

圖片

整個(gè)軟件就是單一的整體,彷佛一體化的機(jī)器。

可以想到,軟件的功能越多,單體架構(gòu)就會越復(fù)雜,很多缺點(diǎn)也隨之暴露出來。

(1)所有功能耦合在一起,互相影響,最終難以管理。

(2)哪怕只修改一行代碼,整個(gè)軟件就要重新構(gòu)建和部署,成本非常高。

(3)因?yàn)檐浖龀闪艘粋€(gè)整體,不可能每個(gè)功能單獨(dú)開發(fā)和測試,只能整體開發(fā)和測試,導(dǎo)致必須采用瀑布式開發(fā)模型。

以上三個(gè)原因的詳細(xì)分析,可以參考我以前的文章《軟件工程的最大難題》。

圖片

總之,單體架構(gòu)的大型軟件,不僅開發(fā)速度慢,而且會形成難以維護(hù)和升級的復(fù)雜代碼,成為程序員的沉重負(fù)擔(dān)。

二、面向服務(wù)架構(gòu)

為了解決上面這些問題,很早就有人提出來,必須打破代碼的耦合,拆分單體架構(gòu),將軟件拆分成一個(gè)個(gè)獨(dú)立的功能單元。

大概在20多年前,隨著互聯(lián)網(wǎng)的出現(xiàn),功能單元可以用遠(yuǎn)程“服務(wù)”的形式提供,就誕生出了“面向服務(wù)架構(gòu)”(service-oriented architecture,簡稱 SOA)。

圖片

所謂服務(wù)(service),就是在后臺不間斷運(yùn)行、提供某種功能的一個(gè)程序。最常見的服務(wù)就是 Web 服務(wù),通過80端口向外界提供網(wǎng)頁訪問。

“面向服務(wù)架構(gòu)”就是把一個(gè)大型的單體程序,拆分成一個(gè)個(gè)獨(dú)立服務(wù),也就是較小的程序。每個(gè)服務(wù)都是一個(gè)獨(dú)立的功能單元,承擔(dān)不同的功能,服務(wù)之間通過通信協(xié)議連在一起。

圖片

這種架構(gòu)有很多優(yōu)點(diǎn)。

(1)每種服務(wù)功能單一,相當(dāng)于一個(gè)小型軟件,便于開發(fā)和測試。

(2)各個(gè)服務(wù)獨(dú)立運(yùn)行,簡化了架構(gòu),提高了可靠性。

(3)鼓勵(lì)和支持代碼重用,同一個(gè)服務(wù)可以用于多種目的。

(4)不同服務(wù)可以單獨(dú)開發(fā)和部署,便于升級。

(5)擴(kuò)展性好,可以容易地加機(jī)器、加功能,承受高負(fù)載。

(6)不容易出現(xiàn)單點(diǎn)故障。即使一個(gè)服務(wù)失敗了,不會影響到其他服務(wù)。

跟單體架構(gòu)不一樣,面向服務(wù)架構(gòu)是語言不敏感的,不同服務(wù)可以使用不同的語言和工具開發(fā),可能需要部署在不同的系統(tǒng)和環(huán)境。

這意味著,面向服務(wù)架構(gòu)默認(rèn)運(yùn)行在不同服務(wù)器上,每臺服務(wù)器提供一種服務(wù),多臺服務(wù)器共同組成一個(gè)完整的網(wǎng)絡(luò)應(yīng)用。

三、微服務(wù)

2014年,Docker[1] 出現(xiàn)了,徹底改變了軟件開發(fā)的面貌。它讓程序運(yùn)行在容器中,每個(gè)容器可以分別設(shè)定運(yùn)行環(huán)境,并且只占用很少的系統(tǒng)資源。

圖片

顯而易見,可以用容器來實(shí)現(xiàn)“面向服務(wù)架構(gòu)”,每個(gè)服務(wù)不再占用一臺服務(wù)器,而是占用一個(gè)容器。

這樣就不需要多臺服務(wù)器了,最簡單的情況下,本機(jī)運(yùn)行多個(gè)容器,只用一臺服務(wù)器就實(shí)現(xiàn)了面向服務(wù)架構(gòu),這在以前是做不到的。這種實(shí)現(xiàn)方式就叫做微服務(wù)。

圖片

簡單說,微服務(wù)就是采用容器技術(shù)的面向服務(wù)架構(gòu)。它依然使用“服務(wù)”作為功能單元,但是變成了輕量級實(shí)現(xiàn),不需要新增服務(wù)器,只需要新建容器(一個(gè)進(jìn)程),所以才叫做“微服務(wù)”。

一個(gè)微服務(wù)就是一個(gè)獨(dú)立的進(jìn)程[2]。 這個(gè)進(jìn)程可以運(yùn)行在本機(jī),也可以運(yùn)行在別的服務(wù)器,或者在云端(比如云服務(wù)和云函數(shù) FaaS)。

它的特點(diǎn)與面向服務(wù)架構(gòu)是一樣的,但因?yàn)楦p量級,所以功能的解耦和服務(wù)化可以做得更徹底。而且,它可以標(biāo)準(zhǔn)化,同樣的容器不管在哪里運(yùn)行,結(jié)果都是一樣的,所以市場上有很多 SaaS 產(chǎn)品,提供標(biāo)準(zhǔn)化的微服務(wù)。

正是由于微服務(wù)這些突出的優(yōu)點(diǎn),這幾年才會變得如此流行。它和容器技術(shù)、云服務(wù)一起,一定會在未來的軟件開發(fā)中,扮演越來越重要的角色。

References

[1] Docker: https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
[2] 進(jìn)程: https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

到此這篇關(guān)于簡單介紹一下什么是microservice微服務(wù)的文章就介紹到這了,更多相關(guān)microservice微服務(wù)的定義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java字節(jié)字符轉(zhuǎn)換流操作詳解

    java字節(jié)字符轉(zhuǎn)換流操作詳解

    這篇文章主要介紹了java字節(jié)字符轉(zhuǎn)換流操作,結(jié)合實(shí)例形式詳細(xì)分析了Java字符流轉(zhuǎn)換相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器詳細(xì)圖文流程

    SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器詳細(xì)圖文流程

    作為后臺開發(fā),項(xiàng)目打包部署是經(jīng)常性的操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Java System類兩個(gè)常用方法代碼實(shí)例

    Java System類兩個(gè)常用方法代碼實(shí)例

    這篇文章主要介紹了Java System類兩個(gè)常用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • springboot打jar包之后下載文件的路徑問題

    springboot打jar包之后下載文件的路徑問題

    這篇文章主要介紹了springboot打jar包之后下載文件的路徑問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • web中拖拽排序和java后臺交互實(shí)現(xiàn)方法示例

    web中拖拽排序和java后臺交互實(shí)現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于web中拖拽排序和java后臺交互實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Java動態(tài)線程池插件dynamic-tp集成過程淺析

    Java動態(tài)線程池插件dynamic-tp集成過程淺析

    這篇文章主要介紹了Java動態(tài)線程池插件dynamic-tp集成過程,dynamic-tp是一個(gè)輕量級的動態(tài)線程池插件,它是一個(gè)基于配置中心的動態(tài)線程池,線程池的參數(shù)可以通過配置中心配置進(jìn)行動態(tài)的修改
    2023-03-03
  • Quartz作業(yè)調(diào)度基本使用詳解

    Quartz作業(yè)調(diào)度基本使用詳解

    這篇文章主要為大家介紹了Quartz作業(yè)調(diào)度基本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringMVC通過Ajax處理Json數(shù)據(jù)的步驟詳解

    SpringMVC通過Ajax處理Json數(shù)據(jù)的步驟詳解

    這篇文章主要介紹了SpringMVC通過Ajax處理Json數(shù)據(jù)的步驟詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實(shí)現(xiàn)最適合列寬。
    2013-11-11
  • 詳解Spring Bean 之間的特殊關(guān)系

    詳解Spring Bean 之間的特殊關(guān)系

    在 Spring 容器中,兩個(gè) Bean 之間除了通過 <ref> 建立依賴關(guān)系外,還存在著一些特殊關(guān)系。這篇文章給大家想想介紹了Spring Bean 之間的特殊關(guān)系,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2018-05-05

最新評論