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