日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

别再管你的API叫微服务了

發(fā)布時(shí)間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 别再管你的API叫微服务了 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

你有沒(méi)有聽(tīng)過(guò)這句名言:“計(jì)算機(jī)科學(xué)領(lǐng)域只有兩個(gè)難題,緩存失效和命名”?據(jù)說(shuō)這句話是Phil Karlton在1996年或1997年左右說(shuō)的。圍繞這句格言確實(shí)出現(xiàn)了很多帶有喜劇色彩的說(shuō)法,它們也提到了其他的一些問(wèn)題,但最近我對(duì)API世界的觀察似乎證明了“命名”確實(shí)是個(gè)大難題:人們對(duì)“API”和“微服務(wù)”這兩個(gè)術(shù)語(yǔ)存在混淆,有些人似乎已經(jīng)把它們混為一談了。

計(jì)算世界在不斷發(fā)生變化。開(kāi)發(fā)人員使用各種概念和技術(shù),并以不同的方式將它們連接在一起。因此,我們使用不一致的術(shù)語(yǔ),用多個(gè)術(shù)語(yǔ)來(lái)描述大致相同的概念,或者用同一個(gè)術(shù)語(yǔ)表示不同的事物,這些情況并不罕見(jiàn)。

關(guān)于API和微服務(wù):是的,它們是相關(guān)的概念,它們之間存在相互作用,但它們并不是同一種東西。所以,我想直截了當(dāng)?shù)卣f(shuō)出我的看法!

什么是API?

API是應(yīng)用程序編程接口(Application Programming Interface)的縮寫。維基百科指出,“總的來(lái)說(shuō),它是各種組件之間的一組明確定義的通信方法”。它可以是軟件框架或庫(kù)的接口,也可以是操作系統(tǒng)為原生系統(tǒng)軟件(如POSIX)開(kāi)發(fā)人員公開(kāi)的底層接口。

這也是API能夠如此令人感到興奮的一個(gè)方面,因?yàn)楦鞣N開(kāi)發(fā)人員可以利用其他人構(gòu)建和公開(kāi)的基礎(chǔ)設(shè)施來(lái)增強(qiáng)其應(yīng)用程序的附加功能。

現(xiàn)如今,當(dāng)人們談?wù)揂PI時(shí),他們通常指的是通過(guò)HTTP端點(diǎn)公開(kāi)的遠(yuǎn)程接口。為了區(qū)分這些遠(yuǎn)程API和上面提到的本地系統(tǒng)API,我將用術(shù)語(yǔ)“Web API”指代遠(yuǎn)程API。(雖然有些人將這個(gè)術(shù)語(yǔ)用來(lái)指代瀏覽器的本地API——有點(diǎn)令人困惑,對(duì)吧?)

我們通過(guò)底層設(shè)計(jì)范式(如查詢、RPC或RESTful)或協(xié)議(如SOAP、gRPC或GraphQL)進(jìn)一步對(duì)遠(yuǎn)程API(或Web API)進(jìn)行分類。除此之外,我們還通過(guò)目標(biāo)受眾來(lái)區(qū)分API,將它們分為公共、合作伙伴或私有/內(nèi)部API。

API的兩面性

嚴(yán)格來(lái)說(shuō),API僅用來(lái)描述接口,也就是客戶端和服務(wù)器、API消費(fèi)者和API提供者之間用于交換信息的語(yǔ)言。對(duì)于API消費(fèi)者來(lái)說(shuō),API只不過(guò)是對(duì)接口和端點(diǎn)URL或URL集的描述。URL是Web的基本構(gòu)建塊之一,客戶端可以在不知道服務(wù)器性質(zhì)或位置的情況下訪問(wèn)信息或服務(wù)。只要客戶能夠收到響應(yīng),它根本不管URL是指向隱藏在某個(gè)地下室的Raspberry Pi還是位于某個(gè)大陸數(shù)據(jù)中心的全球交付網(wǎng)絡(luò)。這也是API能夠如此令人感到興奮的一個(gè)方面,因?yàn)楦鞣N開(kāi)發(fā)人員可以利用其他人構(gòu)建和公開(kāi)的基礎(chǔ)設(shè)施來(lái)增強(qiáng)其應(yīng)用程序的附加功能。

但是,API提供者不僅要設(shè)計(jì)、實(shí)現(xiàn)和文檔化API,還要考慮它背后的基礎(chǔ)設(shè)施。在云計(jì)算時(shí)代,可能不需要購(gòu)買硬件和租用數(shù)據(jù)中心。相反,API提供者可以選擇各種“XX即服務(wù)”產(chǎn)品——從虛擬機(jī)或容器的托管集群到完全無(wú)服務(wù)器的代碼托管環(huán)境。無(wú)論選擇了什么樣的基礎(chǔ)設(shè)施,他們都需要部署API。

我這里說(shuō)的部署API是指部署暴露API所必需的代碼和基礎(chǔ)設(shè)施。從提供者的角度來(lái)看,API并不是一個(gè)神奇的大門,而是需要在某個(gè)地方運(yùn)行的有形資產(chǎn)。而且,隨著公司轉(zhuǎn)向微服務(wù)架構(gòu),這種資產(chǎn)就會(huì)變成微服務(wù)或一組微服務(wù)。

什么是微服務(wù)?

微服務(wù)是系統(tǒng)或應(yīng)用程序中的自包含獨(dú)立組件。每個(gè)微服務(wù)都應(yīng)該有明確的作用域和責(zé)任,理想情況下,一個(gè)微服務(wù)只做一件事。它應(yīng)該是無(wú)狀態(tài)的或有狀態(tài)的,如果它是有狀態(tài)的,它應(yīng)該帶有自己的持久層(即數(shù)據(jù)庫(kù)),不與其他服務(wù)共享。軟件開(kāi)發(fā)團(tuán)隊(duì)基于微服務(wù)架構(gòu)以更分散的方式開(kāi)發(fā)可重用的獨(dú)立組件。他們可以為每個(gè)微服務(wù)使用自定義框架、依賴關(guān)系集,甚至是完全不同的編程語(yǔ)言。微服務(wù)也有助于實(shí)現(xiàn)可擴(kuò)展性,因?yàn)樗鼈儽举|(zhì)上是分布式的,并且每個(gè)微服務(wù)都可以獨(dú)立增長(zhǎng)或復(fù)制。

容器和微服務(wù)

容器是在操作系統(tǒng)中建立隔離上下文的一種方法。實(shí)際上,這意味著它們中的每一個(gè)都有一個(gè)單獨(dú)的包含了一組已安裝的軟件和相關(guān)配置的虛擬文件系統(tǒng)。由于它們是相互隔離的,因此任何容器都不能直接訪問(wèn)或影響其他容器或底層宿主操作系統(tǒng)。

創(chuàng)建容器的能力已經(jīng)成為L(zhǎng)inux操作系統(tǒng)的一部分,這種能力已經(jīng)存在了很長(zhǎng)一段時(shí)間,但直到2013年Docker的推出,容器才成為一種流行的技術(shù)。

當(dāng)我們?cè)谡務(wù)摱x時(shí),需要注意的是微服務(wù)和容器其實(shí)是不一樣的東西,但這兩個(gè)概念經(jīng)常被放在一起談?wù)?#xff0c;就像API和微服務(wù)一樣。如果沒(méi)有容器,要么把服務(wù)器配置成可以運(yùn)行多個(gè)微服務(wù),讓這些微服務(wù)不可避免地相互產(chǎn)生負(fù)面干擾,要么每個(gè)微服務(wù)都需要一個(gè)單獨(dú)的服務(wù)器或自己的虛擬機(jī),導(dǎo)致不必要的開(kāi)銷。因此,微服務(wù)通常被部署在一組由容器集群軟件(如Kubernetes)管理的一組容器中。可以肯定地說(shuō),容器和微服務(wù)的崛起其實(shí)是相互影響、相互促進(jìn)的結(jié)果。

微服務(wù)之間的通信

基于微服務(wù)架構(gòu)構(gòu)建的應(yīng)用程序或API不僅要把自己完全暴露出來(lái),還需要在內(nèi)部組件(微服務(wù))之間建立連接。由于每個(gè)微服務(wù)都可以使用不同的編程語(yǔ)言實(shí)現(xiàn),我們需要依賴標(biāo)準(zhǔn)協(xié)議(如HTTP)來(lái)建立微服務(wù)之間的連接。這個(gè)時(shí)候我們就回到了API上。

最基本的形式是每個(gè)微服務(wù)都公開(kāi)一個(gè)API,讓其他服務(wù)可以向這個(gè)API發(fā)出請(qǐng)求并獲取數(shù)據(jù)。也可以使用其他不同的方法,比如消息隊(duì)列。微服務(wù)API是私有API,僅限用在單個(gè)應(yīng)用程序中。它通常不提供公共URL,而是使用組織內(nèi)部專用網(wǎng)絡(luò)的私有IP或主機(jī)名,甚至是單個(gè)服務(wù)器集群內(nèi)的IP或主機(jī)名。不過(guò),這些API可以遵循類似公共API那樣的設(shè)計(jì)范式或協(xié)議。而且,盡管它們的消費(fèi)者數(shù)量有限,也應(yīng)該遵循開(kāi)發(fā)者體驗(yàn)的基本規(guī)則。也就是說(shuō),它們應(yīng)該擁有相關(guān)的、一致的、可演化的API設(shè)計(jì)和文檔,讓其他團(tuán)隊(duì)(甚至是你自己)知道如何使用這些微服務(wù)。因此,你可以而且應(yīng)該使用類似的工具來(lái)創(chuàng)建你的微服務(wù)API。

當(dāng)然,與更面向外部的API相比,在設(shè)計(jì)微服務(wù)API時(shí)有不同的側(cè)重點(diǎn)。

微服務(wù)和API是不同的東西,就像微服務(wù)和容器也不是同一種東西一樣。不過(guò),這兩個(gè)概念以兩種不同的方式協(xié)同工作:首先,微服務(wù)可以作為部署內(nèi)部、合作伙伴或公共API后端的一種方法。其次,微服務(wù)通常依賴API作為與語(yǔ)言無(wú)關(guān)的通信手段,以便在內(nèi)部網(wǎng)絡(luò)中相互通信。開(kāi)發(fā)團(tuán)隊(duì)可以使用相似的方法和工具來(lái)創(chuàng)建公開(kāi)API和微服務(wù)API。

英文原文:https://blog.stoplight.io/stop-calling-your-apis-microservices-e165a80eba9d

總結(jié)

以上是生活随笔為你收集整理的别再管你的API叫微服务了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。