当前位置: 首页 > news >正文

使用开源免费的组件构建一套分布式微服务技术选型推荐

整体架构图概览

一个典型的现代微服务架构通常包含以下层次:

  1. 基础设施层 (Infrastructure Layer): Kubernetes 本身及其生态。

  2. 通信层 (Communication Layer): 服务间通信、服务发现、API 网关。

  3. 数据层 (Data Layer): 各种类型的数据库和存储,以满足不同需求。

  4. 应用/服务层 (Application/Service Layer): 业务微服务本身。

  5. 可观测性层 (Observability Layer): 监控、日志、追踪。

  6. CI/CD 与 GitOps 层: 自动化部署和交付。

  7. OLAP 专项处理层: 专门为分析查询构建的数据管道。


1. 基础设施与编排层 (Infrastructure & Orchestration)

这是所有一切的基石。

  • Kubernetes (K8s): 事实标准的容器编排系统。它是整个平台的“操作系统”。

  • 容器运行时 (Container Runtime):

    • containerd: 行业标准的容器运行时,Kubernetes 的默认选择。高性能、稳定。

    • CRI-O: 轻量级的替代方案,专为 K8s 设计。

  • 操作系统: 通常选择针对容器和云优化过的 Linux 发行版。

    • Ubuntu Server LTS: 用户基数大,社区支持好。

    • Flatcar Container Linux: 不可变基础设施的优秀选择,非常安全。

    • Rocky Linux / AlmaLinux: Red Hat Enterprise Linux 的免费替代品,企业级稳定性。

  • docker


2. 通信层 (Communication)

负责服务的内外网络通信、流量治理和安全。

  • 服务网格 (Service Mesh): 处理服务间通信、安全性(mTLS)、可观测性和 resiliency(熔断、重试等)。

    • Istio: 功能最全最强大的服务网格,但复杂度也最高。

    • Linkerd: 以轻量级、高性能和简单易用著称。“Just works”的哲学。

  • API 网关 (API Gateway): 作为系统的入口,处理南北向流量,负责路由、认证、限流、日志等。

    • Ingress-Nginx: 基于 Nginx 的 K8s Ingress 控制器,是事实上的标准,功能强大。

    • Apache APISIX: 高性能、动态、实时的 API 网关和微服务网关。

    • Kong: 基于 Nginx 和 OpenResty,生态丰富,商业化成熟。


3. 数据层 (Data Layer)

根据 OLTP 和 OLAP 的不同需求,选择不同的数据库。

  • OLTP 数据库 (关系型): 处理事务性操作,保证 ACID。

    • PostgreSQL首选推荐。功能极其丰富(支持 JSONB,GIS 扩展等),性能强劲,社区活跃。是大多数场景下的最佳选择。

    • MySQL / MariaDB: 另一个经典的关系数据库选择,生态成熟。

    • TIDB

  • OLTP 数据库 (NoSQL):

    • 键值存储 (Key-Value)Redis (内存数据库,用作缓存、会话存储、消息队列)、etcd (K8s 和很多系统用于存储元数据)。

    • 文档存储 (Document)MongoDB (灵活的 schema,适合非结构化数据),注意其开源协议。

    • 列式存储 (Wide-Column)Apache Cassandra (可扩展性极强,写密集型场景)。

  • OLAP 数据库 / 数据仓库: 处理复杂的分析查询,通常基于列式存储。

    • Apache Druid: 专为实时 OLAP 查询设计,支持高并发低延迟查询,非常适合事件流和点击流分析。

    • ClickHouse: 极致的单表查询性能,擅长大规模数据的聚合计算。

    • StarRocks / Apache Doris: 新一代的MPP数据库,兼容MySQL协议,对多表join和实时分析支持很好。

    • Trino (原 PrestoSQL): 不是一个数据库,而是一个分布式 SQL 查询引擎。它可以联合查询各种数据源(HDFS, MySQL, PostgreSQL, Kafka, Redis 等),是“联邦查询”的理想选择。


4. 应用/服务层 (Application/Service Layer)

这是你编写业务代码的地方。

  • 开发框架:

    • Java: Spring Boot + Spring Cloud Kubernetes。Spring Cloud Kubernetes 允许你的微服务直接通过 K8s 的 API (Endpoints, ConfigMap) 进行服务发现和配置管理,可以避免引入 Eureka 等额外组件,更“云原生”。

    • GoGo MicroKratos (Bilibili开源) 或更轻量的 Gin + 自行组装。

    • PythonFastAPI (高性能,自动生成 API 文档)、Django。

    • Node.jsNestJS (架构清晰,TypeScript 支持好)、Express。

  • 配置管理:

    • 外部化配置: 使用 Kubernetes ConfigMaps 和 Secrets

    • 动态配置Apache ZooKeeperetcd,或者更上层的 Nacos (阿里开源,兼具服务发现和配置中心功能)、Apollo (携程开源)。


5. 可观测性层 (Observability)

监控系统的“眼睛”和“耳朵”。

  • 指标 (Metrics):

    • Prometheus: 事实标准的监控系统,采用 pull 模型,与 K8s 集成天衣无缝。

    • VictoriaMetrics: 作为 Prometheus 的长期存储替代方案,性能更高。

  • 日志 (Logging):

    • 采集Fluentd 或 Fluent Bit (更轻量) 作为日志采集 DaemonSet 部署在每个节点上。

    • 传输与缓冲Apache Kafka

    • 存储与查询Elasticsearch + Kibana (ELK 栈),或者 Grafana Loki (日志索引更轻量,与 Prometheus 和 Grafana 集成更好)。

  • 追踪 (Tracing):

    • Jaeger (CNCF 毕业项目) 或 Zipkin (更早出现),用于分布式链路追踪,帮助定位性能瓶颈。

  • 可视化仪表盘:

    • Grafana: 绝对的首选,可以将 Prometheus、Loki、Jaeger 等数据源整合在一个面板中进行可视化。


6. CI/CD 与 GitOps 层

实现自动化部署和运维。

  • CI/CD 流水线:

    • Jenkins: 老牌且功能强大的自动化服务器,插件生态丰富。

    • GitLab CI/CD: 与 GitLab 代码仓库无缝集成,开箱即用。

    • Tekton: 云原生的 CI/CD 框架,专为 K8s 设计,一切资源都是 K8s 原生对象。

  • GitOps (持续交付):

    • Argo CD: 声明式的、基于 Git 的 K8s 持续交付工具。强烈推荐,它自动同步 Git 仓库中声明的状态与集群中的实际状态。

    • Flux CD: 另一个流行的 GitOps 操作器,CNCF 孵化项目。

  • 镜像仓库:

    • Harbor: 企业级的容器镜像仓库,支持安全扫描、镜像复制等功能。


7. OLAP 专项处理层 (数据管道)

这是连接 OLTP 和 OLAP 系统的桥梁,用于构建数据仓库。

  • 消息队列/流处理平台:

    • Apache Kafka绝对的核心。用于解耦微服务,并作为实时数据管道,将 OLTP 数据库的变更事件(通过 CDC)实时传输到 OLAP 系统。

  • 变更数据捕获 (CDC):

    • Debezium: 开源 CDC 工具,将数据库(PostgreSQL, MySQL 等)的行级变更转换为事件流并发送到 Kafka。这是实现实时数据同步的关键。

  • 流处理/ETL:

    • Apache Flink: 强大的流处理引擎,可以进行复杂的实时数据转换、聚合和 enrich。

    • Apache Spark: 批处理和流处理(Spark Streaming)的统一引擎,生态庞大。

  • 数据湖格式与表格式 (可选,用于构建更开放的数据湖架构):

    • Apache Iceberg / Apache Hudi / Delta Lake: 这些“表格式”将数据以开放的格式(Parquet, ORC)存储在对象存储(如 S3)上,同时提供类似数据库表的 ACID 事务、版本控制等功能,让 Spark/Flink/Trino 等引擎可以高效查询。

总结与典型工作流

一个典型的从 OLTP 到 OLAP 的数据流如下:

  1. 事务发生: 用户请求通过 API 网关 (Kong/APISIX) 进入,由 微服务 (Spring Boot) 处理,数据写入 OLTP 数据库 (PostgreSQL)

  2. 变更捕获Debezium 监控 PostgreSQL 的 WAL 日志,将数据变更作为事件实时推送到 Apache Kafka

  3. 流处理Apache Flink 消费 Kafka 中的数据,进行清洗、转换、聚合后,写入 OLAP 数据库 (ClickHouse/Druid) 或数据湖表 (Iceberg)

  4. 分析查询: 数据分析师通过 Trino 或直接连接 ClickHouse,执行复杂的 Ad-hoc 查询,结果在 Grafana 上展示。

  5. 全程可观测: 整个过程中,Prometheus 收集指标,Fluent Bit 收集日志,Jaeger 收集追踪,所有数据最终在 Grafana 上集中展示。

  6. 自动化运维: 开发人员提交代码到 Git,触发 GitLab CI 流水线构建镜像并推送到 HarborArgo CD 检测到镜像仓库变更,自动将新版本应用部署到 Kubernetes 集群中。

http://www.dtcms.com/a/389532.html

相关文章:

  • 需求质量检测Prompt之是否涉及异常场景
  • QT按钮和容器
  • Kafka4.0 可观测性最佳实践
  • 深入解析 Spring AI 系列:解析函数调用
  • ​​[硬件电路-245]:电气制图软件有哪些
  • 不会索赔500万的苹果,翻车如期到来,不过已没啥影响了
  • 第十一章:AI进阶之--模块的概念与使用(一)
  • 【IoTDB】01 - IoTDB的基本使用
  • 【C++】模版语法基础:认识模版(初识篇)
  • 继承测试用例回归策略
  • 卡普空《怪物猎人》系列策略转变:PC平台成重要增长点
  • UML 顺序图 | 概念 / 组成 / 作用 / 绘制
  • 安装SSL证书后如何测试和验证其是否正确配置?
  • A股大盘数据-20250918分析
  • 容器环境变量管理在云服务器多环境部署中的配置方法
  • 算法练习-排序-选择排序
  • 岭回归(Ridge Regression)在机器学习中的应用
  • python高级编程面试题
  • 模拟ic工程师如何提升自己?
  • springboot flowable 工作流入门与实战
  • 飞算Java的在线考试系统的设计与实现——学生开发者的课程实践记录
  • Vue3 基础语法详解:从入门到实践
  • 大白话聊明白:同步刷盘、异步刷盘以及RocketMQ和RabbitMQ的刷盘策略
  • I0流学习
  • 摄影灯MCU方案开发,摄影灯单片机分析
  • Salesforce知识点: LWC 组件通信全解析
  • Lua语言程序设计3:闭包、模式匹配、日期和时间
  • Freertos系列教学(删除函数的使用)
  • DevOps平台建设 - 总体设计文档的核心架构与关键技术实践
  • 系统中间件与云虚拟化-云数据库与数据库访问中间件ORM框架-Sannic-非实验