BFF 架构与前后端协作:接口聚合、边缘加速与一致性治理技术背景BFF 通过为特定前端应用提供专属接口,将多后端服务聚合为一次请求;可在边缘或近源部署,实现鉴权、缓存与格式适配,降低耦合与端到端延迟。核心内容接口聚合与鉴权(Node/Express 示例)import express from 'express';
import fetch from 'node-fetch';
const app = express();
app.use(express.json());
app.get('/bff/home', async (req, res) => {
const auth = req.headers['authorization'] || '';
const [cfg, posts, profile] = await Promise.all([
fetch('https://api.example.com/config', { headers: { authorization: auth } }).then(r => r.json()),
fetch('https://api.example.com/posts?limit=10', { headers: { authorization: auth } }).then(r => r.json()),
fetch('https://api.example.com/me', { headers: { authorization: auth } }).then(r => r.json())
]);
res.json({ cfg, posts, profile });
});
app.listen(4000);
边缘加速与缓存(Cloudflare Workers 思路)export default {
async fetch(req) {
const url = new URL(req.url);
if (url.pathname === '/bff/home') {
const cacheKey = new Request(req.url, req);
let res = await caches.default.match(cacheKey);
if (!res) {
const auth = req.headers.get('authorization') || '';
const [cfg, posts, profile] = await Promise.all([
fetch('https://api.example.com/config', { headers: { authorization: auth } }).then(r => r.json()),
fetch('https://api.example.com/posts?limit=10', { headers: { authorization: auth } }).then(r => r.json()),
fetch('https://api.example.com/me', { headers: { authorization: auth } }).then(r => r.json())
]);
res = new Response(JSON.stringify({ cfg, posts, profile }), { headers: { 'Content-Type': 'application/json', 'Cache-Control': 'public, max-age=60, stale-while-revalidate=300' } });
await caches.default.put(cacheKey, res.clone());
}
return res;
}
return new Response('Not Found', { status: 404 });
}
};
一致性治理与版本校验// BFF 对下游接口做版本与模式校验,防止破坏契约
function ensureSchema(payload: any) {
if (!payload || typeof payload !== 'object') throw new Error('bad payload');
if (!Array.isArray(payload.posts)) throw new Error('posts required');
}
技术验证参数在真实应用(Chrome 128/Edge 130,Cloudflare 边缘)下:聚合接口响应时延:P95 260–600ms(相较多次请求下降 30–55%)缓存命中率(SWR):≥ 70%契约破坏拦截率:≥ 95%应用场景复杂页面的数据聚合与格式适配统一鉴权与速率限制边缘就近交付与缓存协同最佳实践以页面/模块为单位设计 BFF 接口缓存与版本校验结合,保障一致性与性能接口契约与告警体系联动,快速定位问题

发表评论 取消回复