架构设计:服务自动化部署和管理流程

本文源码:GitHub·点这里 || GitEE·点这里

一、分布式服务

从常规分布式架构系统来说,划分出十来个独立的微服务模块是很常见的,然后不同的开发人员分工几个服务块,负责日常开发和维护,微服务之间会出现版本差异也是自然的。例如用户服务需要开发版本为7.0,其他服务可能高于这个版本或者低于这个版本,所以对服务发布这块做持续集成就很有必要。

现在比较通用的服务自动发布和管理的技术栈:Jenkins持续集成工具、Docker容器、K8S容器管理。

二、Jenkins集成

Jenkins可以很方便的整合常用的代码仓库,例如:GitHub、SVN等,提供持续集成能力,可以把整个代码构建打包,部署做成自动管理流程,代码一经提交就会自动发布到指定环境下,极大减少非必要的工作量。

架构设计:服务自动化部署和管理流程插图

  • 开发人员提交本地代码;
  • 代码仓库通过Hook机制通知Jenkins;
  • Jenkins获取最新代码编译打包;
  • 生成Docker镜像文件上传到中心仓库;
  • 最终触发滚动或者灰度等发布机制;

在整个代码发布过程如果出现问题,可以快速的回滚到上个版本,需要手动处理的流程极少,作为程序员这个职业,越是工作时间长,越要善用自动化的流程。系统架构越复杂,则服务部署、数据和环境隔离、容灾、灰度、动态扩容就更是需要自动管理,上述技术体系可以很轻松的解决这些问题。

三、Docker容器

Docker是作为开源的应用容器引擎,有三个核心概念,Image-镜像,Container-容器、Repository-仓库;开发人员可以通过打包应用和依赖包到一个可移植的容器中,容器是完全使用沙箱机制,相互之间不会有任何接口,然后发布到任何流行的服务器上,也可以实现虚拟化。

上述微服务模块变多,需要持续集成工具管理;同理当Docker容器变多和复杂,管理和调度也是一个问题。

四、K8S容器管理

Kubernetes简称K8S,用做灵活和便捷管理和调度Docker容器,提供应用部署、规划、更新、维护的一种机制,让部署容器化的应用简单并且高效,支持自动化部署、大规模可伸缩、应用容器化管理。

架构设计:服务自动化部署和管理流程插图(1)

在上面的部署环境架构下,Docker可以理解为Kubernetes上的一个组件,通过K8S去统一管理。

这样一套服务发布和环境管理的技术体系现在非常常用,从开发的角度看,熟悉基本使用流程最好,原理逻辑不负责,但是实际操作复杂,通常由专业的运维管理,能说清楚环境的搭建思路也是面试中常见的问题。

五、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-cloud-base
GitEE地址:知了一笑
https://gitee.com/cicadasmile/spring-cloud-base

推荐阅读:编程体系整理

序号 项目名称 GitHub地址 GitEE地址 推荐指数
01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里
02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里
03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里
04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里
05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里
06 SpringBoot框架整合开发常用中间件 GitHub·点这里 GitEE·点这里
07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里

原创文章,作者:迷途资源,如若转载,请注明出处:https://www.mipng.com/469.html

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

发表评论

邮箱地址不会被公开。 必填项已用*标注