一、传统第三方服务器治理
开发
2023年02月 - 2023年10月
1. 重构改进原有鉴权服务器设备治理功能,开发服务器治理公共框架,应用于鉴权服务器、数据面网关转接鉴权
服务器、传统DHCP服务器、计费服务器等多种第三方服务器的管理功能。
2. 该框架所应用的服务器无心跳探测机制,在此前提下实现基于Redis,通过Lua脚本存储并计算一段时间内的成
功率,实时判断第三方服务器状态的功能。基于哈希表、双向循环队列和Redis的订阅发布机制实现链路集状态
管理、APN-VPN链路隔离、主备/Robin等选路功能。
3. 利用基于Redis开发的分布式锁和Cron定时任务实现链路的探测恢复功能。
4. 参考TCP的拥塞控制算法,结合链路的状态,改进出接口智能流量控制功能,可以在服务开工的不同时期、服
务器的不同状态下,动态调整链路出口流量的阈值,快速探测第三方服务器的处理能力峰值并及时对信令风暴
做出反应,保护第三方服务器。
5. 加入服务治理手段,基于Redis+Lua脚本开发限流器,对入口流量进行限流,并根据拥塞程度决定降级或者熔
断等措施,以保护服务节点本身。熔断状态下,节点将业务消息写入基于Cron+MySQL开发的分布式调度器,
并将本节点置为不可用,由可用节点消费调度业务消息。出口处失败的业务消息,通过GO的Ticker机制进行短
时间异步重试,多次失败后写入失败消息表,由异步扫描Goroutine进行长周期的重试。
6. 接入Prometheus和Grafana,上报链路业务打点,定义告警计算规则,根据各节点的业务状态上报链路级的
告警,可以实时观测到APN+VPN+第三方服务器IP粒度的告警,并发送告警信息到通讯软件和邮箱,及时判
断系统异常状态。
7. 基于用户身份标识和一致性哈希策略进行负载均衡,保证单用户的消息被同一节点处理,在此基础上开发单节点冲突检测功能,接收到重复业务消息时根据配置决策优雅停止前任务或丢弃新消息,接收到高优先级消息时优雅停止低优先级任务处理并释放相关资源。
8. 设计手动恢复链路机制,能够在无业务状态且各恢复机制都异常失效的极端情况下手动恢复异常链路状态。
二、用户数据表优化和业务无损迁移优化项目
开发
2022年03月 - 2022年09月
1. 改造用户数据表。将用户表结构分段,将主键+副Key存储在Part0表中并为各副Key建立索引,将非Key字段定
长化消除变长数据,然后分区序列化、合并主键存储到各Part的表中。写入数据TPS经优化后约提高1%左右。
2. 将用户数据写入过程中原有的指标计算、数据分析等中间件处理流程分离出来,利用Canal组件监听数据库变
更并发送到Kafka,将数据中间件放到数据节点,对Kafka进行消费和异步指标计算,并发送到数据分析平台进
一步分析和归档。
3. 在数据表改造基础上,改进查询方法,提高查询QPS约20%。利用Go的SyncPool,池化存储反序列化后的表
对象,表数据提交后Goroutine异步清空表对象数据并入池,降低大对象的内存分配和垃圾回收的开销。
4. 改进用户缓存,对在运营商处签约更高优先级的用户,增大缓存过期时间并提供过期时间可配机制,调整了部
分业务过程中缓存失效的处理策略,尽可能保证业务成功,极大提高了高优先级用户和紧急呼叫用户的缓存命
中率,优化了用户体验。
5. 优化业务迁移机制,开发“无损”迁移机制。基于业务的一致性哈希Token、Token路由、Token迁移等机制,
设计主备节点Token迁移流程。为数据库的GORM操作接口开发迁移ConnPool和数据校验器,在不同的迁移
阶段,向主备节点的数据库操作接口注入不同的ConnPool实现并切换数据校验器,实现备点数据导入、主备
双写、增量校验、全量校验等功能。并在数据库迁移的不同阶段,设计Token的路由切换策略和备点转发策
略,在双写的起始阶段,将原节点上失败一次的数据转发到备点进行处理,降低业务失败率。改进后,可靠性
测试中业务迁移的业务损失率由1.7%降到0.05%左右。
6. 无损迁移实现后,将用户表改造成为Token粒度的表,单Token下的用户使用一张表,不同Token之间分表隔
离,进一步降低了表读写压力和迁移时长。
三、分布式随机用户追踪功能
开发
2022年11月 - 2023年06月
开发分布式随机用户跟踪功能,用于对用户在分布式系统中的业务消息进行全链路的追踪,包含模块间的消息
头中携带追踪信息的编解码及适配、RPC调用过程的追踪信息的传递适配、跟踪触发条件的业务适配、跟踪触
发后的仲裁功能、仲裁过程中用户消息的缓存功能、跟踪消息的上报功能、跟