在本地執行微服務
在微服務架構出現之前,開發團隊會將整個應用程式建置、部署和運行為一個大型的軟體塊。為了測試其模組中的一個小變更,開發人員不僅需要進行單元測試,還必須建置整個應用程式。因此,建置過程會花費大量的時間。建置完成後,開發人員會將其應用程式版本部署到測試伺服器。開發人員會在遠端機器或其本地電腦上運行伺服器。在後一種情況下,開發人員必須在其本地電腦上安裝和操作相當複雜的環境。
在微服務架構的時代,開發人員編寫、建置、測試和運行小型的軟體服務。建置速度很快。使用像 Node.js 這樣的現代框架,無需安裝和操作複雜的伺服器環境即可測試單個服務,因為該服務會以常規進程運行。您無需將服務部署到某個環境即可進行測試,因此您只需建置服務並立即在本地電腦上運行即可。
本模組涵蓋在本機開發單一服務的不同方面。您不需要編寫程式碼。相反地,您會建置、運行和測試現有的 ratings
服務。
ratings
服務是一個以 Node.js 編寫的小型 Web 應用程式,它可以獨立運行。它的行為與其他 Web 應用程式類似。
- 監聽它接收的參數作為連接埠。
- 預期在
/ratings/{productID}
路徑上接收HTTP GET
請求,並傳回與用戶端為productID
指定的值相符的產品評分。 - 預期在
/ratings/{productID}
路徑上接收HTTP POST
請求,並更新與您為productID
指定的值相符的產品評分。
按照以下步驟下載應用程式的程式碼,安裝其相依性,並在本機運行。
$ mkdir ratings $ cd ratings $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/ratings.js -o ratings.js $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/package.json -o package.json
瀏覽服務的程式碼並注意以下要素:
- Web 伺服器的功能
- 監聽連接埠
- 處理請求和回應
- 與 HTTP 相關的方面
- 標頭
- 路徑
- 狀態碼
- Web 伺服器的功能
Node.js 應用程式以 JavaScript 編寫,這表示沒有明確的編譯步驟。相反地,它們使用 即時編譯。因此,建置 Node.js 應用程式意味著安裝其相依性。在您儲存服務程式碼和套件檔案的相同資料夾中,安裝
ratings
服務的相依性。$ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN ratings No description npm WARN ratings No repository field. npm WARN ratings No license field. added 24 packages in 2.094s
執行服務,並傳遞
9080
作為參數。然後應用程式會監聽 9080 連接埠。$ npm start 9080 > @ start /tmp/ratings > node ratings.js "9080" Server listening on: http://0.0.0.0:9080
在您的瀏覽器中開啟 https://#:9080/ratings/7 或使用另一個終端機視窗中的
curl
命令來存取ratings
。$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
使用
curl
命令的POST
方法將產品的評分設定為1
。$ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}' {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
檢查更新後的評分。
$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
在運行服務的終端機中使用
Ctrl-C
停止它。
恭喜,您現在可以在本地電腦上建置、測試和運行服務了!
您已準備好將服務封裝到容器中。