Skip to content

Dubbo微服务交付架构

Dubbo微服务交付架构是指将基于阿里巴巴开源的 Dubbo 高性能 RPC 框架开发的微服务应用,通过持续集成/持续部署(CI/CD)流程交付到 Kubernetes PaaS 平台的完整体系^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。该架构实现了从代码提交、编译构建、镜像打包到容器编排部署的自动化闭环。

核心组件

该交付架构主要包含以下基础设施和工具:

  • ZooKeeper (ZK):作为 Dubbo 服务的注册中心,负责管理服务的注册与发现^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Git/GitLab/Gitee:代码仓库,用于存储微服务源代码^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Jenkins:CI/CD 服务器,负责拉取代码、编译打包(Maven 构建)以及制作 Docker 镜像^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Harbor:私有 Docker 镜像仓库,用于存储构建好的应用镜像^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Kubernetes Cluster:容器编排平台,运行无状态的 Dubbo 微服务(Provider 和 Consumer)^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Dubbo Monitor:简单的监控管理中心,用于图形化展示注册到 ZooKeeper 的服务状态^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • Ingress:Kubernetes 集群入口,负责将外部流量路由到集群内部的 Dubbo 消费者服务^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

架构设计与交互流程

架构设计遵循无状态服务和有状态服务分离的原则。ZooKeeper 作为有状态服务部署在 Kubernetes 集群外部,而 Dubbo 微服务作为无状态应用部署在集群内部^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

  1. 服务注册:Dubbo 服务提供者(Provider)启动后,向 ZooKeeper 注册中心注册自身服务信息^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  2. 服务发现与消费:Dubbo 服务消费者(Consumer)从 ZooKeeper 订阅服务列表,获取 Provider 地址并发起 RPC 调用^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  3. 外部访问:外部用户请求通过 Ingress 进入集群,转发给 Dubbo Consumer(如 Web 服务),Consumer 再通过 RPC 协议调用 Provider 获取业务数据^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

持续交付流水线

应用代码的打包与交付主要依赖 Jenkins 流水线完成,其标准流程如下^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]:

  1. Pull:Jenkins 从 Git 仓库(Gitee/GitLab)拉取指定版本的源代码^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  2. Build:使用 Maven 对项目进行编译构建(mvn clean package),生成 JAR 包^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  3. Package:将构建生成的 JAR 文件移动到指定目录(通常为 project_dir),并准备好 Dockerfile^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  4. Image:根据 Dockerfile 构建 Docker 镜像,将其打上版本标签(如 git_ver_add_tag),并推送至 Harbor 私有仓库^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  5. Deploy:通过 Kubernetes 资源配置清单(Deployment YAML),从 Harbor 拉取镜像并在集群内创建或更新 Pod^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

运维与弹性伸缩

基于 Kubernetes 的编排能力,该架构支持快速的扩缩容和故障恢复^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

  • 水平扩容:通过修改 Deployment 的副本数(Replicas),可以轻松应对秒杀等高并发场景;流量降低后即可缩容以节省资源^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • 版本迭代:当代码更新时,只需重新运行 Jenkins 流水线构建新镜像,然后更新 YAML 文件中的镜像版本并应用,即可实现滚动更新^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
  • 自愈能力:当集群节点发生故障时,Kubernetes 的调度器会自动将 Pod 重新调度到其他健康的节点上,保证服务的高可用性^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。

Sources

  • 400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md