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

云原生微服务架构搭建与部署全流程及样例

一、什么是云原生微服务架构

云原生(Cloud Native)强调的是“原生地面向云平台”的设计理念,而微服务架构(Microservices Architecture)则是将应用系统拆解成一组小而自治的服务。

它们结合在一起,形成了一种高内聚、低耦合、弹性强、自动化程度高的现代架构模式。

核心特征

  • 容器化(Docker):让服务像快递包裹一样,随时装箱发货。
  • 服务拆分:每个服务有明确职责,互不干扰。
  • 自动编排(Kubernetes):像指挥交通一样自动安排服务运行。
  • 弹性伸缩:按需扩展或缩容,节省资源。
  • 服务治理(Service Mesh):让通信更安全、可控。
  • CI/CD 自动化:代码一提交,自动上线。
  • 可观测性:全链路日志、指标、追踪一应俱全。

二、构建微服务系统

我们以一个“在线商城”项目为例,逐步构建一套完整的云原生微服务架构。


第一步:服务拆分

原始系统

传统商城系统可能就是一个庞大单体:用户 + 商品 + 订单 + 评价 全部在一个项目中。

拆分方案:

服务功能技术栈
user-service用户注册、登录、权限Spring Boot + MySQL
product-service商品上架、分类、库存Spring Boot + MongoDB
order-service下单、支付、状态管理Spring Boot + PostgreSQL
review-service评论、打分Flask + Redis
recommendation-service商品推荐Python + TensorFlow

第二步:服务容器化

product-service 为例:

Dockerfile:

FROM openjdk:17-jdk
COPY target/product-service.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建镜像

docker build -t myrepo/product-service:1.0 .
docker push myrepo/product-service:1.0

第三步:部署到 Kubernetes 集群

Deployment 示例(order-service):

apiVersion: apps/v1
kind: Deployment
metadata:name: order-deployment
spec:replicas: 2selector:matchLabels:app: ordertemplate:metadata:labels:app: orderspec:containers:- name: orderimage: myrepo/order-service:1.0ports:- containerPort: 8080

Service 配置:

apiVersion: v1
kind: Service
metadata:name: order-svc
spec:selector:app: orderports:- port: 80targetPort: 8080type: ClusterIP

第四步:引入服务网格治理

引入 Istio,配置灰度发布、熔断、限流等功能。

示例应用场景

  • 90% 流量进入 order-service v1,10% 流量进入 v2(灰度升级测试)
  • 每秒最多允许某个用户访问推荐服务 10 次,超出后限流

VirtualService 示例

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: order-virtualservice
spec:hosts:- order-svchttp:- route:- destination:host: order-svcsubset: v1weight: 90- destination:host: order-svcsubset: v2weight: 10

第五步:配置弹性伸缩

使用 HPA(Horizontal Pod Autoscaler)基于 CPU 使用率自动扩容:

应用场景

  • 评论系统在晚间流量激增时自动扩容至 8 副本,凌晨后回落至 2 副本,保障响应时延
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: review-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: review-deploymentminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 60

第六步:构建 CI/CD 自动流水线

使用 GitLab-CI:

stages:- build- deploybuild:stage: buildscript:- ./gradlew build- docker build -t myrepo/product-service:$CI_COMMIT_TAG .- docker push myrepo/product-service:$CI_COMMIT_TAGdeploy:stage: deployscript:- kubectl apply -f k8s/product-deploy.yaml

应用场景

  • 开发者只需合并代码,CI 自动测试并构建镜像,CD 立即将其部署到 K8s 环境。

第七步:接入可观测性系统

监控

  • 使用 Prometheus 抓取各服务指标(CPU、内存、请求速率)
  • Grafana 展示服务实时数据、QPS 曲线、错误率、API 响应时间等

日志采集

  • Fluentd + Elasticsearch + Kibana(ELK)采集日志,支持全文检索
  • Loki + Grafana Logs 提供轻量化日志方案,可交叉分析问题请求链路

实战场景

  • 用户支付失败 → 通过 Loki 查询订单号日志 → 查找支付服务超时 → Grafana 中发现 CPU 暴涨 → 触发自动扩容 → 问题解决!

总结

步骤工具目的
服务拆分DDD、微服务降耦合、可独立部署
容器化Docker环境一致、部署灵活
编排Kubernetes自动部署与管理
服务网格Istio流量治理、安全通信
弹性伸缩HPA/KEDA动态资源调配
CI/CDGitLab CI、Jenkins持续集成持续部署
可观测性Prometheus、Grafana、Loki监控、告警、追踪

附图

在这里插入图片描述

http://www.lqws.cn/news/582157.html

相关文章:

  • Spring Cloud Bus 和 Spring Cloud Stream
  • C语言main函数的原理:程序入口的奥秘
  • SpringCloud微服务 Eureka服务注册与发现
  • 从DeepMimic到带物理约束的MaskMimic——人形机器人全身运控的通用控制器:自此打通人类-动画-人形的训练路径
  • week1
  • WPF学习笔记(14)列表视图控件ListView与数据模板
  • demo01:基于 SpringMVC 的用户管理系统
  • Linux习题
  • 设计模式-观察者模式(发布订阅模式)
  • Redis 安装使用教程
  • RWKV-8 系列之 DeepEmbedAttention:精简 KV 缓存,尤其适合混合模型(RWKV-7s)
  • 使用pyflink进行kafka实时数据消费
  • 在 Vue3 + Element Plus 中实现 el-table 拖拽排序功能
  • mysql 小版本升级实战分享
  • 基于librdkafka开发的C++客户端,生产者生产发送数据失败问题处理
  • 百度文心大模型4.5系列正式开源,开源会给百度带来什么?
  • 网络安全2023—新安全新发展
  • MySQL (四):连接查询和索引
  • macos 安装 xcode
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 基于C#的OPCServer应用开发,引用WtOPCSvr.dll
  • python | numpy小记(五):理解 NumPy 中的 `np.arccos`:反余弦函数
  • 卡片跳转到应用页面(router事件)
  • 一文详解Modbus协议原理、技术细节及软件辅助调试
  • 华为云Flexus+DeepSeek征文|​​华为云ModelArts Studio大模型 + WPS:AI智能PPT生成解决方案​
  • 基于时间策略+应用过滤的游戏防沉迷方案:技术实现与工具推荐
  • 本地服务器部署后外网怎么访问不了?内网地址映射互联网上无法连接问题的排查
  • 【Pandas】pandas DataFrame Flags
  • AR 学习:开启未来学习新视界​
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生