第一题:接口的性能优化
一、接口层优化(Controller/HTTP)
- 请求体优化:使用轻量化序列化方案,如 Jackson Afterburner、Fastjson2,减少序列化/反序列化开销。
- 压缩传输:启用 GZIP ,减少响应体体积。
- HTTP 协议优化:
- 使用 HTTP/2 提高并发性能。
- 开启 Keep-Alive 保持连接复用。
- 字段精简:只返回必要字段,避免大对象传输。
- 接口幂等性:使用幂等令牌或唯一业务标识,避免重复操作。
- 缓存响应:
- 对 GET 接口启用 CDN 或网关缓存(如 Nginx、API Gateway)。
- 配置 HTTP 缓存头部:
Cache-Control,ETag,Last-Modified。
二、服务层优化(Service/业务逻辑)
- 本地缓存:使用 Caffeine 减少热点数据访问延迟。
- 分布式缓存:Redis,结合缓存穿透/击穿/雪崩防护。
- 异步处理:
CompletableFuture、@Async解耦非核心逻辑(如日志、通知)。- 注意线程池配置:核心线程数、队列长度、拒绝策略。
- 幂等控制与重复提交防护:数据库唯一约束 + Redis 锁控制。
三、数据访问层优化(DAO/数据库)
- SQL 优化:
- 使用预编译语句,避免 SQL 注入。
- 避免
SELECT *,只查需要字段。 - 分页查询:使用
LIMIT,OFFSET或ID 游标分页。
- 批量处理:
- JDBC 批处理插入/更新。
- Hibernate/JPA 批量操作。
- 索引优化:
- 合理建索引,避免过多索引。
- 分析执行计划(EXPLAIN)定位慢查询。
- 连接池调优:
- 使用 HikariCP / Druid。
- 配置最大连接数、空闲时间、检测周期等。
四、架构层优化
- 接口拆分与聚合:
- 拆分大接口,降低单个接口复杂度。
- 设计聚合接口减少客户端多次调用。
- 请求合并与去重:
- 类似多次查询合并为批处理(如 GraphQL)。
- 负载均衡:
- 应用层(Ribbon)、网关层(Nginx)、服务网格(Istio)。
- 限流与熔断:
- 使用 Sentinel、Resilience4j 实现限流/熔断/降级。
- 服务异地多活:提升整体可用性。
五、安全性与稳定性保障(加分项)
- 接口鉴权与权限校验:OAuth2、JWT、API Key。
- 接口频率限制:IP、用户维度限流,防止刷接口。
- 回放/重放攻击防护:签名机制 + 时间戳 + 随机数。
- 接口容灾设计:Fallback 机制、预埋静态数据、超时熔断。
3052

被折叠的 条评论
为什么被折叠?



