众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。
积分平台之十[分库分表]
背景 什么情况下需要分库分表 数据量比较大,不要遇到数据库问题就考虑分库分表,优先考虑软件和硬件的优化。 由于数据量较大,整体会达到几十个T。因此按照租户进行分库分表。 ...
众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。
背景 什么情况下需要分库分表 数据量比较大,不要遇到数据库问题就考虑分库分表,优先考虑软件和硬件的优化。 由于数据量较大,整体会达到几十个T。因此按照租户进行分库分表。 ...
背景 使用过的微服务组件 例子 网关 Spring Gateway,用于路由。由于平台限制流量不允许直接出服务器,因此需要部署中间网关对流量进行转发。包含上行和下行的流量,拦截指定路径,并对路径进行重写即可 ...
背景 第三方客户往往容易存在调用失败的问题,在关键链路上如何应对这种问题。尤其是大促期间可能的调用超时,该如何处理。 例如兑换礼品,调用后超时,如果只是简单的发起重试,容易造成业务的异常。 ...
背景 数据库死锁常发生于两个事务,互相依赖对方的资源,在获取锁的时候形成互相等待。MySQL会自动检测死锁,并回滚较小的事务。 例子 在用户查询积分的时候,触发了过期。 ...
背景 项目中的cpu使用率往往不高,使用多线程可以迅速提高cpu利用率,迅速提高任务处理效率。 例子 任务中的多线程设计 使用countdownLatch,将人群进行拆分,多线程进行处理,然后主线程阻塞等待下一批任务 使用最大线程数控制,原子类,判断线程数进行多线程开启,否则sleep,不占用cpu 接口中的多线程设计 ...
背景 消息队列是现代应用系统中应用非常广泛的组件。可以利用消息队列实现流量削峰,业务解耦。 例子 流量削峰 用户入会。大促时,往往会出现大量的用户引流入会,这时候快速的处理入会请求,不影响用户的活动参与就非常重要。这时候往往将用户入会请求直接标记为成功,再交由消费服务完成完整的入会过程,可能涉及历史的积分等级处理。 ...
背景 很多系统中往往需要一个全局唯一的id,例如订单号,用户id。 现在在积分日志分库分表情况下需要唯一id。数据异构之间的同步,如果不是唯一id,可能发生冲突。 ...
背景 线上问题排查是一名合格开发的必备技能。 设计 要求 线上出现慢接口,如何定位问题 任务无法启动,频繁重启,如何定位,例如淘宝同步服务 应对 arthas 通过阿里开源诊断工具arthas可以进行处理 ...
背景 数据库作为项目核心组件,常见的问题分析和优化 例子 积分日志查询慢 数据密度大,遇到深翻页问题,采用返回id进行数据过滤,需要客户端配合调整。 进一步,采用推模型来同步积分日志。 ...
背景 不断增长的存储空间占用,需要降低存储,清理无效账号 设计 要求 按照租户进行归档,挑选近三年没有积分日志新增且用户最大更新时间为三年前的租户 归档前需要确认 使用oss存储,支持还原 实现 按照租户进行筛选 进行二次运营确认 确认归档处理,按照数据行复制到文件后进行gzip压缩 上传到oss 删除数据(注意在业务低峰期) 如果需要还原,从oss下载文件解压,并导入