配额是干什么的
配额是在用户购买云产品的时候,对用户的购买数量进行限制。在用户配额不足的时候,可以进行配额扩容的申请。
配额是多维度的,用户维度、实例维度、地域维度三个维度进行限制的。
目的是为了,一是防止用户大量购买单一云产品,导致底层资源不足;二是为了防止用户在购买免费资源的时候毫无限制导致底层资源不足。
配额实现的主要接口:
租户的主要接口:
用户在下订单的时候进行配额的预占,当用户下单的资源开通以后,云管接口进行回调,配额取消预占进行实际的配额扣减。
用户退订的时候会进行配额数量的增加。
运营侧的主要接口,配额模板的增加、上线、下线、删除;用户配额使用量的查询、总量的调整、用户申请的处理。扣减和预占流水的查询。
遇到的经典问题
1、多笔订单同事支付引发的,扣减接口的并发问题。
2、数据otter双向同步导致的问题,已经otter数据修复经验:
1、北京-武汉 的otter 停掉otter
2、武汉---北京 任务增加要同步的表
3、开启同步
4、武汉update全量数据的某个字段 如done_time
update quota.quota_user_beijing set REMARKS='用户配额初始化';
5、确认是否同步成功
6、武汉---北京 停止otter
7、武汉---北京 删除上面加的同步的表
8、北京--武汉 开启otter
9、武汉---北京 开启otter
3、配额线上表创建联合索引,涉及到的2个字段,在Otter被当做2个分别的索引, 导致Otter 数据同步问题。
解决方案,将索引从线上删除掉
4、配额生产环境消费MQ消息体 消费不到消息
rocketmq 一个topic中同一个订阅组只有一个机器才能消费得到,因为多个应用同时接入了 同一个订阅组,导致 随机一个应用的一台机器消费
同一个topic 不同的应用创建不同的订阅组,应用和订阅组是一对一
同一个订阅组内的接入的机器实例数量大于 队列数量 ,超出数量的机器是消费不到消息的
5、https://wiki.cestc.cn/pages/viewpage.action?pageId=117595002
DB断连 应用无法自愈问题修复,增加数据库链接超时配置