我是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;
这并不真正符合微服务架构的条件。
您提供的整个代码足够小,可以被视为单个微服务(包含两个路由),但这不是微服务体系结构的示例。
根据这个定义;
“微服务是协同工作的小型自治服务”
构建微服务
要被视为微服务的 service1 和服务 2 都应该是自主的,当您将它们放在同一个快速应用程序中时,不会发生这种情况。例如;您无法在不影响另一个的情况下重新启动一个。如果不同时部署服务2,则无法升级服务1的版本。它们不是分布的,因为它们可以留在单独的机器中。
实际上,我认为您缺少微服务架构的概念。您的服务必须是独立的,如果它们需要相互通信,则必须使用服务发现机制,该机制将返回该服务的正常运行实例。微服务体系结构的另一种模式是,每个服务都必须有一个返回服务运行状况的终结点(/health),有了这个,您的服务发现可以检查该实例是否正常,并将其作为正常实例返回。
微服务不是关于技术,而是关于概念和实现正确的模式。否则,您将拥有混沌架构:D
如果你想理解这些概念,我真的推荐这本书:http://shop.oreilly.com/product/0636920033158.do