基于RESTful API的系统的体系结构决策和错误处理(使用Nginx + Redis)

Knowledge_quest

在基于HTTP的基础上开发RESTful API方面,我是一个新手,所以这就是为什么我有一些基本的架构问题。为了简单起见,我将身份验证放在等式之外。

RESTful API应由nginx(采用反向代理配置)和Redis处理。某些HTTP请求/响应可能在HTTP正文中使用JSON。

从消息传递的角度来看,我想实现的目标是:

1.(客户端-> nginx)通过HTTP向nginx发出RESTful API请求。

2.(nginx-> Redis)nginx将把API请求传递给Redis并发出“ publish newRequest”,此后,nginx将等待Redis的响应(使用nginx第三方Redis模块)。
2.1我还不确定上述“等待Redis的响应”将如何实施。但是,我可以考虑订阅一个Redis事件,该事件将在请求处理后立即由我的自定义Redis“应用程序”(请参见下文)发布。您可能知道更好的方法吗?

3.(Redis-> Redis“应用程序”)(已发布)“ newRequest”将唤醒其Redis订阅者,该订阅者是Redis“应用程序”(基于Redis C ++客户端的自定义C ++代码)。

4.(Redis“应用程序”-> Redis-> nginx->客户端)。Redis“应用程序”将处理该请求,然后将发布响应(用于唤醒Redis订户-从2.1-并因此传递“回复”返回到nginx,最后是原始调用者)
4.1现在..我的Redis“应用程序”可能会失败,所以我想将此类错误传达回原始调用方(同时使用HTTP响应错误代码和附加的描述性JSON)。但是从我的Redis“应用程序”中,我无法控制HTTP响应错误代码(由nginx管理)。因此,我想知道的是..如何/在哪里可以更清晰地实施错误处理,这样我的Redis“应用程序”将驱动错误处理,而不必为我在Redis中添加的每个新错误更新nginx配置“应用”?

预先感谢您对我们的支持!

最好的祝福

亚历山大·阿尔舒勒

所有(对我来说)nginx 3rd Party Redis模块通常使用基本的请求/响应协议,而不是长期的发布/订阅协议。它们全部使用nginx的主要功能之一-对上游服务器的异步子请求。异步意味着工作进程直到响应到达才阻塞,而是继续处理来自客户端的其他请求和来自上游服务器的响应。

是Nginx功能的良好概述。

您对“ Redis应用程序”的想法对我来说有点怪异和多余。

使用redis2-nginx-module时,通过使用Redis作为存储的nginx conf文件处理RESTful API的可能性非常有限。最受欢迎的用法-仅页面缓存。

但是您可以在Redis端使用EVAL命令来做一些聪明的事情。不是我的首选方式。

我建议使用完美的OpenResty捆绑包。借助LuaNginxModule和LuaRestyRedis,您可以在nginx中实现任何智能逻辑,并将Redis用作存储。使用LuaRestyRedis模块,您将能够编写非常简单但仍然高效的代码,以异步方式处理对Redis的子请求。在处理一个RESTFul请求的同时,您甚至可以并行或顺序向Redis发出一个子请求。

它还具有一个带有JSON解析和编码支持的LuaCjson模块。

管道将简单得多:客户端<-> nginx <-> Redis

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于DynamoDB构建的RESTful API?

来自分类Dev

Spring Redis错误处理

来自分类Dev

使用Redis,Python和PHP的基于事件的邮件

来自分类Dev

使用HTTP标头凭证保护基于RESTEasy的RESTFul服务

来自分类Dev

基于MIPS的体系结构中的C程序错误

来自分类Dev

RESTful体系结构中的URI

来自分类Dev

基于TIme的通知体系结构

来自分类Dev

基于环回redis的会话

来自分类Dev

Web应用程序体系结构:RESTful和Web应该共享相同的DTO?

来自分类Dev

如何在Node.js和Redis中实现基于令牌的授权API?

来自分类Dev

用于错误处理的 Node Express RESTful API 默认引擎

来自分类Dev

操作系统是基于ISA还是基于微体系结构而有所不同?

来自分类Dev

基于 Redis 的 URL 过滤:Bloom 过滤器或 HyperLogLog 数据结构

来自分类Dev

在基于微服务的体系结构中,上游和下游服务是什么?

来自分类Dev

基于OData / Web API的.Net项目的解决方案体系结构

来自分类Dev

在ASP.NET MVC Web API服务和MVC客户端体系结构中实现身份验证和基于角色的授权

来自分类Dev

如何在节点js应用程序中使用redis中的hset基于子键删除

来自分类Dev

处理redis中的层次结构

来自分类Dev

Redis中的排序集基于多个条件

来自分类Dev

AngularJS:关于基于AJAX更改DOM的体系结构的建议

来自分类Dev

Redis集群上的Redis命令批处理

来自分类Dev

Logstash体系结构决策

来自分类Dev

Logstash体系结构决策

来自分类Dev

mvc4全局错误处理模块化体系结构

来自分类Dev

redis中的订阅系统

来自分类Dev

redis 和 redis-server 包

来自分类Dev

使用StackExchange.Redis的Redis密码

来自分类Dev

从StackExchange.Redis使用REDIS Sets命令

来自分类Dev

从StackExchange.Redis使用REDIS Sets命令

Related 相关文章

热门标签

归档