【问题标题】:Multiple-language microservice approach多语言微服务方法
【发布时间】:2018-10-17 21:42:25
【问题描述】:
这是一个相当简单的问题,我试图找到一些关于它的东西,但要么我完全不在我的脑海里,要么不太容易找到,有没有办法说:微服务 1(在 Nodejs ) 和 Microservice 2 ( 在 Python 中) 在同一个 ApiGateWay (Nodejs Express) 下......我使用 Nodejs (express) 作为 GateWay 和 Nodejs (Cote.js) 中的 2 个微服务完全没有问题,但现在我需要python(Flask)中的部分逻辑..使用第二语言的最佳方法是什么?我读了一些关于内部 restApi 的东西,但我找不到任何明确的例子。
顺便说一句:如果 Docker 有帮助,我完全可以使用它,不要犹豫。
【问题讨论】:
标签:
node.js
python-3.x
docker
microservices
【解决方案1】:
解决问题的一个好方法是使用 nginx 路由,比如说在 nginx 的配置文件中,你可以这样做
location /api/v1 {
proxy_pass http://localhost:4000;
}
你会在那里运行你的节点 js api,并有一个不同的路由指向你的 python api:
location /api/v1/ms2 {
proxy_pass http://localhost:4001;
}
然后让你的前端指向当时需要的那个,然后你就可以在同一台服务器上运行两种不同的语言,为同一个前端提供服务
【解决方案2】:
让不同的微服务使用不同的技术是很常见的情况。但是,他们需要一个 api 来相互通信。通常那是一个休息 api。例如,微服务 1 在端口 x 上侦听请求。根据请求的 url 路径(例如 /hello-world),它将返回请求数据的字符串表示形式(例如 json)。
Docker 可以帮助您设置服务的端口并将所有内容粘合在一起。