使用Express.js和docker了解微服务

时间:2018-04-02 14:13:05

标签: node.js express microservices

我是node.js和docker以及微服务架构的新手。 我试图了解微服务架构实际上是什么,理论上我理解微服务架是什么。请看下面的实现 这是 index.js 文件:

var express = require("express"); 
var app = express();
var service1 = require("./service1");
var service2 = require("./service2");
app.use("/serviceonerequest",service1);
app.use("/servicetwo",service2);
app.listen(3000,function(){
    console.log("listening on port 3000");
});

文件 service1

var express = require("express");
var router = express.Router();
router.use(express.json());
router.get("/",(req,res)=>{
    //perform some service here
    res.send("in the get method of service 1");
    res.end();
});        
router.post("/letsPost",(req,res)=>{
    res.send(req.body);
    res.end("in post method here");
})
module.exports = router;

文件 service2:

var express = require("express");
var router = express.Router();       
router.use(express.json());
router.get("/",(req,res)=>{
    //perform some service here
    res.end("in the GET method for service 2");
});    
router.post("/postservice2",(req,res)=>{
    res.send(req.body);
});    
module.exports = router;
  1. 上述资格是否属于“微服务架构”?由于有两种服务,可以通过'api-gateway'index.js访问它们?
  2. 我已经阅读了Docker的基本教程。是否有可能将上述三个“模块”放在不同的容器中?
  3. 如果以上不符合微服务要求将上述样本转换为微服务应该做些什么?

2 个答案:

答案 0 :(得分:8)

这并不适合作为微服务架构。

您提供的整个代码足够小,可以被视为一个单独的微服务(包含两个路由),但这不是微服务架构的示例。

根据这个定义;

  

"微服务是小型的,自主的服务,一起工作"
  Building Microservices< - 提示:您应该阅读本书

将service1和service2视为微服务应该是自治的,当您将它们放在同一个快速应用程序中时不会发生什么。例如;你不能重新启动一个而不影响另一个。您无法升级service1的版本而无需部署service2。它们不是分布在它们可以留在不同机器中的意义上。

答案 1 :(得分:4)

实际上我认为你错过了微服务架构的概念。您的服务必须是独立的,如果他们需要相互通信,他们必须使用服务发现机制,该机制将返回该服务的健康实例。微服务架构的另一种模式是每个服务必须具有返回服务健康状态的端点(/ health),如果您的服务发现可以检查该实例是否健康并将其作为健康实例返回..

微服务不是关于概念和实现正确模式的技术。否则你将有一个混乱的架构:D

如果你想要理解我真正推荐这本书的概念:http://shop.oreilly.com/product/0636920033158.do