
系统设计
文章平均质量分 82
针对市面上常见的系统设计问题进行分析,并给出解决方案
java干货仓库
公众号和名字一样,关注公众号每天都会推送一篇大厂面试题资讯
展开
-
如果让你实现一个RPC框架,你会考虑哪些方面?
设计一个生产级RPC框架需要权衡性能、易用性和扩展性,建议参考成熟框架(Dubbo/gRPC/Thrift)的设计理念,根据实际业务需求进行裁剪和扩展。原创 2025-04-25 14:40:45 · 835 阅读 · 0 评论 -
如何实现查找”附近的人“的功能?
选择方案时应考虑:用户规模、精度要求、实时性需求和团队技术栈。对于大多数社交应用,Redis GEO方案已经足够。将二维经纬度编码为一维字符串,前缀匹配越多的位置越近。原创 2025-04-25 14:38:11 · 307 阅读 · 0 评论 -
如何使用Redis实现排行榜?(含同分按时间排序)
Redis的ZSET(有序集合)是实现排行榜的理想数据结构,但当分数相同时,默认会按字典序排序。要实现同分按时间排序,需要特殊设计。原创 2025-04-25 14:35:30 · 358 阅读 · 0 评论 -
如何使用redis实现朋友圈点赞功能
这样可以天然支持按时间排序。原创 2025-04-25 14:30:32 · 262 阅读 · 0 评论 -
库存扣减怎么防止超卖和少卖?
库存管理是电商和零售系统的核心问题之一,超卖(卖出的数量超过实际库存)和少卖(实际有库存但未能卖出)都会带来严重问题。原创 2025-04-25 14:22:37 · 412 阅读 · 0 评论 -
Spring Boot 结合 Flink 实现风控监测
数据采集层:收集用户行为数据实时处理层:Flink 进行实时计算和分析规则管理层:Spring Boot 提供规则配置和管理告警与响应层:对风险事件进行告警和处理风控规则有哪些?// 用户行为事件@Data// 用户ID// 事件类型:登录、支付、浏览等// 事件时间戳// IP地址// 设备ID// 其他信息// 风险检测结果@Data// 触发规则ID// 规则名称// 风险等级// 风险描述// 检测时间。原创 2025-04-23 13:07:58 · 1139 阅读 · 0 评论 -
风控规则一般都有哪些?
风险控制系统的规则通常根据业务场景和风险类型进行分类。原创 2025-04-23 13:05:41 · 1171 阅读 · 0 评论 -
如果让你设计一个消息队列,你会考虑哪些方面?
设计一个消息队列(Message Queue)系统需要综合考虑和。原创 2025-04-22 22:13:12 · 973 阅读 · 0 评论 -
如何设计一个秒杀系统?
设计一个高并发、高可用的秒杀系统需要从架构设计、性能优化和异常防护三个维度综合考虑。系统采用分层架构,包括CDN静态化、API网关、秒杀服务集群、Redis集群、MQ削峰和订单服务等核心模块,确保百万级QPS的处理能力。库存管理通过预热、预扣和异步落库机制防止超卖。流量控制采用分层限流和请求合法性校验,保护系统不被恶意请求拖垮。订单创建通过异步化和分库分表策略提高性能。容灾与降级策略包括熔断、降级和数据恢复,确保系统在异常情况下的可用性。监控体系通过核心监控项和全链路压测,实时掌握系统状态。技术选型建议包括原创 2025-04-22 22:01:55 · 1049 阅读 · 0 评论 -
如何设计一个购物车功能?
中小应用:Redis + MySQL双写中大型电商:分片Redis + 异步MQ落库 + 本地缓存国际化平台:多Region Redis + 数据同步服务通过以上设计,可支持日均千万级购物车操作,保证99.95%的可用性。实际开发中需根据业务特点调整存储策略和一致性级别。原创 2025-04-21 19:04:49 · 903 阅读 · 0 评论 -
如何设计一个订单号生成服务?
设计一个高效的订单号生成服务需要满足唯一性、可扩展性、可读性和高性能等核心需求。基础设计原则包括全局唯一、趋势递增、可读性、高性能和安全性。经典方案对比中,数据库自增ID存在性能瓶颈,UUID无序且可读性差,雪花算法(Snowflake)因其有序、高性能和可扩展性被推荐,而分段缓存(Leaf-Segment)通过预分配ID段减少数据库交互。生产级方案设计中,订单号通常由业务类型、时间、机器ID、序列号和校验位组成,结合分布式实现和容灾设计,确保系统稳定。性能优化包括本地缓冲和多级缓存,业务适配案例涵盖电商订原创 2025-04-21 18:33:24 · 1024 阅读 · 0 评论 -
如果你的接口突然提升了100倍QPS,你会怎么做?
当接口QPS突然提升100倍时,系统可能面临崩溃风险。以下是分阶段的应对策略: 紧急止血(5分钟内):立即启用限流(如Guava RateLimiter或Redis+Lua),降级非核心功能(如关闭日志记录或返回缓存数据),并快速扩容(如Kubernetes紧急扩容Pod)。 系统诊断(30分钟内):使用工具(如top、jstack、slowlog)定位瓶颈,分析关键指标(如CPU使用率、数据库连接池等待、Full GC频率),并通过日志与链路追踪筛选高频请求。 性能优化(1~24小时):优化缓存(如Caf原创 2025-04-21 18:30:12 · 671 阅读 · 0 评论 -
如何防止用户重复点击?
防止用户重复点击是提升系统稳定性和数据一致性的关键需求。以下是。原创 2025-04-21 18:26:53 · 686 阅读 · 0 评论 -
订单到期关单有哪些实现方式?
订单到期关单是电商、支付等系统中的核心功能,其实现需要保证和。原创 2025-04-21 17:48:59 · 437 阅读 · 0 评论 -
设计原则有哪些?
设计原则是软件开发和系统设计中的核心指导思想,用于提高代码的可维护性、可扩展性、复用性和灵活性。:根据具体问题权衡原则(如性能 vs 可维护性),避免教条化。原创 2025-04-20 15:44:09 · 882 阅读 · 0 评论 -
百万QPS,接口需要做哪些防护?
等多个维度综合施策。通过以上措施,可保障百万QPS下的接口高可用,同时有效抵御恶意攻击。面对百万级QPS的接口请求,防护需要从。原创 2025-04-14 12:11:06 · 276 阅读 · 0 评论 -
如何设计一套高并发系统?
我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳的被系统中的服务和组件处理。从古至今,长江和黄河流域水患不断,远古时期,大禹曾拓宽河道,清除淤沙让流水更加顺畅;都江堰作为史上最成功的的治水案例之一,用引流将岷江之水分流到多个支流中,以分担水流压力;三门峡和葛洲坝通过建造水库将水引入水库先存储起来,然后再想办法把水库。......原创 2022-08-27 17:45:00 · 1407 阅读 · 0 评论 -
分布式id生成算法(雪花算法 VS 步长id生成)
【代码】分布式id生成算法(雪花算法 VS 步长id生成)原创 2025-04-10 22:13:28 · 546 阅读 · 0 评论 -
抖音热点视频识别与分片处理机制解析
抖音作为日活数亿的短视频平台,其热点视频识别和分片处理机制是支撑高并发访问的核心技术。原创 2025-04-04 11:45:13 · 790 阅读 · 0 评论 -
怎么实现数据库数据平滑迁移?
充分准备:明确目标、备份数据、选择工具。合理设计:根据业务需求选择全量迁移、增量迁移或双写方案。严格验证:确保数据一致性和业务连续性。监控优化:迁移后持续监控和优化目标数据库。通过以上步骤,可以实现数据库的平滑迁移,最大限度地减少对业务的影响。原创 2025-03-18 18:29:05 · 640 阅读 · 0 评论 -
本地消息表怎么是怎么实现分布式事务的?
本地消息表是一种简单有效的分布式事务解决方案,通过将消息的发送和业务操作放在同一个事务中,确保两者的一致性。原创 2025-03-18 18:18:30 · 442 阅读 · 0 评论 -
系统设计:10亿个key中,怎么判断某个key是否存在?
字典树(Trie树)是一种树形数据结构,用于存储字符串集合并支持高效的查询、插入和删除操作。字典树的核心思想是利用字符串的公共前缀来压缩空间并减少查询时间的开销,最大限度地减少无谓的字符串比较。它可以被认为是一种哈希树的变种或扩展,通常用于实现词频统计、字符串匹配等任务。在字典树中,每个节点代表一个字符串(即从根节点到该节点路径上的所有字符组成的字符串),根节点代表空字符串。每个节点都有若干子节点,每个子节点对应一个字符,从而形成了一棵树。从根节点到叶子节点的路径组成的字符串即为对应的单词。原创 2023-04-18 15:50:32 · 567 阅读 · 0 评论