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

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

瘋狂的技術宅 前端先鋒 前端

翻譯:瘋狂的技術宅
做者:Sergey Kravchenko
來源:medium
正文共:1099 字
預計閱讀時間:5 分鐘5 分鐘搭建 Node.js 微服務原型node

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

  • 組織項目結構。
  • 將自定義服務鏈接到第三方服務(數據庫,消息代理等)
  • 處理微服務之間共享的代碼。
  • 將項目容器化。
  • 在本地運行和調試,而後將其部署到雲中。
    SMF 框架是開箱即用的解決方案:

https://github.com/krawa76/smfgithub

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

建立項目

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

1$ npm install -g sokyra-microservice-factory
2$ smf new test-stack
3$ cd test-stack

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

1$ smf up

這將生成 Docker工件(docker-compose 和環境變量文件),構建映像並在本地運行容器:
5 分鐘搭建 Node.js 微服務原型json

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

演示服務,main 模塊
要中止項目,請運行ubuntu

1$ smf down

添加新服務

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

1$ smf add service service1

選擇 RabbitMQ 和 MongoDB ,而後輸入 「0」 退出菜單:
5 分鐘搭建 Node.js 微服務原型

這將在 main 模塊中建立新的帶有樣板代碼的 service 子文件夾:
5 分鐘搭建 Node.js 微服務原型

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

1$ smf up

如今咱們有 4 個容器在運行:RabbitMQ、MongoDB、demo 和 service1。後者經過 RabbitMQ 發送接收消息,並將模擬數據保存到 MongoDB:
5 分鐘搭建 Node.js 微服務原型

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密鑰路徑)。
5 分鐘搭建 Node.js 微服務原型

運行如下命令部署項目:

1$ smf deploy

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

1$ ssh -i "/Users/me/.ssh/aws-key.pem" ubuntu@ec2-x-x-x-x.compute1.amazonaws.com$ docker ps
2(gives the list of services)$ docker logs -f test-stack-service1
3(give the live log)

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

下一步是什麼?

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

1$ cd services/service1
2$ npm install ...

編碼愉快!

原文連接

https://medium.com/@krawa76/bootstrap-node-js-microservice-stack-4a348db38e51

相關文章
相關標籤/搜索