用于事件驱动架构的API网关

时间:2017-04-24 22:54:44

标签: rest soa microservices event-driven

我们正在尝试将我们的整体核心拆分为微服务,并使用消息系统(例如Kafka)添加一些相互连接的新核心。

下一步是通过Api网关为移动应用和微服务之间的通信创建API端点。

开发API网关向/从微服务传输数据的好方法是什么?

  1. 使用消息系统作为请求 - 回复(转换请求) API网关进入消息命令,等待消息响应 有状态或必要数据的系统)?
  2. 在必要的微服务上创建REST端点(例如使用REST.li)来发送或 通过网关获取数据;使用消息系统来保证数据的一致性 基于微服务产生的事件?
  3. 感谢您的建议和一些想法

2 个答案:

答案 0 :(得分:0)

我想说,第二种选择在许多情况下听起来更合理。

事件驱动的解决方案主要适用于以下几个流程的情况,因此创建实体可以通过Rest端点进行,而该实体的流程可以通过事件进行异步。

为说明起见,付款流程可能如下所示:

1-)API GW->付款休息控制器->付款服务-创建付款 支付服务创建一个支付实体,然后发布“ payment.created”事件。 2-)队列->付款流控制器->服务-更新付款 Payment Stream控制器使用“ payment.created”事件,然后检查余额,并将付款实体更新为Confirmed。更新实体后,它可以发送“ payment.confirmed”事件。 ...

另一方面,我的意思是第一种选择,因为您需要了解所有交换或队列,因此很难维护一个高度分离的系统。

但是,我认为在某些情况下结合两种解决方案可能会更好。例如,您的API被高流量的客户端公开,并且API的任务非常明确。在那种情况下,使用MQ作为此API的缓冲区将是完美的。

答案 1 :(得分:-1)

这取决于您正在采用的架构。 如果我理解了这个问题,你已经拥有了kafka消息服务器的代理。 我认为你可以使用架构发布/订阅同步消息。

如果在后端架构中支持SLA的旧系统,在这种情况下,您可以使用集成所需的其余端点。

这是在架构中使用API​​网关模式的好处。

非常感谢。