微服务平台整体架构设计

微服务平台整体架构设计

概述

本文将深入介绍一个现代化的微服务平台架构设计。该平台采用微服务架构,融合了AI能力、文档处理和在线协作等核心功能。通过合理的服务拆分和技术选型,实现了高可用、可扩展的企业级应用平台。

架构概览

整体架构图

微服务平台整体架构

核心服务详解

1. 前端控制台层

前端采用微前端架构,基于腾讯无界(Wujie)框架实现:

控制台 功能 技术栈
console 主控制台入口 Umi Max + React 18
ucenter.console 用户与权限管理 Ant Design Pro
app.console 应用管理 Ant Design
rag.console 知识库管理 Ant Design X
statistic.console 数据统计与监控 Ant Design Pro
pdfviewer.console PDF文档阅读 自定义组件

2. API服务层

后端服务采用Node.js + Fastify和Python + FastAPI混合架构:

Node.js服务 (7个)

// 典型服务结构 - llm.api/app.js
import Fastify from 'fastify'
import cors from '@fastify/cors'
import autoload from '@fastify/autoload'

const app = Fastify({
  logger: { level: 'info' }
})

// CORS配置
await app.register(cors, {
  origin: true,
  credentials: true
})

// 自动加载路由和插件
await app.register(autoload, {
  dir: new URL('./routes', import.meta.url),
  dirNameRoutePrefix: false
})

Python服务 (1个)

# transform.api/main.py
from fastapi import FastAPI
from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app: FastAPI):
    # 启动时初始化
    await init_services()
    yield
    # 关闭时清理
    await cleanup()

app = FastAPI(lifespan=lifespan)

@app.get("/health")
async def health_check():
    return {"status": "healthy"}

技术栈总览

前端技术栈

技术 版本 用途
React 18.3.1 UI框架
TypeScript 5.9.3 类型系统
Umi Max 4.6.34 企业级框架
Ant Design 6.3.3 UI组件库
Ant Design X 2.5.0 AI组件库
Wujie React 1.0.24 微前端框架

后端技术栈

技术 版本 用途
Node.js ES Module 运行环境
Fastify 5.2.1 Web框架
Fastify CLI 7.3.0 开发工具
Mongoose 8.10.0 MongoDB ODM
Python 3.12 转换服务
FastAPI 0.115.12 Python框架

基础设施

组件 用途
MongoDB 主业务数据存储
Redis 缓存、会话、分布式锁
Milvus 向量数据库(RAG)
Elasticsearch 日志与全文搜索
Kafka 消息队列
MinIO 对象存储

通信协议

1. REST API

用于前端与后端的标准HTTP通信:

// routes/root.js
export default async function (fastify, opts) {
  fastify.get('/', async (request, reply) => {
    return { message: 'Hello from micro-platform!' }
  })
}

2. gRPC

用于服务间高性能通信:

// userInfo.proto
syntax = "proto3";

service UserInfoService {
  rpc GetUserInfo(UserInfoRequest) returns (UserInfoResponse);
}

message UserInfoRequest {
  string userId = 1;
}

message UserInfoResponse {
  string userId = 1;
  string username = 2;
  string email = 3;
}

3. SSE (Server-Sent Events)

用于大模型流式响应:

// llm.api中SSE实现
fastify.get('/chat/stream', async (request, reply) => {
  reply.raw.writeHead(200, {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive'
  })
  
  // 流式输出AI响应
  for await (const chunk of llmStream) {
    reply.raw.write(`data: ${JSON.stringify(chunk)}\n\n`)
  }
  
  reply.raw.end()
})

数据流架构

请求处理流程

用户请求
    ↓
Nginx (反向代理)
    ↓
APISIX (API网关)
    ↓
前端控制台 / 后端API
    ↓
业务服务 (Fastify/FastAPI)
    ↓
数据层 (MongoDB/Redis/Milvus)

异步消息流

业务服务 → Kafka → 消费者服务
              ↓
        统计分析/日志处理

安全设计

1. 认证授权

  • JWT Token认证
  • OAuth 2.0集成
  • RBAC权限控制

2. 数据安全

  • 敏感数据加密存储
  • HTTPS传输加密
  • API限流保护

3. 网络安全

  • CORS跨域配置
  • IP白名单
  • 请求签名验证

监控与运维

1. 日志系统

使用Pino实现结构化日志:

import pino from 'pino'

const logger = pino({
  level: process.env.LOG_LEVEL || 'info',
  formatters: {
    level: (label) => ({ level: label })
  }
})

2. 监控指标

  • Prometheus指标收集
  • Grafana可视化面板
  • APISIX网关监控

3. 健康检查

// 服务健康检查端点
fastify.get('/health', async () => {
  const checks = await Promise.all([
    checkDatabase(),
    checkRedis(),
    checkExternalServices()
  ])
  
  return {
    status: checks.every(c => c.healthy) ? 'healthy' : 'degraded',
    checks
  }
})

总结

微服务平台的整体架构设计充分体现了现代化、模块化和AI-Native的设计理念:

  1. 微服务拆分:按业务领域合理拆分服务,每个服务职责单一
  2. 技术多样性:Node.js和Python混合使用,发挥各自优势
  3. 通信协议灵活:REST、gRPC、SSE多种协议并存
  4. 基础设施完备:完整的数据存储、缓存、消息队列体系
  5. 可扩展性强:插件化设计、微前端架构支持快速迭代

下一篇将深入介绍AI-Native架构中大模型服务的设计与实现。

阅读更多

Skills系统:可扩展AI能力设计

Skills系统:可扩展AI能力设计

概述 Skills系统是AI-Native架构中的重要组件,它允许通过声明式配置扩展AI的能力。本文将介绍Skills系统的设计与实现,让大模型能够像人类专家一样具备特定领域的能力。 什么是Skills系统 概念 Skills(技能)是一种声明式的AI能力扩展机制,类似于人类的"专业技能": 通用AI助手 专业AI助手(带Skills) ┌──────────────────────┐ ┌──────────────────────────────┐ │ │ │ │ │ 用户:请帮我写代码 │ │ 用户:请帮我审查这段代码 │ │ │ │ │ │ AI:我是一个AI助手 │ │ AI:[激活

By 菱角
插件化架构设计模式

插件化架构设计模式

概述 插件化架构是一种将核心功能与扩展功能分离的设计模式,允许系统在运行时动态加载和卸载功能模块。本文将介绍如何在微服务平台中设计和实现插件化架构。 为什么需要插件化 插件化优势 1. 模块化:功能独立,边界清晰 2. 可扩展:按需加载,动态增删 3. 隔离性:插件间互不干扰 4. 可维护:独立开发、测试、部署 5. 可定制:用户按需选择功能 核心设计 架构概览 核心组件实现 1. 插件接口定义 // core/plugin.interface.ts // 插件接口 export interface IPlugin { // 插件名称 readonly name: string // 插件版本 readonly version: string // 插件配置 getConfig(): PluginConfig // 插件清单

By 菱角
gRPC服务通信设计与实践

gRPC服务通信设计与实践

概述 在微服务架构中,服务间通信是关键环节。相比REST API,gRPC提供了更高的性能和更强的类型安全。本文将介绍如何在微服务平台中设计和实现gRPC服务通信。 为什么选择gRPC gRPC vs REST对比 特性 gRPC REST 协议 HTTP/2 HTTP/1.1 序列化 Protocol Buffers (二进制) JSON (文本) 性能 高(二进制+压缩) 中(文本开销) 类型安全 强(代码生成) 弱(运行时检查) 流式通信 原生支持(双向流) 需额外实现(SSE/WebSocket) 代码生成 自动生成 手动编写 浏览器支持 需gRPC-Web 原生支持 调试难度

By 菱角
多语言微服务架构:Node.js与Python协作

多语言微服务架构:Node.js与Python协作

概述 在微服务架构中,根据场景选择最适合的编程语言是最佳实践。本文将介绍如何在微服务平台中实现Node.js与Python的协作,发挥各自技术优势。 技术选型策略 为什么混合使用 服务划分 Node.js服务(7个) 服务 功能 选择Node.js的原因 llm.api 大模型服务 高并发SSE流式响应 ucenter.api 用户中心 RESTful API标准实践 doc.api 文件服务 流式上传下载处理 resource.api 资源管理 gRPC高性能通信 rag.api 知识库服务 MongoDB集成便利 statistic.api 统计分析 事件驱动架构 pptonline.api PPT服务 与前端技术栈统一 Python服务(1个) 服务 功能 选择Python的原因

By 菱角