加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

发布时间:2019-08-22 13:37:14 所属栏目:Windows 来源:老詹啊
导读:副标题#e# 本文介绍了如何利用开源软件快速搭建一套微服务的持续交付系统。本文假设的环境是Linux操作系统,用到的软件包括Git、Jenkins、Salt、ZooKeeper、Apache等。开始之前,我先简单介绍下持续交付和微服务的概念,以便大家更好的理解本文的精华。 什

如图4所示,开发人员check in 代码到Git仓库后,Jenkins会自动地进行构建工作,并把打好的包上传到Repo server上。

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图5 配置文件示例

作为统一方法的一部分,我们在每个微服务仓库上创建了CI目录,用于配置文件的打包,在CI目录里,只放入需要参数化的配置文件,执行脚本等,并会严格遵循原有系统的目录结构,如图5所示,我们要求有start.sh、stop.sh及service(用于Linux的init启停该微服务)。

图5中配置文件参数化内容,参数部分用”{{“与”}}”包围起来,在持续部署的时候会根据传入的参数替换为特定的值。

我们还定义了持续构建的统一输出,对每个微服务采用tgz的打包格式,微服务ms1持续构建的输出文件示例如下:

  • ms1-1.0.7.tgz (可执行包)
  • ms1_config-1.0.7.tgz(配置文件包)

在可执行包里面要求把所有的依赖库(除了系统lib库)都包含在里面,对不同编程语言的微服务的构建工具没有强制要求,统一由Jenkins调用。C/C++我们推荐使用CMake,Java一般用Maven,Python直接打包。

配置文件包就是前面GIT仓库的CI目录直接打包而成。

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图6 Bundle示例

同时为了在部署时不用具体指定每个微服务的版本号,我们引入了bundle的概念,如图6。在任何一个微服务构建之后,会触发bundle,sha512校验文件生成,并上传到Repo Server。

最后让我们看下持续交付上传到Repo Server的目录结构:

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图7 目录结构

这样持续构建的工作就完成了,接下来就需要进行持续部署了。

快速搭建微服务的持续交付:持续部署

在开始持续部署的讨论之前,我们先描述一下软件运行注入配置的三个时点:

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图8 配置注入的三个时间点打包时点,典型的是Java的war包,会把配置文件打包在一起。部署时点,在部署的时候利用专门的部署工具更新配置文件,这也是我们采用的方法;运行时点,程序运行时通过环境变量或注册中心/配置中心获得配置信息,如用Docker部署微服务时就要考虑通过这种方法来获得所需要的配置信息。

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图9 采用salt进行部署

图9显示了我们对不同的环境统一采用salt进行部署。由于我们支持用户只输入bundle的版本信息来实现部署,这就要求在持续部署的时候,部署系统能自动获取每个微服务的版本号,为此我们对salt/foreman做了一点小改动,修改后返回的pillar格式包含各个微服务的版本,同时下载并解压对应的配置文件包到salt master的相应目录,以及关闭salt master file_list缓存:fileserver_list_cache_time: 0。

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

图10 foreman web界面以及Salt格式

图10左边表示我们在foreman web界面上设置的参数,右边表示通过salt pillar.items取得的格式,可以看到多了每个微服务的版本号信息。

下面我们按照部署三部曲(安装、配置注入、服务运行)来介绍部署规则文件(saltstate、sls文件)的编写:

1、betacat_ms1.sls 第一部分:安装

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

在这一部分,检查并创建安装目录,下载需要的可执行包,并解压到正确的位置,可执行包直接从Repo Server获取,并通过sha512验证文件的完整性。

2、betacat_ms1.sls 第二部分:配置注入

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

配置注入部分,读取配置文件包,通过salt master转换后下发给目标机。这里用红框标出了设计的核心。通过salt的file.recurse和之前持续部署中打好的配置程序包,并把所有的配置项传入。可以做到不用对多个配置文件单独编写部署逻辑,完全参数化。

3、betacat_ms1.sls 第三部分:服务运行

从0开始搭建一个微服务的持续交付系统,教你如何快速搭建

在这一部分,确保微服务在运行状态,并在必要的时候重启。这里需要特别指出的一点,在整个sls文件中,对不同的微服务来说,只有3个元参数:项目名称(BeatCat)、微服务名称(ms1)以及sig(ms1, 微服务进程的唯一识别字符串)。那么我们可以通过简单的脚本来自动生成sls文件,而不需要手工编写。大大降低持续部署的开发维护成本。

快速搭建微服务的持续交付:全自动化

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读