5 分鐘搭建 Node.js 微服務原型

翻譯:瘋狂的技術宅
前端

做者:Sergey Kravchenko
git

來源:mediumgithub

正文共:1099 字docker

預計閱讀時間:5 分鐘數據庫

微服務已成爲在 Node.js 中構建可擴展且強大的雲應用的主流方法。同時也存在一些門檻,其中一些難點須要你在如下方面作出決策:
npm

  • 組織項目結構。json

  • 將自定義服務鏈接到第三方服務(數據庫,消息代理等)ubuntu

  • 處理微服務之間共享的代碼。bash

  • 將項目容器化。服務器

  • 在本地運行和調試,而後將其部署到雲中。

SMF 框架是開箱即用的解決方案:

https://github.com/krawa76/smf

讓咱們看看它如何幫你建立和部署微服務原型而無需編寫任何代碼。

建立項目

安裝框架,建立一個新項目並 cd 到項目目錄:

1$ npm install -g sokyra-microservice-factory2$ smf new test-stack3$ cd test-stack複製代碼

帶有演示服務的樣板代碼已生成,咱們能夠輕鬆地運行該項目:

1$ smf up複製代碼

這將生成 Docker工件(docker-compose 和環境變量文件),構建映像並在本地運行容器:

docker-compose 日誌

若是在編輯器中打開項目,則會看到帶有 main.ts 模塊的自動生成的 demo 服務,該服務在上面的日誌中生成了記錄。其餘的重要文件是 smf-stack.json(項目配置),smf-env.json(容器 env 變量),通用的 Dockerfile 和 smf-docker.yml(docker-compose):

演示服務,main 模塊

要中止項目,請運行

1$ smf down複製代碼

添加新服務

讓咱們添加一項服務,該服務能夠經過消息代理髮送和接收消息,並將某些內容保存到數據庫中:

1$ smf add service service1複製代碼

選擇 RabbitMQMongoDB ,而後輸入 「0」 退出菜單:

這將在 main 模塊中建立新的帶有樣板代碼的 service 子文件夾:

讓咱們再次運行該項目查看其運行狀況:

1$ smf up複製代碼

如今咱們有 4 個容器在運行:RabbitMQ、MongoDB、demo 和 service1。後者經過 RabbitMQ 發送接收消息,並將模擬數據保存到 MongoDB:

docker-compose 日誌

能夠再次使用 smf down 命令中止該項目。

咱們能夠相似地添加更多服務,若是選擇相同的消息代理服務,它們都會經過消息中心交換消息。

部署

將咱們的項目部署到安裝了 Docker 和 Docker-Compose 的遠程服務器上很容易。若是你尚未,請按照如下簡單說明在 Amazon AWS EC2 中建立它:

https://github.com/krawa76/smf/blob/master/README-provisioner.md

還須要 Docker Hub 賬戶。若是丟失,你能夠在這裏免費註冊:

https://hub.docker.com/

在編輯器中打開 smf-deploy.json 文件,並填寫 Docker Hub 登陸名及密碼、主機地址和遠程計算機 SSH 憑據(ssh密鑰路徑)。

運行如下命令部署項目:

1$ smf deploy複製代碼

當該過程結束時,咱們能夠 ssh 到遠程機器,並查看在那裏運行的微服務:

1$ ssh -i "/Users/me/.ssh/aws-key.pem" ubuntu@ec2-x-x-x-x.compute1.amazonaws.com$ docker ps2(gives the list of services)$ docker logs -f test-stack-service13(give the live log)複製代碼

如今,咱們在雲中有了容器化微服務棧的有效原型。

下一步是什麼?

開始添加更多邏輯。因爲每一個服務都是一個單獨的NPM軟件包,所以咱們能夠進入到 service 文件夾,安裝其餘軟件包,在main.ts 模塊中編寫模式代碼,添加新的 JavaScript 模塊,等等:

1$ cd services/service12$ npm install ...複製代碼

編碼愉快!


歡迎關注前端公衆號:前端先鋒,一塊兒走上前端"沙雕"之路。

相關文章
相關標籤/搜索