微服務已成為在 Node.js 中構建可擴展且強大的雲應用的主流方法。同時也存在一些門檻,其中一些難點需要你在以下方面做出決策:
- 組織項目結構。
- 將自定義服務連接到第三方服務(數據庫,消息代理等)
- 處理微服務之間共享的代碼。
- 將項目容器化。
- 在本地運行和調試,然後將其部署到雲中。
SMF 框架是開箱即用的解決方案:
https://github.com/krawa76/smf
讓我們看看它如何幫你創建和部署微服務原型而 無需編寫任何代碼。
創建項目
安裝框架,創建一個新項目並 cd 到項目目錄:
<code>1$ npm install -g sokyra-microservice-factory
2$ smf new test-stack
3$ cd test-stack
/<code>
帶有演示服務的樣板代碼已生成,我們可以輕鬆地運行該項目:
<code>1$ smf up
/<code>
這將生成 Docker工件(docker-compose 和環境變量文件),構建映像並在本地運行容器:
docker-compose 日誌
如果在編輯器中打開項目,則會看到帶有 main.ts 模塊的自動生成的 demo 服務,該服務在上面的日誌中生成了記錄。其他的重要文件是 smf-stack.json (項目配置), smf-env.json (容器 env 變量),通用的 Dockerfile 和 smf-docker.yml (docker-compose):
演示服務,main 模塊
要停止項目,請運行
<code>1$ smf down
/<code>
添加新服務
讓我們添加一項服務,該服務可以通過消息代理發送和接收消息,並將某些內容保存到數據庫中:
<code>1$ smf add service service1
/<code>
選擇 RabbitMQ 和 MongoDB ,然後輸入 “0” 退出菜單:
這將在 main 模塊中創建新的帶有樣板代碼的 service 子文件夾:
讓我們再次運行該項目查看其運行情況:
<code>1$ smf up
/<code>
現在我們有 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密鑰路徑)。
運行以下命令部署項目:
<code>1$ smf deploy
/<code>
當該過程結束時,我們可以 ssh 到遠程機器,並查看在那裡運行的微服務:
<code>1$ ssh -i "/Users/me/.ssh/aws-key.pem" [email protected]$ docker ps
2(gives the list of services)$ docker logs -f test-stack-service1
3(give the live log)
/<code>
現在,我們在雲中有了容器化微服務棧的有效原型。
下一步是什麼?
開始添加更多邏輯。由於每個服務都是一個單獨的NPM軟件包,因此我們可以進入到 service 文件夾,安裝其他軟件包,在 main.ts 模塊中編寫模式代碼,添加新的 JavaScript 模塊,等等:
<code>1$ cd services/service1
2$ npm install ...
/<code>
編碼愉快!
最後:更多相關資料私信【Java】就可以免費領取噠
上面都是自己整理好的!我就把資料貢獻出來給有需要的人!順便求一波關注,哈哈~各位小夥伴關注我後私信【Java】就可以免費領取噠
閱讀更多 Java天天 的文章