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]。
- 服务注册:Dubbo 服务提供者(Provider)启动后,向 ZooKeeper 注册中心注册自身服务信息^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
- 服务发现与消费:Dubbo 服务消费者(Consumer)从 ZooKeeper 订阅服务列表,获取 Provider 地址并发起 RPC 调用^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
- 外部访问:外部用户请求通过 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]:
- Pull:Jenkins 从 Git 仓库(Gitee/GitLab)拉取指定版本的源代码^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。
- Build:使用 Maven 对项目进行编译构建(
mvn clean package),生成 JAR 包^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。 - Package:将构建生成的 JAR 文件移动到指定目录(通常为
project_dir),并准备好 Dockerfile^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。 - Image:根据 Dockerfile 构建 Docker 镜像,将其打上版本标签(如
git_ver_add_tag),并推送至 Harbor 私有仓库^[400-devops__06-Kubernetes__k8s-paas__05.K8S结合CI&CD持续交付和集中管理配置.md]。 - 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