2017-05-16 78 views
-1

实现WebService的最佳体系结构,它接受来自一方的请求,保存并增强该请求,然后用新参数调用另一服务。 这里有没有特别的Design Pattern基于Java中RESTful API的微服务体系结构

+0

听起来像[事件驱动的体系结构]的一个很好的用例(https://en.wikipedia.org/wiki/Event-driven_architecture) –

+0

所有服务都属于您的应用程序,或者最后一个请求将会发送到外部服务?您可以检查api网关模式以增强您的请求。在第一个请求到达api网关服务之后。 Api网关可以提出额外请求并增强原始请求并传递它。 – barbakini

+0

是@barbakini,正好最后一个请求将被提交给外部服务。 –

回答

1

有没有很多要继续,但从你说的这听起来像是一个工作"pipes and filters"

为了得到更精确的答案,你可能要问自己一些更详细的问题:

如果你需要做的传入消息的任何确认或转型?你想要以相同的方式处理所有请求,还是有不同的类型?外部服务是否可能发生变化,如果是,他们会经常这样做吗?如果最终的Web服务调用失败(您是否应该回滚数据库记录?),您希望执行什么操作?你如何报告失败/回应 - 你需要回报这些吗?您是否需要一种机制来跟踪特定请求的进度?

0

既然您正在寻找设计模式,我想您可能想比较在项目环境中使用微服务编排vs编排的优缺点。

0

如果您不需要立即响应呼叫系统,我建议您使用event-driven方法,如果这是可行的。因此,而不是REST服务,您将有一个消息代理,您的服务将订阅特定事件。这将隐藏你的消费者在消息代理之后,这将使你的系统更少耦合。这可以通过Spring Cloud Stream来实现,在这里你将有一个接收器(微服务产生事件,变换器 - 微服务使中间变换成为可能,源 - 微服务接收最终结果以供进一步处理)。

另一种可能的情况可能是骆驼。它基本上具有所有内置的集成模式,所以基于REST API或事件实现解决方案应该不成问题。