Articles of 微服务

最好的方法来包装mongoosevalidation错误

我们知道mongoose为我们提供了一个简单的方法来进行validation。 但是,假设你使用express + mongoose来构build一个微服务; 和一些客户端(可能是networking应用程序,手机应用程序等)需要消耗它。 通常,我更喜欢用简单的错误代码和消息来回应JSON。 在大多数情况下,客户可以根据他们向用户显示哪种语言来创build自己的消息。 默认情况下,如果我们从mongoose捕获错误,我们可以得到JSON响应,如: JSON响应 { "errors": { "price": { "message": "Path `price` (-1) is less than minimum allowed value (0).", "name": "ValidatorError", "properties": { "min": 0, "type": "min", "message": "Path `{PATH}` ({VALUE}) is less than minimum allowed value (0).", "path": "price", "value": -1 }, "kind": "min", "path": "price", "value": -1, […]

在运行相同服务的多个容器上插入重复的数据

我有一个处理相同数据的服务副本的问题。 我的代码从套接字获取数据,然后将该数据插入到数据库。 问题是,如果我有2个相同的服务容器(我有更多的2),他们都插入相同的,我得到我的数据库重复的数据。 有没有办法告诉他们中的一个做插入? 我使用docker和kubernetes,但我还是新的 function dataStream(data) { // get the data from the socket const payload = formatPayload(lines); addToDb(payload); // I want this to happen only from 1 service broadcast(payload) }

如何使用Seneca和Express发送响应

我使用Seneca来路由API调用,并表示为我的文件提供服务。 问题是,我似乎无法find一种方式来从API获取我的数据后发送回应客户端的响应。 有了快递,我只是使用res.send ,但由于我在塞内加上下文,我不能。 在文档中没有find任何对此问题的提及。 "use strict"; const bodyParser = require('body-parser'); const express = require('express'); const jsonp = require('jsonp-express'); const Promise = require('bluebird'); const path = require('path'); const seneca = require('seneca')(); const app = express(); module.exports = (function server( options ) { seneca.add('role:api,cmd:getData', getData); seneca.act('role:web',{use:{ prefix: '/api', pin: {role:'api',cmd:'*'}, map:{ getData: {GET:true} // explicitly accepting […]

在nodejs中共享微服务之间的代码依赖关系

我正在devise一个使用3个微服务的平台; 一个套接字服务器 ,一个运行expressjs的前端服务器和一个发送跨地区邮件的电子邮件服务器 。 项目文件支持非常简单: project_root |______________ socket |______________ frontend |______________ email 每个文件夹里面都有一个nodejs项目。 为了互相交stream,这些微服务使用简单的Redis pub / sub实现 。 问题是,在每个node_modules文件夹中,将会有一个与Redis依赖项相关的NPM包。 所以有重复的代码,如果我想更新包,我将不得不做3次。 我使用了不正确的方法吗?

如何连接一个somata客户端到远程registry?

我正在使用somata作为我正在构build的Web应用程序的微服务平台。 我已经成功地在同一台机器上运行somataregistry的一台机器上设置多个客户端。 现在我想让一台机器上的客户机连接到另一台机器上的registry。 如何将客户端连接到远程registry?

如何为在nodejs中发现的微服务做客户端负载均衡

我们正在尝试在一个环境中用nodejs构build一个微服务,其他的微服务用java / spring启动。 其他微服务使用consul.io进行服务发现和function区,以实现客户端负载平衡。 (这将是:春季启动,春季云启动器领事发现,春季云启动假装和春季云启动器带项目) 现在,在这个组合中,我们有一个领事节点模块来注册或发现服务,但是剩下的事情呢? 如何在客户端上处理负载均衡,并使用类似于function区的方式进行发现识别的rest呼叫。 我怎么能在节点堆栈中实现这个?

领事:SD架构。 从前端访问微服务的正确方法是什么?

我有一些由领事pipe理的后台微服务,为了从另外一个服务中获取一些数据,我使用consul的服务发现function,例如获取所有健康的服务器,然后从检索的条目中获取服务器地址和端口等但是我应该如何从前端做到这一点呢? 只需调用需要的微服务器使用它的实际IP或使用docker集装箱的命名空间调用它? 从知道该怎么做,甚至更好的人那里得到任何回应,谁会做得更好,这是非常有帮助的,因为我坚持了一下。

Miroservices与sockets之间的服务间通信

我目前正在为以下场景devise一个系统:数据从客户端stream式传输,由多个服务依次处理(不平行)。 然后,在分析数据的同时将数据传输回客户端。 在这个过程中服务器返回客户端部分分析的数据是非常重要的(这就是为什么我需要套接字)。 客户端甚至可以在服务器分析过程中发送更多的信息,这可能会影响分析结果。 我制作的高级素描 我已经做了大量的研究,我看到只有REST微服务或使用各种消息队列的套接字asynchronous处理。 我还没有看到任何人在这些服务之间直接使用这么多打开的套接字来实现微服务。 现在我的问题是:我在这里做正确的事情吗? 在我所有的服务器之间打开套接字是错误还是不可靠?

RESTful APIdevise:令牌authentication

我正在devise一个符合标准的RESTful API。 每个资源都有自己的终点。 我的资源中没有动词 我们使用JWT进行无状态客户端身份validation。 我怎样才能仍然使用auth路由的语义devise? 例如 /auth/login /auth/logout /auth/reset /auth/forgot 这些端点包含动词…我不能锻炼如何最好地命名auth资源。

如何通过AJAX加载容器应用程序中的React组件

什么是通过AJAX在现有的React应用程序中加载/插入React组件的最佳实践。 我正在考虑通过AJAX加载各种React组件的“容器应用程序”。 这怎么可能呢? 这与webpack如何工作?