积分平台之八[链路追踪与监控告警]

背景 排查问题,系统之间往往需要定位到同一个链路请求,因此需要链路追踪。 另外一些实时业务需要针对性监控时效性,并告警通知。 设计 要求 需要提供全链路追踪id 需要监控同步进度 实现 版本一 ...

2025-04-28 · 1 分钟 · johnny

积分平台之二[积分加减]

背景 用于商家积分兑换商品活动 订单送积分 营销送积分 实现 要求 不允许超扣 需要幂等,应对网络问题和重复提交等情况 需要高性能 需要风控,避免薅羊毛 针对锁单需要支持积分预扣 针对退单需要积分回滚 步骤 用户校验 余额校验 用户限额校验(基于redis累加,计算剩余可赠送积分值) 调用存储过程 用户余额校验 加锁(MySQL lock 锁定用户id) 写入积分日志(开启事务) 更新用户余额 其他要求 如何避免超扣 MySQL层面的lock,也有遇到需要超扣的场景,用户一开始就可以使用一定积分,后面再来归还积分。 ...

2025-04-28 · 2 分钟 · johnny

积分平台之二十[应用接口安全]

背景 应用的接口往往需要多重的鉴权保证生产环境的安全,防止攻击 例子 ip维度 配置ip白名单,限制访问ip 可信服务名 由于主要是对内部上游的业务平台,配置对应的可信服务名,允许跳过ip直接访问 ...

2025-04-28 · 1 分钟 · johnny

积分平台之九[CI/CD]

背景 工程项目需要持续的构建-发布能力 实现 持续构建 TeamCity。 区分环境进行构建 可以构建代码包及镜像形式 可以配置触发器,代码提交时自动触发构建 发布 聚石塔 or 阿里云k8s集群版 ...

2025-04-28 · 1 分钟 · johnny

积分平台之六[限流]

背景 当遇到如下场景需要考虑限流以保护整个系统不发生宕机 暴露给品牌方接口,可能存在突发流量 大促时,暴露给平台端的接口,可以由于品牌或者平台的活动,接收到大量的c端流量 设计 要求 关键接口尽可能高性能 当发生高频请求时,告警通知 限流组件 支持动态限流 实现 实例环境隔离,区分开平台流量和品牌流量,通过请求头方式隔离大查询(慢sql风险) 统计网关层的tp99并对接钉钉告警,业务日志需要包含请求耗时 限流组件使用sentinel 结合guava封装限流注解实现单机限流 扩展 常见限流算法 ...

2025-04-28 · 1 分钟 · johnny

积分平台之七[积分回滚和积分冻结]

背景 积分回滚 针对特定的积分操作回滚,避免用户使用回滚刷新积分有效期。例如积分加钱购买商品。 之前发生退单时,需要重新赠送积分,会导致原来使用的积分重置有效期。 ...

2025-04-28 · 1 分钟 · johnny

积分平台之三[积分过期]

背景 积分过期是一个常见需求,常见的如先进先出模型,另外需要允许客户端传入过期时间 设计 要求 允许外部定义积分规则(相对时间和绝对时间) 允许外部传入过期时间,如没有传入则默认采用规则计算 过期积分不允许使用 年末海量过期考虑性能 实现 过期积分实现 ...

2025-04-28 · 1 分钟 · johnny

积分平台之十[分库分表]

背景 什么情况下需要分库分表 数据量比较大,不要遇到数据库问题就考虑分库分表,优先考虑软件和硬件的优化。 由于数据量较大,整体会达到几十个T。因此按照租户进行分库分表。 ...

2025-04-28 · 1 分钟 · johnny

积分平台之十八[微服务组件]

背景 使用过的微服务组件 例子 网关 Spring Gateway,用于路由。由于平台限制流量不允许直接出服务器,因此需要部署中间网关对流量进行转发。包含上行和下行的流量,拦截指定路径,并对路径进行重写即可 ...

2025-04-28 · 1 分钟 · johnny

积分平台之十二[第三方网络问题]

背景 第三方客户往往容易存在调用失败的问题,在关键链路上如何应对这种问题。尤其是大促期间可能的调用超时,该如何处理。 例如兑换礼品,调用后超时,如果只是简单的发起重试,容易造成业务的异常。 ...

2025-04-28 · 1 分钟 · johnny