文章目录
- 概述
- 图解
概述
下面的图表显示了轮询和Webhook之间的比较。
假设我们运行一个电子商务网站。客户通过API网关将订单发送到订单服务,然后订单服务将订单传递给支付服务进行支付交易。支付服务然后与外部支付服务提供商(PSP)通信,以完成交易。
处理与外部PSP的通信有两种方法。
🔹 1. 短轮询
在向PSP发送付款请求后,支付服务会不断地询问PSP付款状态。经过多轮后,PSP最终返回状态。
短轮询有两个缺点:
- 不断轮询状态需要支付服务的资源。
- 外部服务直接与支付服务通信,存在安全漏洞。
🔹 2. Webhook
我们可以向外部服务注册一个Webhook。这意味着:当您有关于请求的更新时,请在特定的URL上回调给我。当PSP完成处理时,它将调用HTTP请求以更新支付状态。
通过这种方式,编程范式发生了变化,支付服务不再需要浪费资源来轮询支付状态。
如果PSP从未回调怎么办?我们可以设置一个每小时检查支付状态的定期任务。
Webhook通常被称为反向API或推送API,因为服务器会向客户端发送HTTP请求。在使用Webhook时,我们需要注意以下三点:
-
- 我们需要为外部服务设计一个适当的API供其调用。
-
- 由于安全原因,我们需要在API网关中设置适当的规则。
-
- 我们需要在外部服务中注册正确的URL。