缓存架构以及消息系统设计

我要开发同款
hellobbr 2024年10月10日
51阅读
所属分类作品

作品详情

软件架构:Kafka + Redis + Mysql + Consul
 项目背景:面对日益增加的并发量,迫切需要优化现有的 MixIOT 整体架构,采用缓存+ 拆分
服务来提供系统的负载和高可用。
 项目介绍:通过缓存设备状态 FV 信息,分离业务处理模块来提高系统的负载。缓存架构采用一
主多从实现读写分离和高可用,使用 AOF + RDB 做冷热备份,使用哨兵集群监控节点状态和故
障转移,使用 Consul 作为微服务注册/发现,健康检查,使用 Kakfa 分布式分片集群保证系统
高可用和高性能:
 主要职责:
1. 负责拼图服务/事件,故障,告警核心服务的开发和系统搭建;
2. 负责消息中心微服务功能边界的划分和模块开发;
3. 负责实现自研分布式一致性架构保证高性能和高可靠。
 技术挑战或问题:
1. Kafka 发送消息保证消息的可靠性,幂等性,以及参数优化;
(1) 描述:使用 Kafka 发送消息的时候,可能发生小心丢失,消息重复消费等问题
(2) 措施:从三个角度来保证消息不丢失
1 发送时通过事务消息来保证消息一定发送到 Kafka,异常则回滚
2 Kakfa 使用一主双从保证高可用
3 消费时只有执行完全部业务才会提交 offset,异常则稍后重试
4 在消费端通过 Redis+状态机保证消息幂等性
2. 缓存冷备份恢复缓存穿透、redis 启动时瞬间缓存雪崩问题;
(1) 描述:在 UAT 压测时,刚开始 Redis 数据为空,瞬间大量请求穿过 Redis 打倒 MYSQL
导致崩溃,在模拟 Redis 集群崩溃时,使用 RDB 冷备进行快速恢复、发现 RDB 文件中
的数据没有加载到 Redis 中。
(2) 措施:首先只启动 Redis,将热数据通过 RDB 恢复到 Redis 中,保证应用在使用 Redis
前,Redis 中已经有部分热数据,避免发生缓存穿透,恢复时严格按照以下过程:
1 关闭 AOF,通过 RDB 文件启动
2 动态修改配置开启 AOF,这样可以保证开启 RDB 和 AOF 的同时,保证数据安全的
加载到 Redis 中
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论