To-doApp的高并发解析

程序员八哥 2025-04-15 19:18:09
一、架构选型:不是所有App都需要分布式,但这个要 因为我们一开始就设定了这个App可能给多家公司用,比如一个设计团队、一个产品团队、一个健身机构都可以拿来当任务管理后台。那就意味着用户量不定,访问量也不定。所以一开始我就用了: • 后端:Spring Boot(业务开发快,生态成熟) • 配置中心:Nacos(动态配置 + 服务注册) • 注册中心 + 服务治理:Nacos / Eureka 二选一 • 网关层:Spring Cloud Gateway(拦截请求 + 路由 + 限流) • 分布式:Spring Cloud 微服务架构 • 负载均衡:Nginx + Ribbon(本地负载均衡)或整合 OpenFeign + Eureka 做服务间通信 二、高并发优化:ToDo不代表轻量 别小看这个「任务打卡」App,背后其实有很多高并发场景,比如: • 团队成员同时新增/修改任务 • 日历拖动更新任务时间 • 后台同时统计多个任务状态的进度 我的做法是: • 接口层限流:Spring Cloud Gateway 使用 Token Bucket 限流器,防止刷接口 • 读写分离:MySQL 主从同步,查询从库,写操作走主库(用 MyCAT 或 ShardingSphere) • 缓存穿透和雪崩预防:Redis 做多级缓存,设置合适的过期时间+空值缓存 • 异步处理耗时操作:任务创建后涉及的通知、日志入库、进度更新等全部用 RabbitMQ 做异步队列 • 数据库优化:分页查询、索引优化、预编译SQL、防止死锁 三、部署上线:多节点 + 自动伸缩 用Docker + K8s部署,单机测试OK后,直接上容器集群。我们做了: • 多节点部署:每个服务独立部署至少2个Pod,挂在Nginx负载均衡下 • 弹性伸缩:HPA根据CPU和内存自动扩Pod • 服务监控:Prometheus + Grafana 实时查看接口响应耗时、错误率等 四、团队协作支持:数据隔离 + 实时推送 既然是多团队系统,数据隔离要做对: • 每个团队对应一个tenant_id,数据库逻辑隔离 • WebSocket 实现任务状态推送,成员A改了任务,B立即看到变更

0 阅读:0
程序员八哥

程序员八哥

感谢大家的关注