一、理解什么是微服务
将大型单体后端应用拆分为多个独立、自治、松耦合的细颗粒度服务。每个服务:
-
单一职责:专注特定业务能力(如用户、订单、支付)
-
独立技术栈:可选用最适合自身需求的技术。
-
独立部署与伸缩:更新/扩展单个服务不影响全局
-
分布式通信: 服务器通过API(REST/gRPC等)协作。
-
独立数据管理:通常拥有专属数据库(允许异构)
对前端的核心影响:后端服务"碎片化",前端需要统一入口和聚合层
二、前端开发者必备的微服务知识(聚焦协作与体验)
核心接入点 - API网关
- 前端唯一入口:所有的请求发送至网关,屏蔽后端服务动态性与复杂性。
- 关键职责:路由转发、负载均衡、统一认证(JWT校验)、限流、缓存
- 前端动作:配置网关地址、理解认证机制(传递Token)
前端专属搭档 - BFF
核心价值:为特定前端渠道(Web/App/小程序)量身订制数据服务
关键职责:
聚合数据:调用多个下游微服务,组合、裁剪、转换数据为前端最需要的结构
减少请求:一个BFF接口提供页面所需完整数据
适配协议:将后端协议(gRPC等)转换为前端友好的REST/GraphQL
处理前端逻辑:实现与UI强相关的业务规则
数据聚合策略-明确边界
- BFF聚合(首选):后端负责,前端接收"开箱即用"的数据。降低前端复杂度,提升性能与一致性。
- 前端聚合:前端并行请求多个BFF/微服务接口,自行组合数据。
✅适用场景: 简单页面、数据依赖少、需最大前端灵活性。 ❌风险: 增加请求数、网络开销、前端状态管理复杂度、错误处理难度、潜在性能瓶颈。
- 前端关注:清晰了解项目采用模式,掌握Promise.all/Suspense等并发管理技术
网络特性与容错设计:
挑战 : 分布式调用必然带来更高延迟、网络波动、服务瞬时故障风险。
前端应对策略 (保障UX):
-
优雅降级: 非核心功能不可用时,保证主体流程可用。
-
智能加载态: 骨架屏、局部Loading、进度指示。
-
有限重试: 对可重试错误(如超时)进行策略性重试。
-
超时控制: 设置合理请求超时,避免用户无尽等待。
-
客户端缓存: 合理利用存储(IndexedDB/localStorage/Cache API)减少重复请求。
-
理解熔断: 友好提示"服务暂时不可用",避免雪崩。
认证与授权 (AuthN/AuthZ):
主流方案:OAuth 2.0 / OpenID Connect (OIDC) + JWT。
前端关键职责:
安全存储Token: 优先HttpOnly
Cookie (防XSS),或Secure LocalStorage配合XSS防护。
请求携带Token: 在Authorization: Bearer <token>
Header中传递。
登录/登出流程: 正确处理OAuth重定向、Token获取/刷新/销毁。
UI权限控制 (非替代后端校验!): 基于Token/Roles/Permissions信息动态展示/隐藏UI元素。
契约驱动开发 (Contract-First):
核心工具: Swagger / OpenAPI (REST), GraphQL Schema , gRPC .proto
。
前端价值:
高效协作: 前后端基于明确定义的契约并行开发,减少歧义。
自动化: 生成API客户端代码、类型定义(TypeScript)、模拟(Mock)数据、交互式文档。
强类型与安全: TypeScript结合契约提供编译时类型检查。
前端动作: 积极参与契约设计评审,熟练使用契约文档和Mock工具。
可观测性与排障协同:
关键概念: 关联ID (Correlation ID) - 贯穿前后端调用链的唯一追踪标识。
前端职责:
生成/传递Correlation ID: 在请求Header中携带(通常由网关/BFF初始化或透传)。
前端监控: 集成Sentry/LogRocket等,监控页面性能、API耗时、JS错误。
有效反馈: 用户报错时,提供操作步骤、时间戳、Correlation ID、前端错误栈。
环境与配置:
理解不同环境: Dev/Test/Staging/Prod 对应不同的网关/BFF入口地址。
前端配置: 通过环境变量/配置文件管理各环境的 API_BASE_URL
。
本地开发: 掌握代理、Mock服务、服务发现集成等本地调试方案。
总结(前端在微服务架构中的定位):
- 用户界面构建者: 专注交互与体验。
- API消费者: 通过网关 访问后端能力,主要与BFF交互获取定制数据。
- 契约践行者: 严格遵循API契约进行开发与集成。
- 用户体验守护者: 主动应对网络不确定性,设计容错与降级方案。
- 可观测性参与者: 传递关键链路标识,助力全栈问题定位。
核心价值: 理解微服务如何重塑前后端协作边界 (网关/BFF/契约),并掌握在分布式环境下保障高性能、高可用、可维护前端应用 的关键策略。无需深究后端服务治理细节,但必须精通与前端直接相关的集成点、协作模式和容错手段。