提问者:小点点

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


我是node.js和docker以及微服务架构的新手。我试图了解微服务架构实际上是什么,理论上我确实了解微服务架构是什么。请参阅以下实现 这是索引.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");
});

文件服务1:

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;

文件服务2:

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”索引访问它们.js?
  2. 我已经阅读了基本教程 Docker.Is 可以将上述三个“模块”放在单独的容器中?
  3. 如果上述内容不符合微服务的条件,应如何操作才能将上述示例转换为微服务?

共2个答案

匿名用户

这并不真正符合微服务架构的条件。

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

根据这个定义;

“微服务是协同工作的小型自治服务”
构建微服务

要被视为微服务的 service1 和服务 2 都应该是自主的,当您将它们放在同一个快速应用程序中时,不会发生这种情况。例如;您无法在不影响另一个的情况下重新启动一个。如果不同时部署服务2,则无法升级服务1的版本。它们不是分布的,因为它们可以留在单独的机器中。

匿名用户

实际上,我认为您缺少微服务架构的概念。您的服务必须是独立的,如果它们需要相互通信,则必须使用服务发现机制,该机制将返回该服务的正常运行实例。微服务体系结构的另一种模式是,每个服务都必须有一个返回服务运行状况的终结点(/health),有了这个,您的服务发现可以检查该实例是否正常,并将其作为正常实例返回。

微服务不是关于技术,而是关于概念和实现正确的模式。否则,您将拥有混沌架构:D

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