积分平台之八[链路追踪与监控告警]
背景 排查问题,系统之间往往需要定位到同一个链路请求,因此需要链路追踪。 另外一些实时业务需要针对性监控时效性,并告警通知。 设计 要求 需要提供全链路追踪id 需要监控同步进度 实现 版本一 ...
背景 排查问题,系统之间往往需要定位到同一个链路请求,因此需要链路追踪。 另外一些实时业务需要针对性监控时效性,并告警通知。 设计 要求 需要提供全链路追踪id 需要监控同步进度 实现 版本一 ...
背景 用于商家积分兑换商品活动 订单送积分 营销送积分 实现 要求 不允许超扣 需要幂等,应对网络问题和重复提交等情况 需要高性能 需要风控,避免薅羊毛 针对锁单需要支持积分预扣 针对退单需要积分回滚 步骤 用户校验 余额校验 用户限额校验(基于redis累加,计算剩余可赠送积分值) 调用存储过程 用户余额校验 加锁(MySQL lock 锁定用户id) 写入积分日志(开启事务) 更新用户余额 其他要求 如何避免超扣 MySQL层面的lock,也有遇到需要超扣的场景,用户一开始就可以使用一定积分,后面再来归还积分。 ...
背景 应用的接口往往需要多重的鉴权保证生产环境的安全,防止攻击 例子 ip维度 配置ip白名单,限制访问ip 可信服务名 由于主要是对内部上游的业务平台,配置对应的可信服务名,允许跳过ip直接访问 ...
背景 工程项目需要持续的构建-发布能力 实现 持续构建 TeamCity。 区分环境进行构建 可以构建代码包及镜像形式 可以配置触发器,代码提交时自动触发构建 发布 聚石塔 or 阿里云k8s集群版 ...
背景 当遇到如下场景需要考虑限流以保护整个系统不发生宕机 暴露给品牌方接口,可能存在突发流量 大促时,暴露给平台端的接口,可以由于品牌或者平台的活动,接收到大量的c端流量 设计 要求 关键接口尽可能高性能 当发生高频请求时,告警通知 限流组件 支持动态限流 实现 实例环境隔离,区分开平台流量和品牌流量,通过请求头方式隔离大查询(慢sql风险) 统计网关层的tp99并对接钉钉告警,业务日志需要包含请求耗时 限流组件使用sentinel 结合guava封装限流注解实现单机限流 扩展 常见限流算法 ...
背景 积分回滚 针对特定的积分操作回滚,避免用户使用回滚刷新积分有效期。例如积分加钱购买商品。 之前发生退单时,需要重新赠送积分,会导致原来使用的积分重置有效期。 ...
背景 积分过期是一个常见需求,常见的如先进先出模型,另外需要允许客户端传入过期时间 设计 要求 允许外部定义积分规则(相对时间和绝对时间) 允许外部传入过期时间,如没有传入则默认采用规则计算 过期积分不允许使用 年末海量过期考虑性能 实现 过期积分实现 ...
背景 什么情况下需要分库分表 数据量比较大,不要遇到数据库问题就考虑分库分表,优先考虑软件和硬件的优化。 由于数据量较大,整体会达到几十个T。因此按照租户进行分库分表。 ...
背景 使用过的微服务组件 例子 网关 Spring Gateway,用于路由。由于平台限制流量不允许直接出服务器,因此需要部署中间网关对流量进行转发。包含上行和下行的流量,拦截指定路径,并对路径进行重写即可 ...
背景 第三方客户往往容易存在调用失败的问题,在关键链路上如何应对这种问题。尤其是大促期间可能的调用超时,该如何处理。 例如兑换礼品,调用后超时,如果只是简单的发起重试,容易造成业务的异常。 ...