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

做者:Sergey Kravchenko

翻譯:瘋狂的技術宅前端

原文:https://medium.com/@krawa76/b...node

未經容許嚴禁轉載git

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

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

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

https://github.com/krawa76/smf面試

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

建立項目

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

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

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

$ smf up

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

1*he6NAqyFQFN-0sK1yukWRQ.png

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

1*xcHdUgoLZsa1jmyvfSYMiw.png

要中止項目,請運行

$ smf down

添加新服務

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

$ smf add service service1

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

1*xnzqpNqIxhtDijzLGn1SOg.png

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

1*zuwz7ggrJlCN447Je_RMvg.png

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

$ smf up

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

1*kQzySC8joql1Pwekm87IHA-20200305191604643.png

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

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

部署

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

https://github.com/krawa76/sm...

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

https://hub.docker.com/

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

1*-B_LZVdkdw_rfyMEsMOwZA.png

運行如下命令部署項目:

$ smf deploy

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

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

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

下一步是什麼?

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

$ cd services/service1
$ npm install ...

編碼愉快!


本文首發微信公衆號:前端先鋒

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章

歡迎繼續閱讀本專欄其它高贊文章:


相關文章
相關標籤/搜索