Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在基于事件的微服务前面实现RESTful API_Python 3.x_Rest_Rabbitmq_Microservices_Pika - Fatal编程技术网

Python 3.x 在基于事件的微服务前面实现RESTful API

Python 3.x 在基于事件的微服务前面实现RESTful API,python-3.x,rest,rabbitmq,microservices,pika,Python 3.x,Rest,Rabbitmq,Microservices,Pika,我正在开发一个系统,该系统实现了通过RabbitMQ消息总线进行通信的多个微服务 这些微服务是使用python和pika库创建的(用于发布消息和使用RabbitMQ队列) 其中一个微服务(我们称之为“订单”)有一个连接的数据库来存储数据 到目前为止,应用程序组件是异步的,完全依赖RabbitMQ交换/队列进行通信,并且在需要时,在一个微服务需要从另一个微服务请求数据时实现回调队列 现在我已经有了后端微服务,可以相互交流了,我想为这个“订单”微服务实现一个RESTful API接口,这样客户端

我正在开发一个系统,该系统实现了通过RabbitMQ消息总线进行通信的多个微服务

  • 这些微服务是使用python和pika库创建的(用于发布消息和使用RabbitMQ队列)
  • 其中一个微服务(我们称之为“订单”)有一个连接的数据库来存储数据
到目前为止,应用程序组件是异步的,完全依赖RabbitMQ交换/队列进行通信,并且在需要时,在一个微服务需要从另一个微服务请求数据时实现回调队列

现在我已经有了后端微服务,可以相互交流了,我想为这个“订单”微服务实现一个RESTful API接口,这样客户端(例如:web浏览器、外部应用程序)就可以接收和发送数据

我可以想出两种方法:

  • 在类似flask的东西中创建另一个微服务(我们称之为“orders api”),并将其连接到“orders”微服务背后的底层数据库。这似乎是个坏主意,因为它打破了微服务模式,只将一个数据库连接到一个微服务(我不希望两个微服务必须知道相同的数据模型)

  • 创建“api网关”微服务,该微服务公开RESTful api,并在接收请求时通过消息总线从“订单”微服务请求信息。类似于RabbitMQ在此处记录远程过程调用的方式:。这意味着“api网关”将是同步的,因此在消息总线上等待响应时将阻塞


  • 我不确定是否有其他我不熟悉的方法来实现这一点。任何关于如何在此环境中集成RESTful API的建议都将不胜感激

    你好。你的问题总结得很好。此外,这更像是一个架构问题,而不是一个特定于技术的问题。你可以考虑把这个贴到StAdExchange上,谢谢你的信息!那似乎是个更合适的地方。我也会把这个贴在那里!