通用实践:
1、如何做幂等处理
2、高并发写加分布式锁,防止写覆盖或异常
3、利用 redis 适当缓存数据,注意过期时间
4、一些业务如果不要求实时性(比如扣减积分),可以通过消息队列异步处理
5、分库分表后,关联数据尽量存储在一个库上,查询加分配键
6、注意业务边界条件,类职责要分离,降低出错概率
技巧:
1、回调机制(传递回调地址,让调用方实现回调)
2、批量处理
3、边界异常处理
一、APP登录
APP 端的登录,通常都是维护版本、session、检查版本升级等逻辑。
关键点:session 和设备信息都是在登录的时候保存或更新,session 数据定期会备份,存储设备信息主要针对设备做推送等功能,记录当前设备的版本等信息。
二、支付流程
1、条码支付及 APP 支付流程
关键点:支付一般都会采用异步回调更新订单,异步会多次调用一般都会验签、防幂等。
三、消息推送
关键点:C 端支付后,手机端推送借助第三方,其他设备则通过 MQTT 实现推送
netty + websocket + redis 实现消息推送 (针对 PC 端设备推送)
四、 API 网关
关键点:网关主要做通用处理,包括延签、限流、熔断等,然后转发请求到业务集群
在转发时,需要注意httpclient各种异常,防止出现无法转发情况。