最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單介紹一下什么是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)就會(huì)越復(fù)雜,很多缺點(diǎn)也隨之暴露出來。

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

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

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

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

圖片

總之,單體架構(gòu)的大型軟件,不僅開發(fā)速度慢,而且會(huì)形成難以維護(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),就是在后臺(tái)不間斷運(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ù)失敗了,不會(huì)影響到其他服務(wù)。

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

這意味著,面向服務(wù)架構(gòu)默認(rèn)運(yùn)行在不同服務(wù)器上,每臺(tái)服務(wù)器提供一種服務(wù),多臺(tái)服務(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ù)不再占用一臺(tái)服務(wù)器,而是占用一個(gè)容器。

這樣就不需要多臺(tái)服務(wù)器了,最簡單的情況下,本機(jī)運(yùn)行多個(gè)容器,只用一臺(tái)服務(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),這幾年才會(huì)變得如此流行。它和容器技術(shù)、云服務(wù)一起,一定會(huì)在未來的軟件開發(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?Map雙列集合使代碼更高效

    Java?Map雙列集合使代碼更高效

    這篇文章主要介紹了Java?Map雙列集合使用,使你的代碼更高效,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SpringBoot接入ftp/ftps并上傳文件和配置的代碼指南

    SpringBoot接入ftp/ftps并上傳文件和配置的代碼指南

    接入ftp服務(wù)器,在springboot上實(shí)現(xiàn)起來也不算復(fù)雜,本文主要講下如何在springboot下接入ftp服務(wù)上傳文件,并對出現(xiàn)的問題做一些記錄,ftp服務(wù)的參數(shù)配置等,需要的朋友可以參考下
    2024-12-12
  • springboot2.5.0和redis整合配置詳解

    springboot2.5.0和redis整合配置詳解

    本篇文章向大家介紹springboot2.5.0 整合 redis 配置方法,教大家在pom添加依賴的方法如何調(diào)用redis,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • springboot實(shí)現(xiàn)異步調(diào)用@Async的示例

    springboot實(shí)現(xiàn)異步調(diào)用@Async的示例

    這篇文章主要介紹了springboot實(shí)現(xiàn)異步調(diào)用@Async的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • springboot中使用jpa下hibernate的ddl-auto方式

    springboot中使用jpa下hibernate的ddl-auto方式

    這篇文章主要介紹了springboot中使用jpa下hibernate的ddl-auto方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Struts2學(xué)習(xí)筆記(5)-參數(shù)傳遞方法

    Struts2學(xué)習(xí)筆記(5)-參數(shù)傳遞方法

    本文主要介紹Struts2中參數(shù)傳遞方法,希望能給大家做一個(gè)參考。
    2016-06-06
  • SpringBoot枚舉類型參數(shù)認(rèn)證的實(shí)現(xiàn)代碼

    SpringBoot枚舉類型參數(shù)認(rèn)證的實(shí)現(xiàn)代碼

    項(xiàng)目當(dāng)中經(jīng)常需要接口參數(shù)是否在一個(gè)可選的范圍內(nèi),也就是驗(yàn)證類枚舉參數(shù)的需求,所以本文我們將使用SpringBoot實(shí)現(xiàn)枚舉類型參數(shù)認(rèn)證,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-12-12
  • Java函數(shù)式編程(十二):監(jiān)控文件修改

    Java函數(shù)式編程(十二):監(jiān)控文件修改

    這篇文章主要介紹了Java函數(shù)式編程(十二):監(jiān)控文件修改,本文是系列文章的第12篇,其它文章請參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • RedisTemplate中opsForValue和opsForList方法的使用詳解

    RedisTemplate中opsForValue和opsForList方法的使用詳解

    這篇文章主要介紹了RedisTemplate中opsForValue和opsForList方法的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 解決方法A調(diào)用方法B的事務(wù)控制問題

    解決方法A調(diào)用方法B的事務(wù)控制問題

    這篇文章主要介紹了解決方法A調(diào)用方法B的事務(wù)控制問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

三原县| 武山县| 浦县| 密山市| 台前县| 安塞县| 玛沁县| 临泽县| 巴青县| 韶山市| 静安区| 淳安县| 娱乐| 句容市| 郎溪县| 汝城县| 沙坪坝区| 城口县| 怀远县| 大连市| 股票| 兰州市| 洞口县| 历史| 喜德县| 台中市| 岳阳市| 庆城县| 翁牛特旗| 和田市| 葫芦岛市| 土默特左旗| 汶川县| 兴隆县| 商城县| 卓资县| 安吉县| 开封县| 和田县| 岳普湖县| 惠安县|