交流服务

继续前进,我开发了另一个名为服务服务的微服务。 该服务具有2个API端点,这些端点要么返回与提供者关联的单个服务的详细信息,要么返回给定提供者的服务列表。

  “使用严格”; 
const status = require('http-status');
module.exports =(app,ServicesModel)=> {
app.get('/ service /:pid /:sid',(req,res,next)=> {
ServicesModel.getServiceById(req.params.pid,req.params.sid).then((service)=> {
res.status(status.OK).json(服务);
})。catch(next);
});
app.get('/ services /:pid',(req,res,next)=> {
ServicesModel.getServices(req.params.pid).then((services)=> {
res.status(status.OK).json(服务);
})。catch(next);
});
};

关于此服务的其他所有内容都与上一练习中已经开发的服务类似。

之前,我们介绍了以下内容:

第一服务
在我们开始创建第一个容器服务的精髓之前, 让我们看看最终结果应该是什么…… medium.com 让我们建立服务
记住这一点: medium.com NodeJS和容器化
这是我尝试将功能齐全的应用程序(已经在使用中的BTW)移植到容器化版本中… medium.com

这是启动服务脚本:

  #!/ usr / bin / env bash 
 评估`docker-machine env manager1` 
  docker build -t services-service。 
  docker运行--add-host manager1:192.168.99.100 --name services-service -p 3001:3001 -d services-service 

并验证它是否确实在工作:

但是,更有趣的练习是开发一种服务,该服务将使用我们迄今为止开发的其他服务。 我将其称为uber-service,它将使用某些消息传递方案使用Doctors-service和services-service。

优步服务

我的超级服务侦听端口3002并调用其他已开发的服务。 回想一下,我开发了/ provider和/ service端点,每个端点都返回了有关提供程序的信息的子集。

小心语

这里的代码绝不是开发调用其他服务的服务的理想方式。 在生产环境中,您可能需要使用kafka-node或amqp-node(RabbitMQ)甚至Redis来处理容器间的通信。 但是出于我的目的,我将使用请求对象来实现相同的结果。

并且我们验证我们的服务是否在manager1 docker-machine中作为服务运行,并且具有它自己的容器。

下一步是什么?

我们将构建一个API网关,以将我们的所有服务整合在一起。 另外,如果您到目前为止已经注意到我们已经将所有服务都部署到manager1,那并不是我们真正想要的。 我们希望将容器分发到所有虚拟服务器,我们将在创建API网关容器后解决该问题。