随笔分类 - 业务&场景
摘要:1、Body 参数 可以使用 @RequestBody 或 @RequestParam,也可以不使用任何注解。 @RequestBody 主要用来接收前端传递给后端的 json 格式的数据的(请求体中的数据的)。 它只有一个属性-required,表示参数是否必须要传,默认为 true。此时前端请求
阅读全文
摘要:1、场景和问题 我们常用Redis来做缓存减少数据库的访问。一般流程是: (1)数据的请求先查缓存中是否存在 (2)如果缓存命中,则直接返回数据,如果缓存中不存在,则查数据库,然后再写缓存 可能产生的问题: 1、多线程导致数据不一致 例如:线程A和线程B同时更新用户积分 (1)线程A将用户积分更新为
阅读全文
摘要:1、场景 最近在做用户拉灰策略,需要统计用户在n分钟之内获得的广告奖励总数,如果超过阈值则拉灰,其中n和阈值都支持配置。 2、方案分析 获得用户任意时间段内的奖励值是一个典型的滑动窗口问题,这里我们要明确几点: (1)广告行为是非高频行为,因为一个广告的市场一般在15-30之间 (2)因为作弊用户都
阅读全文
摘要:1、场景 在电商系统中买商品过程,先加入购物车,然后选中商品,点击结算,即会进入待支付状态,后续支付。 过程需要检验库存是否足够,保证库存不被超卖。 场景一:买家需要购买数量可以多件 场景二:秒杀活动,到时间点只能购买一件 2、要解决的问题 防止相同用户重复下单 检查库存准确数量 防止扣错库存数量
阅读全文
摘要:现象:shua-video项目中引用了配置中台bp-config的SDK,然后在mq消息监听类中使用。如上使用方式,在waterService中引用了bp-config。在测试环境mq中没有消息消费时项目能正常启动,但在线上有消息消费时项目启动报错,提示找不到bp-config类。 @Compone
阅读全文
摘要:一个安静的晚上突然被群里报警打断,然后果断不情愿的爬起来找问题,通过监控发现一个服务的QPS暴增,接口响应延迟也上来了,达到s级别了,所以赶紧找问题。 因为应用很依赖redis,第一时间先看是不是它,果然还真是它,看下图: 确定了问题的方向就该找具体原因了,进一步查看Zabbix发现其中一台redi
阅读全文
摘要:最近一个服务上线一个月后出现某个时间段响应延迟的问题,先看下监控数据: 这里有一点,单台实例的并发最高达到200是因为没修改spring boot中tomcat默认的最大线程数(默认是200)。 从上图可以看出21点—24点以及第二天08点—11点服务的延迟已经达到s级别,甚至严重时已经达到30多s
阅读全文
摘要:业务需求:为了防止业务中关键接口被刷(对于网赚类业务,提现和收益类接口属于关键接口),客户端和服务端采用非对称加密进行安全校验。 思路:1、为不影响产品使用体验,仅对关键接口(关键接口一般非频繁操作)进行加密 2、将时间戳作为加密项之一,防止同一个签名可以使用多次 3、服务端对定义的关键接口请求做校
阅读全文
摘要:场景:前端在request body中传了多个参数,为了方便使用@RequestBody映射成相应的参数对象。 @PostMapping(value = "/game/sync") public WebMessage gameMsgReport(UserInfo userInfo,@RequestB
阅读全文