如题,产品需要对 api 进行按次数收费,比如 1w 次 /1 元钱,或者每个月 40 元钱 4w 次这样,只是打个比方,价格不重要。
目前就两个思路:
一.每次 api 调用都同步的到数据库里面进行加 1 ,然后判断是否超过阈值,没超过放行,超过了限制。 这里面流程就长了:取得用户 ID ,判断用户 token 权限,对表字段进行加一,然后各种逻辑判断。 如果是网关级别的,会大大降低 api 性能。 优势是精确,劣势是性能低。
二.每次 api 调用直接推到 mq 里面,后方进行 api 统计,异步将结果写入 cache 。 再次 api 调用查 cache ,超出阈值,限流。 优势是高性能,劣势是不精确。
下面是两个业界的 api 收费方式: https://coinmarketcap.com/api/pricing/ https://cloud.tencent.com/document/product/628/39300
请教大家,有没有什么更好的解决方案?