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