积分平台之十九[数据库死锁]
背景 数据库死锁常发生于两个事务,互相依赖对方的资源,在获取锁的时候形成互相等待。MySQL会自动检测死锁,并回滚较小的事务。 例子 在用户查询积分的时候,触发了过期。 ...
背景 数据库死锁常发生于两个事务,互相依赖对方的资源,在获取锁的时候形成互相等待。MySQL会自动检测死锁,并回滚较小的事务。 例子 在用户查询积分的时候,触发了过期。 ...
背景 项目中的cpu使用率往往不高,使用多线程可以迅速提高cpu利用率,迅速提高任务处理效率。 例子 任务中的多线程设计 使用countdownLatch,将人群进行拆分,多线程进行处理,然后主线程阻塞等待下一批任务 使用最大线程数控制,原子类,判断线程数进行多线程开启,否则sleep,不占用cpu 接口中的多线程设计 ...
背景 消息队列是现代应用系统中应用非常广泛的组件。可以利用消息队列实现流量削峰,业务解耦。 例子 流量削峰 用户入会。大促时,往往会出现大量的用户引流入会,这时候快速的处理入会请求,不影响用户的活动参与就非常重要。这时候往往将用户入会请求直接标记为成功,再交由消费服务完成完整的入会过程,可能涉及历史的积分等级处理。 ...
背景 很多系统中往往需要一个全局唯一的id,例如订单号,用户id。 现在在积分日志分库分表情况下需要唯一id。数据异构之间的同步,如果不是唯一id,可能发生冲突。 ...
背景 线上问题排查是一名合格开发的必备技能。 设计 要求 线上出现慢接口,如何定位问题 任务无法启动,频繁重启,如何定位,例如淘宝同步服务 应对 arthas 通过阿里开源诊断工具arthas可以进行处理 ...
背景 数据库作为项目核心组件,常见的问题分析和优化 例子 积分日志查询慢 数据密度大,遇到深翻页问题,采用返回id进行数据过滤,需要客户端配合调整。 进一步,采用推模型来同步积分日志。 ...
背景 不断增长的存储空间占用,需要降低存储,清理无效账号 设计 要求 按照租户进行归档,挑选近三年没有积分日志新增且用户最大更新时间为三年前的租户 归档前需要确认 使用oss存储,支持还原 实现 按照租户进行筛选 进行二次运营确认 确认归档处理,按照数据行复制到文件后进行gzip压缩 上传到oss 删除数据(注意在业务低峰期) 如果需要还原,从oss下载文件解压,并导入
背景 积分相当于用户的资产,往往需要当作金钱对待 设计 要求 需要及时发现用户的薅羊毛行为 对于异常用户需要有黑名单机制 接口调用需要有相应的鉴权措施 实现 如何及时发现用户的薅羊毛行为 ...
背景 作为一套积分系统,数据一致性相当重要。例如积分日志和积分总值的对账一致。 设计 要求 积分日志和积分总值对得上 支持按照积分日志回放积分值 支持按照业务系统、活动进行对账 实现 自身对账 ...
一、业务架构 处理会员积分、账户管理和第三方平台集成。 1、账户管理 区分普通账号和品牌账号,提供多维度的业务构建基础 按照账号分库分表 2、积分管理 支持多种积分发放场景,单个、批量 支持积分余额查询,明细查询 实现积分风控,每日限额,大额告警 实现积分过期 3、用户管理 用户基本信息查询 用户合并、解绑 用户积分同步 4、第三方模块继承 电商平台会员等级、积分打通 下游品牌打通 二、技术架构 1、整体框架 分层架构:采用经典的控制层、服务层、数据访问层设计 ...