1、自研开源组件
开发背景:数据库路由的需求源自于业务体量的不断增加,导致原有的技术设计和实现无法应对当前的业务规模和体量。因此,必须进行分库分表设计。在应用程序的设计阶段或因业务增长而需要分库分表时,都
需要考虑采用何种组件和方式来进行分库分表。常见的选择可能包括像ShardingSphere、MyCat等这样的组件。然而,如果在程序设计的早期阶段没有这样的组件,或者没有一个适合当前业务需求的组件,就需要自行实现一个路由组件。
技术架构:AOP、AbstractRoutingDataSource、MyBatis Plugin StatementHandler、扰动函数、哈希散列、ThreadLocal
2、内部短链接平台
项目描述:短链接系统,为公司内部提供了一个高效、安全和可靠的短链接管理平台。用于各系统的链接缩短,该平台不仅简化了长链接的管理和分享过程,还提供了深入的分析和跟踪功能,市场部门可以灵活地管理和优化其链接,从而实现更好的营销效果和业务成果。
主要工作:
1.通过布隆过滤器完成判断短链接是否已存在,性能远胜分布式锁搭配查询数据库方案。
2.使用 RocketMQ 消息队列“削峰”特点,完成海量访问短链接场景下的监控信息存储功能。
3.封装缓存不存在读取功能,通过双重判定锁优化更新或失效场景下大量查询数据库问题。
4.通过更新数据库删除缓存策略,保障短链接缓存与数据库之间的数据一致性功能。
5.通过 Redis 完成消息队列消费业务下的幂等场景,保障消息在一定时间内消费且仅消费一次。
6.使用读写锁和 RocketMQ 延迟队列功能,完成短链接在海量访问场景下的数据修改功能。
7.为了兼容短链接后管用户分页查看短链接功能,在短链接数据分片的基础上增加路由表完成跳转功能。
8.通过 Sentinel 接口访问 QPS 限流保障短链接系统稳定运行,触发限流规则后进行降级处理。