为订阅消息传递服务建模配额系统的最佳方法

时间:2014-03-23 08:05:07

标签: ruby-on-rails stripe-payments

我有一个rails应用程序,它具有三个计划级别的订阅方面,具体取决于价格等级。例如,0-1000条消息为10美元,1001-10000条消费金为20美元,并且超过配额金额的附加费为0.01美元。

每个用户都有很多消息。什么是跟踪每个用户的消息使用和超额并相应收费的最佳方式(高级别)?

1 个答案:

答案 0 :(得分:1)

我认为你需要这些元素:

  
      
  1. 跟踪消息数量(缓存)的方法
  2.   
  3. 跟踪支付系统的方式(如何计算附加费等)
  4.   
  5. 预定收费过程
  6.   

讯息

要跟踪已发送的消息,您需要一个缓存系统(即时计算将非常昂贵)。我在这里没有那么多经验,但我建议您查看Redis(您可能希望research caching here

我会使用Redis为所有月份的消息存储key/value pair。因此,当您的数据库中创建一条消息时,有一种机制可以将更新添加到Redis哈希(它将属于用户ID)

  

Redis键/值将存储消息时间戳(created_at)&邮件的user_id。这意味着您可以参考该月的Redis商店&转储到另一个数据库(稍后引用),允许您计算每个用户发送的消息数


<强>付款

要启用基于层的定价结构,您需要能够计算要发送的月度发票。这应该是一个内部系统,基本上创建一种机制,向用户提供发票,并将其发送给支付提供商以转移资金

要计算发票,您基本上需要运行rake任务来执行此操作:

  
      
  1. 在用户的Redis商店中循环
  2.   
  3. 将Redis商店存储在数据库(可能)
  4. 中   
  5. 取一个&#34;计数&#34;消息
  6.   
  7. 使用简单算法确定价格
  8.   
  9. 创建定价invoice&amp; invoice_messages表中的相关记录(您可以逐条列出消息使用)
  10.   

计划

虽然功能相对较小,但您需要安排发票创建

我实际上正在考虑这个问题(没有多少经验),所以要做到这一点,你需要设置一个rake任务来循环开启用户应该开具发票的时间。根据您的应用,您必须确定正确的发票日期&amp;然后根据它运行前面的步骤