跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 计费系统的 金额结算怎么做?
未分類
27 11 月 2020

计费系统的 金额结算怎么做?

计费系统的 金额结算怎么做?

資深大佬 : kikione 3

单应用,单数据库

业务是这样的: 用户请求我们 API 查询,先在账户充值金额。

每请求一次 API 会有一次计费,请求成功计费,余额减; 失败不计费; 余额不足请求失败;

余额结算怎么做比较好?业界都是什么方案?

大佬有話說 (11)

  • 資深大佬 : securityCoding

    请求前检查费用(商户锁) -》请求成功-》消息队列-》扣费

  • 資深大佬 : securityCoding

    没有消息队列可以使用 redis stream

  • 資深大佬 : moult

    请求 API 肯定有写记录吧。根据请求记录表,十分钟或一小时统一扣费一次。云服务那些按量计费很多都是一小时甚至一天计费在。实时扣费的话真的太浪费资源了。

  • 主 資深大佬 : kikione

    @moult 谢谢

  • 主 資深大佬 : kikione

    @securityCoding 谢谢

  • 資深大佬 : wangbenjun5

    像这种单应用单数据库太简单了,一个锁就解决了并发问题,保证 1 毛钱不亏

  • 資深大佬 : wangbenjun5

    当然如果考虑到锁的性能影响接口速度的话就不要使用数据库锁,可以使用内存锁,redis 锁。如果使用队列做成异步模式的话可能会导致超额,假设并发量大的话。

  • 主 資深大佬 : kikione

    @wangbenjun5 给数据库加一个 乐观锁就可了是吧

  • 資深大佬 : Dabaicong

    如果实时计费,最好是悲观锁。select for update 。记得 where 条件中要有索引,要不然就会退化成表锁

  • 資深大佬 : brucefu

    如何定义“请求一次”,为请求一次做一个唯一键,异步插表就好,要保成功。将来计费系统单独出去的话,就发消息出去

  • 資深大佬 : dengkj

    MySQL RR RC 级别的话不用显式加锁,只需要判断用户余额是否大于等于零即可,数据库会自动加锁

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具