微服务已成为在Node.js中构建可扩展且功能强大的云应用程序的主流方法。也有进入壁垒,其中一些壁垒要求您在以下方面做出决定:组织项目结构。将自定义服务连接到第三方服务(数据库、消息代理等)处理微服务之间共享的代码。容器化项目。在本地运行调试,然后部署到云端。SMF框架是一个开箱即用的解决方案:https://github.com/krawa76/smf让我们看看它如何帮助您在不编写任何代码的情况下创建和部署微服务原型。创建一个项目安装框架,创建一个新项目并cd到项目目录:1$npminstall-gsokyra-microservice-factory2$smfnewtest-stack3$cdtest-stack生成带有演示服务的样板代码,我们可以轻松运行项目:1$smfup这将生成Docker工件(docker-compose和环境变量文件),构建图像并在本地运行容器:docker-composelog如果您在编辑器中打开项目,您将看到auto和main.ts模块生成的demo服务生成了上面日志中的记录。其他重要文件是smf-stack.json(项目配置)、smf-env.json(容器环境变量)、commonDockerfile和smf-docker.yml(docker-compose):演示服务、停止项目的主要模块,请运行1$smfdown添加新服务让我们添加一个可以通过消息代理发送和接收消息并将某些内容保存到数据库的服务:1$smfaddserviceservice1选择RabbitMQ和MongoDB,然后输入“0”退出菜单:这将创建新的主模块中带有样板代码的服务子文件夹:让我们再次运行该项目以查看其运行情况:1$smfup现在我们有4个容器在运行:RabbitMQ、MongoDB、demo和service1。后者通过RabbitMQ发送和接收消息并将模拟数据保存到MongoDB:docker-composelogs可以再次使用smfdown命令停止项目。我们可以类似地添加更多的服务,如果选择相同的消息代理服务,它们都将通过消息中心交换消息。部署将我们的项目部署到安装了Docker和Docker-Compose的远程服务器很容易。如果您还没有,请按照以下简单说明在AmazonAWSEC2中创建它:https://github.com/krawa76/smf/blob/master/README-provisioner.md还需要一个DockerHub帐户。如果丢失,可以在这里免费注册:https://hub.docker.com/在编辑器中打开smf-deploy.json文件并填写DockerHub登录名和密码、主机地址和远程计算机SSH凭据(ssh密钥路径)。运行以下命令部署项目:1$smfdeploy当进程结束时,我们可以ssh到远程机器并查看那里运行的微服务:1$ssh-i"/Users/me/.ssh/aws-key.pem“ubuntu@ec2-x-x-x-x.compute1.amazonaws.com$dockerps2(givesthelistofservices)$dockerlogs-ftest-stack-service13(givethelivelog)我们现在在云中有一个容器化微服务堆栈的工作原型。下一步是什么?开始添加更多逻辑。由于每个服务都是一个单独的NPM包,我们可以进入服务文件夹,安装其他包,在main.ts模块中编写模式代码,添加新的JavaScript模块等:1$cdservices/service12$npminstall...开心编码!
