微服务框架(三十一)Docker项目发布流程

简介: 此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。本文为Docker项目发布流程本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEAS...

  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。

  本文为Docker项目发布流程

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Piplin部署

piplin的详细部署流程见微服务框架(二十一)Piplin 持续部署 Docker 容器

目前所有的算法微服务暴露两个端口,9700段为服务调用端口,22800段为服务QOS端口,
所有的服务均会通过zookeeper注册中心获取服务地址

发布流程

docker镜像标签、git标签、构建产物版本 应严格保持一致
部署环境的环境名称需与spring.profiles.active的项目配置名称保持一致

  1. 项目设置docker镜像标签image.tag(如1.0.1)
  2. git tag的标签与docker镜像标签保持一致(如1.0.1)
  3. gitlab-CI标签自动触发,打包对应版本的docker镜像并上传至docker私有仓库
  4. 由标签事件触发piplin Webhook,自动构建对应版本产物
  5. 创建构建产物版本与docker镜像标签保持一致(如1.0.1)
  6. 机柜直接发布 或 选择灰度服务器灰度发布

容器启动时可 动态选择配置文件配置线程策略、线程数等参数
(e.g. --spring.profiles.active=dev --dubbo.provider.timeout=1500)

灰度部署流程

可在piplin设置灰度服务器,并手动发布

若为REST接口,可依照每个服务至少需要两台服务器,按照目前的调用情况,维持一台权重为 100,另一台权重为 50,并实时根据调用情况做调整

管理中心

若希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。

dubbo.registry.dynamic = false

服务提供者初次注册时为禁用状态,需人工启用。断线时,将不会被自动删除,需人工禁用。

dubbo-admin后台启动禁用操作

相关文章
|
26天前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
27天前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
1天前
|
存储 消息中间件 API
“论微服务架构及其应用”写作框架,软考高级,系统架构设计师
论微服务架构及其应用近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(MicroserviceArchitecturePattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通用协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。
|
10天前
|
Cloud Native Java API
Java一分钟之-Micronaut:轻量级微服务框架
【6月更文挑战第16天】Micronaut是面向JVM的微服务框架,以其快速启动、低内存占用著称。文章探讨了配置管理、注解理解和AOT编译的挑战,提供了解决方案,并通过一个简单的HTTP服务示例展示了如何创建控制器和应用启动类。通过克服这些问题,开发者能更好地利用Micronaut构建高效微服务。
36 8
|
6天前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
|
11天前
|
存储 Linux Docker
python项目 以docker形式打包部署全流程
在很久很久以前,我已经听过Docker的大名,当时服务着急上线虽然考虑过用Docker来部署我的服务,但是因为赶期的原因放弃了。 这两天因为华为云服务器到期,而且阿里云服务器优惠力度特别大的原因,我要把华为云服务器里的工程迁移到阿里云。 迁移的过程中,大量的时间精力浪费在了重装python,加载依赖,迁移项目,配置端口等环境配置的工作上。 我在想,如果当时用了Docker部署,我至于受这气?
|
20小时前
|
应用服务中间件 nginx Docker
详细解读docker部署项目
详细解读docker部署项目
|
20小时前
|
前端开发 Java Docker
Docker 部署项目,真的太雅了~
Docker 部署项目,真的太雅了~
8 0
|
1天前
|
应用服务中间件 Linux 数据安全/隐私保护
Linux+docker部署项目
Linux+docker部署项目
11 0
|
28天前
|
前端开发 Java Docker
【分享】记一次项目迁移(docker java | docker python)
该项目是一个前端Vue3和后端Python+Java的应用,原本部署在CentOS7服务器上通过宝塔面板管理。由于服务器即将到期,计划迁移到另一台使用OpenCloudOS和1Plane的服务器。在尝试构建Docker镜像时,首先为Java应用创建Dockerfile,成功构建并运行。对于Python应用,也创建了Dockerfile,并处理了依赖包的安装。在迁移过程中遇到Java项目加载验证码失败的问题,原因是缺少字体配置。通过在宿主机安装fontconfig并将相关字体文件复制到镜像中解决了问题。最后,前端Vue应用作为静态文件运行,如果使用反代理,需要进行相应配置。
39 1