访问量 次
访客数 人
ID
或日期)来分片数据,确保数据均匀分布,避免热点问题。Redis
数据结构(如 string
、hash
、list
、set
)。对于高并发接口,如果使用 hash
结构,要小心固定的 key
可能导致性能问题。
可以考虑使用 string
结构,并尽量压缩 value
,例如将 {"groupId":"536363737", "groupId":"989898989"}
改为 "536363737#989898989"
,这样能节省 Redis
的存储空间。
如果需要检查数据是否存在,数据量很大时,可以用 set
结构,这样查询速度会更快,利用 sismember
方法很有效。Redis
的内存可能会被占满。delete
命令:尽量避免用 delete
命令删除缓存,这可能会阻塞 Redis
,特别是当数据量很大时。使用 expire
命令设置数据过期时间,这样就能避免直接删除数据。10KB
以下)的热点数据,可以使用本地缓存(如 Caffeine
或 Guava
)。这样可以减少对 Redis
的压力,特别是对于频繁访问的数据。Job
逻辑设计是幂等的,即作业执行多次结果一致,避免重复处理带来的问题。cron
表达式,避免随意设置。如果本次作业执行时间较长,下一次作业可能会错过。xxjob
、saturn
等分布式调度框架的分片处理能力,进行并行处理,以提高处理速度。QPS
支持情况。根据测试报告,及时调整线上配置和优化代码。QPS
,决定是否需要扩容、限流、兜底逻辑或熔断。info
级别的日志,高并发接口要设置日志开关,避免因日志记录影响性能。MQ
),避免多线程异步。设计时使用无锁机制以防止线程锁导致 CPU
使用过高,并考虑批量写入数据库。key
)、安全性(如接口签名、第三方防刷服务判断是否为黑产用户)。Apache
和 Google
的开源框架,避免使用小众的开源框架,以免引入潜在的 bug 和性能瓶颈。O(1)
。例如,调用第三方接口时,尽量将循环调用优化为批量调用,以将时间复杂度从 O(n)
降至 O(1)
。80%
)、接口健康度(如 5 分钟内 error
超过 100
次、接口响应时间超过 1s
的次数超过 100
次、不可用次数超过 1000
次)。CPU
使用率、内存使用情况、GC
活动、繁忙线程数和数据库连接池的连接数,设置相关告警。Redis
的可用性,跟踪 CPU
使用、内存使用、流量、大 key
、热 key
和慢查询情况。对 Kafka
进行可用性监控,监控消息积压情况和消息丢失率,并设置告警。MySQL
的 CPU
使用情况和慢 SQL
查询,并设置相关告警。