下载工作台
PaaS 组件实战

组件选型矩阵与全栈联调

试读上半部分 · 解锁后可读全文

第 8 章 · 组件选型矩阵与全栈联调

本章汇总 何时选哪个组件,并给出可验收的 全栈联调剧本(含连接串与环境变量一览)。


8.1 按问题选型(决策表)

我要解决…首选组件商店 id备选
订单/账户落库MySQLmysqlmariadbpostgresql
复杂查询/JSONB/GISPostgreSQLpostgresql
商品详情文档结构多变MongoDBmongodb
登录 Session / 热点缓存Redisredisvalkeymemcached
纯页面片段缓存MemcachedmemcachedRedis
异步发邮件/削峰RabbitMQrabbitmq
Java 事务/顺序消息RocketMQrocketmqKafka
日志流/埋点管道Kafkakafka
微服务注册与配置Nacosnacosetcd
对外 HTTP 入口NginxnginxIngress 插件
商品搜索/日志检索Elasticsearchelasticsearchopensearch
图片附件对象存储MinIOminioseaweedfs
指标监控大屏Prometheus + Grafanaprometheus + grafana集群插件一体包
CI 流水线Jenkinsjenkinsgitlab-ce
Git 仓库GiteagiteaGitLab
本地大模型Ollamaollama
LLM 网页对话Open WebUIopen-webui
分布式链路追踪Jaegerjaeger
日志聚合Grafana LokilokiElasticsearch
内网镜像仓Docker Registrydocker-registryartifactory-oss
K8s IngressIngress-Nginx集群插件 ingress-nginxtraefik
API 网关限流APISIXapisixNginx
Java 配置中心ApolloapolloNacos
流量治理Sentinelsentinel-dashboard
OLAP 分析ClickHouseclickhouse
MQTT 物联网EMQXemqx
统一登录 SSOKeycloakkeycloak
Node.js APINestJS 集成第 17 章
Go 微服务Gin 集成第 17 章

8.2 连接串速查(集群内,Namespace 示例)

假设:数据层 data,中间件 middleware,应用 app,AI ai

组件连接串 / Endpoint
MySQLmysql://app:pass@mysql.data.svc.cluster.local:3306/appdb
PostgreSQLpostgresql://app:pass@postgres.data.svc.cluster.local:5432/appdb
MongoDBmongodb://admin:pass@mongodb.data.svc.cluster.local:27017/appdb?authSource=admin
Redisredis://:pass@redis.data.svc.cluster.local:6379/0
RabbitMQamqp://app:pass@rabbitmq.middleware.svc.cluster.local:5672/
RocketMQrocketmq-namesrv.middleware.svc.cluster.local:9876
Kafkakafka.middleware.svc.cluster.local:9092
Nacosnacos.middleware.svc.cluster.local:8848
Elasticsearchhttp://elasticsearch.middleware.svc.cluster.local:9200
MinIO S3http://minio.data.svc.cluster.local:9000
Prometheushttp://prometheus:9090
Ollama OpenAIhttp://ollama.ai.svc.cluster.local:11434/v1

应用在 同一 Namespace 时可简写主机名,如 mysql:3306


8.3 全栈联调剧本 A:电商最小闭环

目标:浏览器访问 Nginx → API → MySQL + Redis;可观测。

步骤组件Namespace关键配置
0Longhorn集群插件 + 资源池 配盘
1MySQLdata第 2 章 MYSQL_* env
2Redisdata第 3 章 requirepass
3APIapp自定义镜像;env 见下表
4Nginxapp反代 api:8080,NodePort 80
5Prometheus+Grafanamonitor第 6 章或集群插件

API Deployment 环境变量示例

env:
  - name: DATABASE_URL
    value: "mysql://app:pass@mysql.data.svc.cluster.local:3306/appdb"
  - name: REDIS_URL
    value: "redis://:RedisPass@redis.data.svc.cluster.local:6379/0"
  - name: HTTP_PORT
    value: "8080"

验收

#检查项命令/操作
1MySQLmysql -h mysql.data -u app -p -e "SELECT 1"
2Redisredis-cli -h redis.data -a pass ping
3APIcurl http://api.app.svc.cluster.local:8080/health
4外网浏览器 http://<节点IP>:<nginx NodePort>/api/health
5Grafana面板 uphttp_requests_total 有数据
6备份管理 → 备份恢复 导出 dataapp Namespace

8.4 全栈联调剧本 B:微服务 + 消息 + 配置

在剧本 A 上增加:

组件作用集成语法
Nacos注册与配置spring.cloud.nacos.discovery.server-addr=nacos.middleware:8848
RabbitMQ下单异步@RabbitListener(queues="order.created")
RocketMQ订单事务消息rocketmq.name-server=rocketmq-namesrv:9876
Kafka行为埋点spring.kafka.bootstrap-servers=kafka.middleware:9092

Worker 服务(第二个 Deployment)仅消费 RabbitMQ,环境变量:

AMQP_URL=amqp://app:pass@rabbitmq.middleware:5672/

验收:API 发消息 → Worker 日志管理 有消费记录 → RabbitMQ UI 队列 Ready 下降。


8.5 全栈联调剧本 C:搜索 + 对象存储 + AI

组件场景关键点
Elasticsearch商品搜索PUT /products 索引 + match 查询
MinIO商品图uploads Bucket,API 用 boto3
Ollama智能客服API 调 /v1/chat/completions
Open WebUI运营调试提示词OLLAMA_BASE_URL 指 Ollama

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。