如何使用Node.js構(gòu)建微服務(wù)
譯文譯者 | 李睿
審校 | 孫淑娟
使用Node.js構(gòu)建微服務(wù)是一種事件驅(qū)動(dòng)的開發(fā)架構(gòu),允許開發(fā)人員開發(fā)功能加載、可擴(kuò)展和可靠的應(yīng)用程序。
構(gòu)建應(yīng)用程序不僅要滿足客戶的要求,還要將復(fù)雜的功能與動(dòng)態(tài)編程集成在一起,以維護(hù)用戶體驗(yàn)和代碼質(zhì)量。在開發(fā)加載功能的大型應(yīng)用程序時(shí),確保應(yīng)用程序平穩(wěn)運(yùn)行非常重要。
本文將介紹微服務(wù)架構(gòu)、優(yōu)勢以及如何使用Node.js開發(fā)微服務(wù)。
1.什么是微服務(wù)?
微服務(wù)是一種面向服務(wù)的架構(gòu)(SOA)。它是一個(gè)基于組件的模型,其中應(yīng)用程序由定義良好的協(xié)議(如HTTP)和獨(dú)立組件的組合構(gòu)成。簡單來說,它是一種用于使用容器開發(fā)分布式應(yīng)用程序的架構(gòu),其中集成到應(yīng)用程序中的每個(gè)功能都充當(dāng)企業(yè)業(yè)務(wù)的獨(dú)立服務(wù)。微服務(wù)最重要的特征是它們的API數(shù)組。
此外,使用微服務(wù)開發(fā)應(yīng)用程序可以提高模塊化程度,同時(shí)還可以獨(dú)立部署應(yīng)用程序的每個(gè)部分,并單獨(dú)測試單元。
一些在其應(yīng)用程序中使用這種架構(gòu)的知名企業(yè)巨頭包括Netflix、Amazon、Uber、SoundCloud和許多其他品牌。為了開發(fā)帶有微服務(wù)的應(yīng)用程序,一些最好的編程語言是Golang、Node.js、Python、Java等等。
既然已經(jīng)用最簡單的術(shù)語演示了什么是微服務(wù)架構(gòu),那么了解它是否有益以及應(yīng)該選擇哪種編程語言來開發(fā)微服務(wù)也很重要。
2.微服務(wù)的優(yōu)勢
使用微服務(wù)開發(fā)廣泛而動(dòng)態(tài)的業(yè)務(wù)應(yīng)用程序已經(jīng)是一種好處。但除此之外,還有很多好處可以幫助開發(fā)人員做出更好的決定。以下是微服務(wù)的一些優(yōu)勢:
(1)部署過程更流暢,部分應(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)上開發(fā)應(yīng)用程序時(shí),可以用不同的語言編寫不同服務(wù)的代碼。
(6)使用微服務(wù)架構(gòu)構(gòu)建的應(yīng)用程序通常不會(huì)停機(jī)。
(7)它基于單個(gè)架構(gòu)而不是整個(gè)應(yīng)用程序所需的資源提供可擴(kuò)展的應(yīng)用程序。
(8)另一個(gè)額外的好處是對開發(fā)人員而言;它提供了一種簡化的體驗(yàn),因?yàn)樗麄儾槐亓私馔暾南到y(tǒng);他們只需要了解正在處理的功能或服務(wù),從而節(jié)省時(shí)間和費(fèi)用,并提高生產(chǎn)力。
上面提到的只是使用微服務(wù)開發(fā)應(yīng)用程序的一些重要好處,在應(yīng)用程序的開發(fā)過程中會(huì)遇到更多的好處。但需要確保了解微服務(wù)的缺點(diǎn)。雖然沒有太多的缺點(diǎn),但只要高效完成工作,就可以排除這些缺點(diǎn)。
其主要缺點(diǎn)是,如果流程架構(gòu)不正確,則可能會(huì)給開發(fā)人員帶來系統(tǒng)過度碎片化的問題。此外,監(jiān)控微服務(wù)架構(gòu)有時(shí)會(huì)變得復(fù)雜,因?yàn)檎麄€(gè)系統(tǒng)存在多個(gè)故障點(diǎn),這反過來也增加了應(yīng)用程序的測試復(fù)雜性。
3.使用Node.js構(gòu)建微服務(wù)的原因
在微服務(wù)應(yīng)用程序開發(fā)中使用的所有編程語言中,Node.js因其特性和提供的好處而被開發(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)使其非常有利于開發(fā)事件驅(qū)動(dòng)的應(yīng)用程序。
(3)Node.js庫支持非阻塞調(diào)用,無需等待前一個(gè)調(diào)用返回即可繼續(xù)工作。
(4)使用Node.js構(gòu)建的應(yīng)用程序是可擴(kuò)展的,這意味著執(zhí)行模型通過將請求分配給其他工作線程來支持?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)樗泻芏嗟暮锰?。以下是如何?gòu)建微服務(wù)應(yīng)用程序的分步指南。
(1)第一步是是確定業(yè)務(wù)需求,這意味著開發(fā)人員需要了解其服務(wù)對開發(fā)微服務(wù)的需求。
(2)第二步是安裝Node.js到系統(tǒng)中,安裝Node Package Manager來安裝依賴項(xiàng)??梢詮腘ode Source或Node.jssnaps中找到基于Ubuntu和Debian的兼容Node.js二進(jìn)制分發(fā)包。要管理這些分發(fā)包,將需要fnm:這是一個(gè)快速而簡單的Node.js,它管理所有已發(fā)布的Node.js版本,并允許根據(jù)當(dāng)前使用的目錄自動(dòng)安裝、卸載和切換版本。可以使用安裝腳本進(jìn)行安裝。
(3)下一步是搭建服務(wù)器并識別和分配路由,創(chuàng)建和插入控制器邏輯,并與外部服務(wù)建立連接。
(4)創(chuàng)建路由、控制器邏輯、建立連接后,下一步就是構(gòu)建外部API調(diào)用來處理第三方API。
為了說明Node.js在微服務(wù)中的使用,將使用AccuWeather API服務(wù)??梢詣?chuàng)建一個(gè)免費(fèi)的AccuWeather帳戶。
在系統(tǒng)上創(chuàng)建一個(gè)新文件夾,并將其命名為Accuweather-microservice并在代碼編輯器中打開它,確保系統(tǒng)已預(yù)裝節(jié)點(diǎn)。通過運(yùn)行以下命令:node -v
如果沒有安裝,可以到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)字段來創(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連接并處理請求/響應(yīng)的weather.js文件。
(7)現(xiàn)在最后一步是執(zhí)行,此時(shí)應(yīng)用程序已準(zhǔn)備好運(yùn)行。
上述步驟只是使用Node.js構(gòu)建微服務(wù)應(yīng)用程序的一個(gè)簡短過程,它將幫助完成項(xiàng)目。
既然了解了微服務(wù)、它們的好處以及如何使用Node.js構(gòu)建它們,接下來可以做的就是開始處理項(xiàng)目。盡管不了解微服務(wù)可能會(huì)讓人感到困惑,但在適當(dāng)?shù)闹笇?dǎo)下,一定能夠開發(fā)出可擴(kuò)展和一流的應(yīng)用程序。
原文鏈接:https://dzone.com/articles/how-to-build-microservices-with-nodejs