Tag: 微服务

docker上的微服务 – 架构

我正在使用docker构build一个微服务项目。 我的一个微服务是一个应该从各种来源获取数据的监听器。 我想要实现的是启动和停止从源dynamic获取数据的能力。 例如在这幅图中,我有3个源码连接到3个docker。 我的问题开始,因为我需要创build另一个docker实例,当一个新的来源可用。 在这个例子中,让我们说源#4现在是可用的,我需要得到他的数据(我知道什么时候新的源变得可用),但我希望它被自动缩放(与源#4信息的倾听) 我想出了两个解决scheme,每个都有优点和缺点: 1)创build一个运行侦听器服务的大量docker的docker池,并且每当有新的源时,发送一条消息(使用rabbitmq,但我认为不太相关)到一个可用的docker来开始获取数据。 在这个解决scheme中,我有点担心没有理由运行Docker镜像的内存消耗,但这不是一个非常复杂的解决scheme。 2)每当有新的源代码可用时,创build一个新的docker(具有不同的环境variables) 有了这个解决scheme,我有一个创builddocker的问题。 在这一刻,我已经实现了这一点,但启动泊坞窗(让我们称之为pipe理器)的服务只是一个正常的nodejs应用程序,在同一台服务器上执行命令 – 我也需要它在docker集装箱内。 所以这里的问题是,我无法pipe理从主docker创build一个SSH连接来创build我的新的Docker。 我不太确定我的解决scheme是否按计划进行,并且非常感谢我的问题。

运行多个使用Socket.io的服务的最佳方式是什么?

我正在开发一个网站,我将使用微服务。 我将有一个或多个将使用Socket.io的Node.js应用程序。 我试图弄清楚我将如何构build这个。 我可以使用多个Node.js与Socket.io连接到用户,还是会遇到冲突? 我可以使用NGiNX作为UUID的代理来识别发送请求的微服务。 这是否做出敏感? 有没有更好的办法? 或者我也想使用一个Node.js有一个代理接收所有的Socket.io连接,然后创build一个与用户的连接。 但是这似乎增加了networking负载,因为我正在添加另一个微服务。 无论如何,我会喜欢你的意见。

设置授权后,Express-Gateway响应错误

尝试在请求头中设置我的授权密钥(key-auth)时出现错误404。 我敢肯定,我的密钥没有任何问题,因为如果我没有设置它的禁止状态将返回。 在设置任何凭据之前: $ curl http://localhost:8080/ip 将返回: { "origin": "5.116.28.133" } 在创build密钥validation凭证之后: $ curl -H "Authorization: apiKey ${keyId}:${keySecret}" http://localhost:8080/ip 将返回: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot GET /ip</pre> </body> </html> 这是我的网关configuration: http: port: 8080 admin: port: 9876 hostname: localhost apiEndpoints: api: host: localhost paths: '/ip' serviceEndpoints: httpbin: url: 'https://httpbin.org' policies: […]

寻找JWT Auth微服务的例子

我想要使​​用NodeJS,Mongo和JWT构buildauthentication/授权服务。 此服务将是一个微服务,它不仅在允许请求之前处理来自我的API网关的请求,而且还处理可能需要检查身份validation和angular色的其他服务的请求。 我假设所有其他服务将使用此身份validation服务来validationJWT以及angular色等。 希望这张图更好地解释我在找什么。 任何人都可以指向我的资源,可以帮助我学习如何使用NodeJS做到这一点?

微服务的体系结构

我最近开始使用node.js,我必须构build一个应该使用多个express.js服务的体系结构。 其中一些服务必须位于一台服务器上,另一台服务器上。 我想构build一个基本的服务(比如API网关),但是我不知道在这个网关和微服务之间或者在两个微服务之间进行通信的正确方式。 目前我正在使用基于此的解决scheme: # inside Gateway server I call another service: http.get('http://127.0.0.1:5001/users', (service_res) -> data = '' service_res.on 'data', (chunk) -> data += chunk service_res.on 'end', -> # some logic on data ).end() 我有一种强烈的感觉,这种做法是不正确的。 在API网关和微服务之间build立通信逻辑的正确方法是什么?

JWT微服务体系结构中的身份validation

题 问题如何在微服务应用程序中创build身份validation服务,并让其他服务检查该令牌(JWT)并检索用户? 可能的scheme 我目前的想法是基于身份validation服务在用户身份validation后将{ token, user }插入到Redis中。 所有其他服务都可以在Redis中检查用户的Authorization: Bearer kdI8$dj$nD&…标头令牌。 如果token存在于Redis中,则用户通过身份validation。 如果token在Redis中不存在,则用户不会被authentication。 用户将{ username, password }发送至授权服务 Auth服务对凭证进行身份validation并检索{ token, user } Auth服务将{ token, user }插入到Redis中 用户使用{ token }向Service-1发送请求 Service-1在Redis中为{ token }装饰,并检索{ token, user } Service-1做它的事情,并发回{ data } 这种方法有没有可能的安全,逻辑或架构问题?

微服务:如何处理有限上下文之间需要数据的场景

我开始将一个node.js项目移动到一个微服务的方法,并没有得到如何共享数据。 这里是一个例子,假设我有以下有界的上下文: 帐户(用于pipe理用户帐户,权限,login/注销,configuration文件等) 图像(用于pipe理file upload,如与给定帐户关联的个人资料照片,图像库等) video(用于pipe理video上传和转码为与给定用户相关的各种格式) 在这个例子中,图像和video似乎有自然依赖的帐户有限上下文或微服务。 我假设我可以将帐户表复制到图像和video数据库,并只存储所需的帐户数据,但这在保持一致性等方面看起来像一场噩梦,因为帐户信息经常更新,更不用说如果其他微服务需要这种相同的依赖。 我可以让所有三个微服务使用相同的数据库,但是这违反了每个微服务与自己的数据库绑定的build议。 处理这种情况的build议方法是什么? 我仍然在计划阶段,并希望确保我以正确的方式做到了这一点。

Google云端点是否等同于API网关,或端点是否等同于微服务?

使用App Engine灵活环境,我准备部署一个Angular 4客户端,并且正在研究云端点来处理我的node.js / express微服务,因为它似乎简化了对端点请求的安全和validation,我想澄清一些事情: 我是否使用云端点作为将请求路由到各个微服务后端的API网关,还是应该将微服务构build为单独的端点 – 应用程序本身? 我是否静态托pipeAngular 4应用程序(与服务器无关),并将端点请求直接发送到ng客户端的Gateway / microservice,或者是通过服务器框架(例如node.js / express)托pipe的应用程序,请求一起到网关/ microservice

Cqrs +微服务架构:如何从其他服务获取数据

我正在为个人项目设置一个微服务/ cqrs体系结构,在“标准”设置中有一点我不明白。 我的意思是标准设置 https://www.ibm.com/developerworks/cloud/library/cl-build-app-using-microservices-and-cqrs-trs/index.html 假设我有一个订单服务和一个提货点服务,而且我有一个像“发送订单汇总电子邮件”的命令。 订单服务应该如何获得发送电子邮件所需的取件点数据(例如开放时间等)? 我看到4种可能性,但肯定有其他的。 该命令直接进入订单服务,然后订单服务查询取货点服务以获取数据。 该命令转到取件点服务,然后取件点服务发布订单服务的新事件,并附带所需的信息。 该命令直接进入订单服务,然后订单服务查询只读的面向客户端的数据库。 合并2服务…鉴于他们没有其他共享的上下文,这将是一个可惜… 谢谢 !

使用stream式JSON连接两个Node / Express应用程序

我目前有两个应用程序运行… 一个是我的REST API层,为前端提供了许多服务。 另一个是“翻译应用程序”,它可以通过一个JSON对象(通过http POST调用),对该对象执行一些数据转换和映射,并将其返回给REST层 我的情况是我想为大量的对象做这个。 我想要的stream程是: 用户以特定格式请求100,000个对象 – > REST层从数据库中检索 – >将每个JSON数据对象传递给翻译服务以执行格式化 – >将每个对象传回REST层 – > REST层将新对象返回给用户。 我不想要的是在100,000个不同的调用上调用tranlate.example.com/translate,或者通过1个巨大的POST请求传递兆字节的数据。 所以很明显的答案是将数据stream式传输到翻译应用程序,然后将数据stream式传回。 似乎有很多解决scheme可以跨应用程序stream式传输数据:打开一个websocket(socket.io),在两者之间打开一个原始的TCP连接,或者由于Node的HTTP请求和响应数据实际上是一个可以利用的数据stream然后发送一个JSON对象,当它成功的翻译 我的问题是在这里有两个应用程序之间stream数据的最佳做法吗? 看来我应该使用http(req,res)stream,并保持一个长期的连接打开,以保留“REST”模型。 任何可以提供的样本都会很好。