使用Node.js構(gòu)建微服務(wù)的方法
使用Node.js構(gòu)建微服務(wù)是一種事件驅(qū)動(dòng)的開(kāi)發(fā)架構(gòu),允許開(kāi)發(fā)人員開(kāi)發(fā)功能加載、可擴(kuò)展和可靠的應(yīng)用程序。
構(gòu)建應(yīng)用程序不僅要滿足客戶的要求,還要將復(fù)雜的功能與動(dòng)態(tài)編程集成在一起,以維護(hù)用戶體驗(yàn)和代碼質(zhì)量。在開(kāi)發(fā)加載功能的大型應(yīng)用程序時(shí),確保應(yīng)用程序平穩(wěn)運(yùn)行非常重要。
本文將介紹微服務(wù)架構(gòu)、優(yōu)勢(shì)以及如何使用Node.js開(kāi)發(fā)微服務(wù)。
1.什么是微服務(wù)?
微服務(wù)是一種面向服務(wù)的架構(gòu)(SOA)。它是一個(gè)基于組件的模型,其中應(yīng)用程序由定義良好的協(xié)議(如HTTP)和獨(dú)立組件的組合構(gòu)成。簡(jiǎn)單來(lái)說(shuō),它是一種用于使用容器開(kāi)發(fā)分布式應(yīng)用程序的架構(gòu),其中集成到應(yīng)用程序中的每個(gè)功能都充當(dāng)企業(yè)業(yè)務(wù)的獨(dú)立服務(wù)。微服務(wù)最重要的特征是它們的API數(shù)組。
此外,使用微服務(wù)開(kāi)發(fā)應(yīng)用程序可以提高模塊化程度,同時(shí)還可以獨(dú)立部署應(yīng)用程序的每個(gè)部分,并單獨(dú)測(cè)試單元。
一些在其應(yīng)用程序中使用這種架構(gòu)的知名企業(yè)巨頭包括Netflix、Amazon、Uber、SoundCloud和許多其他品牌。為了開(kāi)發(fā)帶有微服務(wù)的應(yīng)用程序,一些最好的編程語(yǔ)言是Golang、Node.js、Python、Java等等。
既然已經(jīng)用最簡(jiǎn)單的術(shù)語(yǔ)演示了什么是微服務(wù)架構(gòu),那么了解它是否有益以及應(yīng)該選擇哪種編程語(yǔ)言來(lái)開(kāi)發(fā)微服務(wù)也很重要。
2.微服務(wù)的優(yōu)勢(shì)
使用微服務(wù)開(kāi)發(fā)廣泛而動(dòng)態(tài)的業(yè)務(wù)應(yīng)用程序已經(jīng)是一種好處。但除此之外,還有很多好處可以幫助開(kāi)發(fā)人員做出更好的決定。以下是微服務(wù)的一些優(yōu)勢(shì):
(1)部署過(guò)程更流暢,部分應(yīng)用程序不會(huì)影響整個(gè)應(yīng)用程序,因?yàn)樗侵饌€(gè)服務(wù)部署的。
(2)功能獨(dú)立,易于理解。
(3)微服務(wù)架構(gòu)有助于構(gòu)建高彈性和可靠的應(yīng)用程序。
(4)應(yīng)用程序中某個(gè)特定服務(wù)的故障仍在其內(nèi)部;它不會(huì)影響應(yīng)用程序的整個(gè)特性和功能。
(5)另一個(gè)好處是,在微服務(wù)架構(gòu)上開(kāi)發(fā)應(yīng)用程序時(shí),可以用不同的語(yǔ)言編寫(xiě)不同服務(wù)的代碼。
(6)使用微服務(wù)架構(gòu)構(gòu)建的應(yīng)用程序通常不會(huì)停機(jī)。
(7)它基于單個(gè)架構(gòu)而不是整個(gè)應(yīng)用程序所需的資源提供可擴(kuò)展的應(yīng)用程序。
(8)另一個(gè)額外的好處是對(duì)開(kāi)發(fā)人員而言;它提供了一種簡(jiǎn)化的體驗(yàn),因?yàn)樗麄儾槐亓私馔暾南到y(tǒng);他們只需要了解正在處理的功能或服務(wù),從而節(jié)省時(shí)間和費(fèi)用,并提高生產(chǎn)力。
上面提到的只是使用微服務(wù)開(kāi)發(fā)應(yīng)用程序的一些重要好處,在應(yīng)用程序的開(kāi)發(fā)過(guò)程中會(huì)遇到更多的好處。但需要確保了解微服務(wù)的缺點(diǎn)。雖然沒(méi)有太多的缺點(diǎn),但只要高效完成工作,就可以排除這些缺點(diǎn)。
其主要缺點(diǎn)是,如果流程架構(gòu)不正確,則可能會(huì)給開(kāi)發(fā)人員帶來(lái)系統(tǒng)過(guò)度碎片化的問(wèn)題。此外,監(jiān)控微服務(wù)架構(gòu)有時(shí)會(huì)變得復(fù)雜,因?yàn)檎麄€(gè)系統(tǒng)存在多個(gè)故障點(diǎn),這反過(guò)來(lái)也增加了應(yīng)用程序的測(cè)試復(fù)雜性。
3.使用Node.js構(gòu)建微服務(wù)的原因
在微服務(wù)應(yīng)用程序開(kāi)發(fā)中使用的所有編程語(yǔ)言中,Node.js因其特性和提供的好處而被開(kāi)發(fā)人員廣泛使用。以下是選擇使用Node.js構(gòu)建微服務(wù)的幾個(gè)原因。
(1)Node.js運(yùn)行在谷歌V8引擎上,提高了執(zhí)行時(shí)間,將函數(shù)編譯為原生機(jī)器碼,同時(shí)進(jìn)行低延遲的CPU和IO密集型操作。
(2)Node.js的事件驅(qū)動(dòng)架構(gòu)使其非常有利于開(kāi)發(fā)事件驅(qū)動(dòng)的應(yīng)用程序。
(3)Node.js庫(kù)支持非阻塞調(diào)用,無(wú)需等待前一個(gè)調(diào)用返回即可繼續(xù)工作。
(4)使用Node.js構(gòu)建的應(yīng)用程序是可擴(kuò)展的,這意味著執(zhí)行模型通過(guò)將請(qǐng)求分配給其他工作線程來(lái)支持?jǐn)U展。
既然已經(jīng)了解了選擇Node.js的主要原因,現(xiàn)在還應(yīng)該學(xué)習(xí)如何使用Node.js構(gòu)建微服務(wù)。
4.如何使用Node.js創(chuàng)建微服務(wù)
使用Node.js構(gòu)建微服務(wù)很容易,因?yàn)樗泻芏嗟暮锰帯R韵率侨绾螛?gòu)建微服務(wù)應(yīng)用程序的分步指南。
(1)第一步是是確定業(yè)務(wù)需求,這意味著開(kāi)發(fā)人員需要了解其服務(wù)對(duì)開(kāi)發(fā)微服務(wù)的需求。
(2)第二步是安裝Node.js到系統(tǒng)中,安裝Node Package Manager來(lái)安裝依賴項(xiàng)。可以從Node Source或Node.jssnaps中找到基于Ubuntu和Debian的兼容Node.js二進(jìn)制分發(fā)包。要管理這些分發(fā)包,將需要fnm:這是一個(gè)快速而簡(jiǎn)單的Node.js,它管理所有已發(fā)布的Node.js版本,并允許根據(jù)當(dāng)前使用的目錄自動(dòng)安裝、卸載和切換版本??梢允褂冒惭b腳本進(jìn)行安裝。
(3)下一步是搭建服務(wù)器并識(shí)別和分配路由,創(chuàng)建和插入控制器邏輯,并與外部服務(wù)建立連接。
(4)創(chuàng)建路由、控制器邏輯、建立連接后,下一步就是構(gòu)建外部API調(diào)用來(lái)處理第三方API。
為了說(shuō)明Node.js在微服務(wù)中的使用,將使用AccuWeather API服務(wù)。可以創(chuàng)建一個(gè)免費(fèi)的AccuWeather帳戶。
在系統(tǒng)上創(chuàng)建一個(gè)新文件夾,并將其命名為Accuweather-microservice并在代碼編輯器中打開(kāi)它,確保系統(tǒng)已預(yù)裝節(jié)點(diǎn)。通過(guò)運(yùn)行以下命令:node -v
如果沒(méi)有安裝,可以到Node.js官網(wǎng)下載。在Accuweather-microservice中,運(yùn)行命令初始化package.json:Run npm init or npm init -y
使用npminit,可以自定義字段以使用npminit-y創(chuàng)建package.json文件;可以使用默認(rèn)字段來(lái)創(chuàng)建package.json文件。
現(xiàn)在要安裝所有必需的依賴項(xiàng),需要運(yùn)行以下命令:run npm install Express nodemon request
執(zhí)行上述步驟后,其文件將類似于以下代碼:
{ "name": "Accuweather-microservice", "version": "0.1.0", "private": true, "description": "Build a microservice using nodejs with AccuWeather Data Service", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node app.js", "dev": "nodemon app.js" }, "author": "", "license": "ISC", "dependencies": { "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.6",
(5)在創(chuàng)建package.json文件之后,需要?jiǎng)?chuàng)建一個(gè)index.js文件作為應(yīng)用程序的主文件,并在Accuweather-microservice文件夾中創(chuàng)建一個(gè)名為api_source的文件夾,其中包含要處理的控制器和路由要求。
(6)現(xiàn)在,可以在主文件夾中創(chuàng)建一個(gè)服務(wù)文件夾,以構(gòu)建一個(gè)與外部API連接并處理請(qǐng)求/響應(yīng)的weather.js文件。
(7)現(xiàn)在最后一步是執(zhí)行,此時(shí)應(yīng)用程序已準(zhǔn)備好運(yùn)行。
上述步驟只是使用Node.js構(gòu)建微服務(wù)應(yīng)用程序的一個(gè)簡(jiǎn)短過(guò)程,它將幫助完成項(xiàng)目。
既然了解了微服務(wù)、它們的好處以及如何使用Node.js構(gòu)建它們,接下來(lái)可以做的就是開(kāi)始處理項(xiàng)目。盡管不了解微服務(wù)可能會(huì)讓人感到困惑,但在適當(dāng)?shù)闹笇?dǎo)下,一定能夠開(kāi)發(fā)出可擴(kuò)展和一流的應(yīng)用程序。
到此這篇關(guān)于使用Node.js構(gòu)建微服務(wù)的文章就介紹到這了,更多相關(guān)Node.js構(gòu)建微服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Express和Multer實(shí)現(xiàn)文件本地服務(wù)器文件上傳功能
在現(xiàn)代應(yīng)用程序中,文件上傳功能成為了用戶共享和存儲(chǔ)數(shù)據(jù)的重要途徑,所以本文我們一起來(lái)探討文件上傳中間件的重要性,并提供常見(jiàn)的實(shí)現(xiàn)方法和相應(yīng)的代碼吧2023-06-06關(guān)于node編寫(xiě)文件上傳的接口的坑及解決
這篇文章主要介紹了關(guān)于node編寫(xiě)文件上傳的接口的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06基于node簡(jiǎn)單實(shí)現(xiàn)RSA加解密的方法步驟
這篇文章主要介紹了基于node簡(jiǎn)單實(shí)現(xiàn)RSA加解密的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03NodeJS 實(shí)現(xiàn)手機(jī)短信驗(yàn)證模塊阿里大于功能
這篇文章主要介紹了NodeJS 實(shí)現(xiàn)手機(jī)短信驗(yàn)證模塊阿里大于功能,需要的朋友可以參考下2017-06-06node終端里如何連接mysql數(shù)據(jù)庫(kù)并進(jìn)行sql查詢
這篇文章主要為大家介紹了node終端里如何連接mysql數(shù)據(jù)庫(kù)并進(jìn)行sql查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07node.js實(shí)現(xiàn)登錄注冊(cè)頁(yè)面
這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04快速掌握Node.js環(huán)境的安裝與運(yùn)行方法
這篇文章主要介紹了Node.js環(huán)境的安裝與運(yùn)行方法,Node是基于Google Chrome V8引擎的JavaScript解釋器,需要的朋友可以參考下2016-02-02