Skip to content

Latest commit

 

History

History
292 lines (203 loc) · 10.4 KB

File metadata and controls

292 lines (203 loc) · 10.4 KB

IntelliHub 企业级API开放平台 - 简历项目经历

📋 项目基本信息

项目名称:IntelliHub - 企业级API开放平台
项目周期:2024.03 - 2025.01 (10个月)
项目角色:核心开发工程师 / 后端负责人
团队规模:5人
技术栈:Spring Boot、Spring Cloud Gateway、Dubbo、Kafka、Redis、Elasticsearch、MySQL、Nacos


🎯 项目背景

随着公司业务快速发展,内部存在大量API需要对外开放给合作伙伴和第三方系统调用。传统的点对点对接方式存在以下问题:

  • 每个系统独立认证鉴权,安全标准不统一
  • 缺乏统一的流量管控和监控体系
  • API版本管理混乱,变更难以追溯
  • 多租户场景下数据隔离困难

基于以上痛点,主导设计并实现了IntelliHub企业级API开放平台,为公司构建统一的API治理体系。


💼 项目职责与成果

1. 核心架构设计与实现

职责

  • 负责整体微服务架构设计,采用Spring Cloud微服务架构,拆分为7个核心服务
  • 设计统一网关的双流量认证机制(JWT + AppKey签名)
  • 设计基于Kafka的事件驱动架构,实现服务间解耦

成果

  • 成功支撑日均500万+次API调用,峰值QPS达2000+
  • 系统可用性达到99.95%,P99延迟控制在300ms以内
  • 微服务架构使各服务可独立部署,发布效率提升60%

2. 统一网关服务开发(核心模块)

技术选型:Spring Cloud Gateway (WebFlux) + Redis + Kafka

核心功能实现

2.1 响应式网关 + 动态路由

  • 基于Spring WebFlux实现非阻塞网关,支持高并发场景
  • 设计三级路由策略:本地缓存 → Redis缓存 → Dubbo服务调用
  • 实现Redis Pub/Sub路由热更新机制,配置变更秒级生效,无需重启

性能优化成果

  • 网关吞吐量达到2000+ QPS
  • 路由匹配耗时优化至**<5ms**
  • 通过本地缓存命中率达95%,大幅降低Redis压力

2.2 多维度限流策略

  • 实现滑动窗口限流算法,基于Redis实现分布式限流
  • 支持IP维度、Path维度、IP+Path组合维度的灵活限流策略
  • 开发限流降级机制,超限请求返回友好提示而非直接报错

效果

  • 成功抵御多次突发流量,系统稳定性提升40%
  • 通过精细化限流策略,保护核心API不被异常流量击垮

2.3 异步日志上报

  • 采用响应式编程实现完全异步的日志上报,不阻塞主流程
  • 双通道上报:Kafka持久化 + Redis实时统计
  • 设计结构化日志格式,包含租户ID、API ID、耗时、状态码等关键信息

性能提升

  • 日志上报不增加接口响应时间(异步处理)
  • 支持日均1000万+条日志写入,无数据丢失

3. 多租户体系设计与实现

技术方案:MyBatis Plus租户插件 + ThreadLocal上下文

核心实现

3.1 全链路租户隔离

  • 网关层:从JWT解析租户ID,注入请求头X-Tenant-Id
  • 服务层:拦截器提取租户ID,存入UserContextHolder(ThreadLocal)
  • 数据层:MyBatis Plus租户拦截器自动添加WHERE tenant_id = ?条件

3.2 RBAC权限体系

  • 设计三级角色体系:超级管理员(跨租户)、租户管理员、普通用户
  • 基于Spring Security实现细粒度权限控制
  • 支持动态权限配置,角色权限变更无需重启

安全保障

  • 实现100%租户数据隔离,通过SQL拦截器确保无数据泄露
  • 支持50+租户并发使用,互不干扰

4. API生命周期管理

核心功能

4.1 版本管理

  • 每次API发布自动生成版本快照(JSON格式)
  • 支持任意两个版本的差异对比
  • 实现一键回滚功能,3秒内可恢复到历史版本

4.2 事件驱动架构

  • 设计API状态变更事件机制(发布、更新、下线)
  • 通过Kafka事件总线通知网关和其他订阅者
  • 实现路由配置的最终一致性

业务价值

  • API变更可追溯,版本回滚时间从30分钟降至3秒
  • 事件驱动实现服务解耦,扩展新功能无需修改核心服务

5. 治理中心 - 监控告警系统

技术方案:Kafka + Redis + Spring Scheduler

核心功能

5.1 实时统计分析

  • Kafka消费者:消费网关上报的调用日志,持久化到MySQL
  • Redis统计:按API、租户、应用维度实时统计QPS、成功率、P99延迟
  • 定时任务:Spring @Scheduled定时聚合Redis数据,生成小时/天级报表

5.2 智能告警系统

  • 设计灵活的告警规则引擎,支持错误率、延迟、QPS等多种指标
  • 实现告警抑制机制,避免告警风暴(5分钟内同一规则只触发1次)
  • 支持多种通知渠道:钉钉、邮件、Webhook

监控能力

  • 实现秒级监控数据展示
  • 平均告警响应时间**<60秒**,故障发现时间缩短80%

6. 扩展服务开发

6.1 聚合搜索服务

技术栈:Elasticsearch + IK分词器

  • 设计跨实体聚合搜索,一次搜索同时查询API、应用、用户三个索引
  • 实现高亮显示相关性排序分面统计功能
  • 开发全量同步 + 增量同步机制,保证索引数据一致性

搜索体验提升

  • 搜索响应时间**<200ms**
  • 中文分词准确率达90%+

6.2 事件中心服务

技术栈:Kafka + Spring事件监听

  • 实现统一的事件发布-订阅机制
  • 支持Webhook回调,可集成外部系统
  • 设计指数退避重试策略,最大重试10次

系统集成能力

  • 支持20+外部系统通过事件订阅方式集成
  • Webhook投递成功率达99.5%

🛠️ 技术难点与解决方案

难点1:高并发下的路由性能优化

问题:网关每次请求都需要匹配路由,路径参数匹配(如/api/user/{id})性能较差

解决方案

  1. 三级缓存策略:本地Caffeine缓存(1分钟) → Redis缓存(5分钟) → 数据库
  2. 路由预加载:服务启动时预加载全部路由到本地缓存
  3. 正则表达式优化:将路径模板编译为正则表达式缓存,避免重复编译

效果:路由匹配性能提升10倍,从50ms降至<5ms


难点2:Kafka消费延迟导致统计数据不准确

问题:高峰期Kafka消息堆积,导致统计数据延迟10+分钟

解决方案

  1. 双写策略:网关同时写入Kafka(异步持久化)和Redis(实时统计)
  2. Redis滑动窗口:基于Redis ZSET实现滑动窗口统计,保证实时性
  3. 消费者优化:增加Kafka消费者线程数,从2个增至8个,提升消费速度

效果:统计数据延迟从10分钟降至**<10秒**


难点3:Dubbo泛化调用的参数类型转换

问题:网关不依赖业务JAR包,无法获取Dubbo接口参数类型

解决方案

  1. API配置时存储参数类型元数据(如java.lang.Stringcom.example.UserDTO
  2. 网关动态构造GenericService调用,根据元数据进行类型转换
  3. 对于复杂对象,通过JSON反序列化为Map<String, Object>传递

效果:实现零依赖的Dubbo服务调用,网关部署包大小减少80%


难点4:多租户场景下的数据安全

问题:如何确保租户数据100%隔离,防止越权访问

解决方案

  1. MyBatis拦截器强制注入:所有SELECT/UPDATE/DELETE自动添加tenant_id条件
  2. 白名单机制:系统表(如配置表)排除租户拦截
  3. 单元测试覆盖:编写测试用例验证租户隔离的有效性

安全保障

  • 上线至今0次租户数据泄露事故
  • 通过渗透测试验证,无越权漏洞

📈 项目成果与价值

业务价值

  • 降低对接成本:合作伙伴对接周期从2周缩短至2天,效率提升7倍
  • 提升安全性:统一认证鉴权,安全事件下降90%
  • 支撑业务增长:支持100+个API对外开放,服务50+家合作伙伴

技术价值

  • 高性能:单网关节点支持2000+ QPS,P99延迟**<300ms**
  • 高可用:系统可用性达99.95%,故障平均恢复时间**<5分钟**
  • 易扩展:微服务架构支持水平扩展,新增功能无需修改核心服务

个人成长

  • 深入理解微服务架构设计与实践
  • 掌握Spring Cloud Gateway响应式编程
  • 积累高并发系统性能优化经验
  • 提升复杂业务系统架构设计能力

🎓 技术栈总结

分类 技术栈
框架 Spring Boot 2.7、Spring Cloud Gateway、Spring Security
RPC Dubbo 3.x(泛化调用)
消息队列 Kafka 2.x
缓存 Redis 6.0+(限流、统计、缓存)
数据库 MySQL 8.0、MyBatis Plus(多租户插件)
搜索引擎 Elasticsearch 7.x + IK分词器
服务治理 Nacos 2.x(注册中心 + 配置中心)
监控 Prometheus + Grafana(预留)
前端 Vue3 + TypeScript + Element Plus

💡 可量化的项目亮点

性能指标

  • 日均API调用量:500万+次
  • 峰值QPS:2000+
  • P99延迟:<300ms
  • 系统可用性:99.95%

业务指标

  • 支持API数量:100+个
  • 服务租户数量:50+个
  • 对接周期缩短:2周 → 2天
  • 安全事件下降:90%

技术优化

  • 路由匹配性能提升:10倍
  • 统计延迟降低:10分钟 → <10秒
  • 发布效率提升:60%
  • 故障发现时间缩短:80%

📝 简历精简版(200字)

IntelliHub 企业级API开放平台 | 核心开发工程师 | 2024.03-2025.01

主导设计并实现企业级API开放平台,基于Spring Cloud微服务架构,支持日均500万+次API调用。核心贡献:

  1. 统一网关:基于WebFlux实现响应式网关,峰值QPS达2000+,P99延迟<300ms;设计三级缓存路由策略,匹配耗时优化至<5ms
  2. 多租户体系:实现全链路租户隔离,MyBatis Plus拦截器确保100%数据安全,支持50+租户并发使用
  3. 监控告警:基于Kafka+Redis实现秒级监控,平均告警响应时间<60秒,故障发现时间缩短80%
  4. 技术优化:解决Kafka消费延迟、Dubbo泛化调用等技术难点,系统可用性达99.95%

技术栈:Spring Cloud Gateway、Dubbo、Kafka、Redis、Elasticsearch、Nacos