海西 · 云交付 DevOps实践落地方案

图片 1

   在此以前Web GIS开发应用的ArcGIS API用起来很系统,可是利用开源Web GIS
API已经成主流方向(你懂的~),近日项目想要从ArcGIS API 转到openlayers
API,用起来不是那么的百步穿杨。举个例子:ArcGIS
API可以通过Map.getLayer(layerid)方法依照图层的id得到想要的图层,相比较便于也有利后期图层管理,绘图也足以一时添加、删除图层来抓牢内部效用,而不是将Verctor绘图图层存款和储蓄为全局变量。

壹、背景概述

   以ol.layer.Vector为例,打开http://openlayers.org/en/latest/apidoc/ol.layer.Base.html:

(一)产品背景

1.找到ol.layer.Vector

1.互联网+的需要

图片 2

  在音信更是繁杂的网络时期,集团所运维的品种进一步多,项目相关服务应有尽有,服务时期存在复杂的依靠关系,运行与治本职责越来越繁重,手工业交付须求花费很多的人工与时光,且安全性和时效性均不能够担保。对于多能源型分布/分离式布署项目,Udeployer应运而生。

  能够看来ol.layer.Vector是从ol.layer.Layer继承,继而打开ol.layer.Layer,同样的步骤ol.layer.Layer是从ol.layer.Base继承。

二.乘胜公司对版本上线品质和进程的渴求越来越高,敏捷开发、Devops的接受度更加高

2.打开ol-debug.js文件,搜索“ol.layer.Base”:

 古板的付出情势因为品种里面贫乏依赖、环境不等同、版本不等同、人为操作失误等情景使得项目交由进度中难题连连,而互联网公司进步节奏快、版本揭橥频率高,上线出故障影响面广、影响度高,由此集团对于急迅开发、持续集成、自动宣布都有引人侧指标须求。

 1 ol.layer.Base = function (options) {
 2
 3         ol.Object.call(this);
 4
 5         /**
 6          * @type {Object.<string, *>}
 7          */
 8         var properties = ol.obj.assign({}, options);
 9         properties[ol.layer.Property.OPACITY] =
10             options.opacity !== undefined ? options.opacity : 1;
11         properties[ol.layer.Property.VISIBLE] =
12             options.visible !== undefined ? options.visible : true;
13         properties[ol.layer.Property.Z_INDEX] =
14             options.zIndex !== undefined ? options.zIndex : 0;
15         properties[ol.layer.Property.MAX_RESOLUTION] =
16             options.maxResolution !== undefined ? options.maxResolution : Infinity;
17         properties[ol.layer.Property.MIN_RESOLUTION] =
18             options.minResolution !== undefined ? options.minResolution : 0;
19         properties[ol.layer.Property.ID] =
20             options.id !== undefined ? options.id : "";
21         this.setProperties(properties);
22
23         /**
24          * @type {ol.LayerState}
25          * @private
26          */
27         this.state_ = /** @type {ol.LayerState} */ ({
28             layer: /** @type {ol.layer.Layer} */ (this),
29             managed: true
30         });
31
32     };

(2)产品概念

能够见见图层的底蕴属性全体在 ol.layer.Property变量中

图片 3

ol.layer.Property = {
        OPACITY: 'opacity',
        VISIBLE: 'visible',
        EXTENT: 'extent',
        Z_INDEX: 'zIndex',
        MAX_RESOLUTION: 'maxResolution',
        MIN_RESOLUTION: 'minResolution',
        SOURCE: 'source',
        ID: "id"
    };

Udeployer是一套完整的穿梭交付生态系统,在提交进度的每一种步骤都以可视化、自动化的,能够带来回顾作用在内的显明的裨益,同时也改革了软件的总体品质。Udeployer集合了SVN、Jenkins、swarm、docker、registry等工具,在跨网段、跨内外网等地点能够健全包容。Udeployer提供项目布置主旨,抽象公共配置,项目安顿灵活装配。在全部版本交付生命周期推荐应用Udeployer,能够把人工的干预最小化、节省各环节等待时间,使得交付的流程更清晰化,一旦把人的过问去掉,质量就愈加可预测,会变得越来越好。

叁.Property变量中添加ID:”id”,图层基类中添加图层的ID属性,同时在 ol.layer.Base方法中充裕:

(3)产品目的  

properties[ol.layer.Property.ID] =
 options.id !== undefined ? ptions.id : "";

图片 4

四.图层中添加图层:

  1. 壹. 营造环境正视和使用依赖,迅速完结多点布局并贯彻横向布局;
  2. 2. 落到实处从代码变更到代码营造,镜像创设和平运动用铺排的全流程自动化;
  3. 3. 保持项目交付进度中环境的壹致性与连贯性,让交付的不仅仅是代码,还有基于不可变架构的运作环境;
  4. 4. 穿梭反馈,随时随时四处创设、随时各处获取回馈消息,让每便集成或提交,都会第暂且间将结果实时反馈;
  5. 伍. 回落人工操作,幸免支付与测试在人工操作上的失误。
  6. 2、产品介绍
var map = this.getMap();
    var source = new ol.source.Vector();

    var vector = new ol.layer.Vector({
        id: "draw-layer",
        source: source
    });

    map.addLayer(vector);

(一)产品理念

5.查看图层属性

图片 5

  打开开发者形式(F1贰),在 map.addLayer(vector);这一行添加断点

(二)系统拓扑图

图片 6

图片 7

 测试发现,全体从ol.layer.Base继承的图层都存在id那特性格。继而搜索ol.Map,添加你想要的章程,例如那边小编也许须求添加验证Map是不是含有有些图层和取得图层的艺术

(三)系统工作构架描述

/**
     * Gets a given layer of this map by layerid.
     * {@link ol.Collection}.
     * @param {ol.layer.Base} layer Layer.
     * @api
     */
    ol.Map.prototype.getLayer = function (layerID) {

    };

    /**
     * check if Map contains a Layer by LayerID
     * @param string layerID
     * */
    ol.Map.prototype.contains = function (layerID) {
        var layers = this.getLayerGroup().getLayers();
    };

图片 8

 

(肆)系统功效介绍

系统作用首要分为四个层面:源码交付层、版本公布层、容器管理层。

(一)源码交付层

一.一 源码交付层完毕对版本的治本。

将SVN版本号与作业版本号顺序对应,通过SVN版本号记录业务版本号,包蕴新本子的创设、多版本的衍变进度、多版本逻辑的相对独立、多版本的炫耀关系等。

图片 9

一.2 源码交付层通过统一主干、创制分支、版本归档、版本回滚效率实现对源码路径的管住,保险差异版本源码的一致性。

图片 10

(2)版本交付层

本子交付层通过品种管理、职务管理、工作流管理职能实现持续集成、自动布署、壹键公布。

    项目管理重点达成版本交付所须求的预备数据的创始与治本,包含项目列表、应用列表、数据库列表、计划模板、邮件模板、配置模板等基础数据的创办;

    任务管理主要性是完毕任务的创造与管理,包涵自动化陈设、Jenkins创设、重启应用、关闭应用、自动触发邮件发送、分发命令、日志查询、SQl脚本实施等任务;

    工作流管理重点达成对任务工作流程的装配与管理。用户依据实际境况须求,通过自定义工作流模板,将义务单个或频仍装配到流程中,定义成模板,达成壹键或批量实践多个职务。

(三)容器交付层

容器交付层首要通过对集群、节点、容器、镜像仓库的开创与治本,提供全流程标准化的主机管理、应用不停集成、镜像营造、安插管理、容器运转、主机及容器监察和控制服务,完毕国有和个体集群的容器化管理,确定保证不一样条件的容器1致性,统一差异环境的重视性关系。

Swarm集群重假设落实集群的开创与管理。用来治本docker集群,可开始展览节点挂载;

节点首假若贯彻节点的创建与管理,包罗节点挂载集群、添加容器;

容器首即使兑现对容器的创造与管理,包罗精选镜像、挂载节点等;

镜像仓库是汇集存放镜像文件的场子,包涵国有的与私家的,提供对镜像文件的询问。

(伍)产品方案标准

出品方案差异的规则介绍,大概对产品方案技术规格的牵线。

(一)产品第三品级

将成品作用分为五个部分:服务组件、小编的劳务。

劳务组件首要负责实施服务职能的功底数据的准备干活,完毕项目列表、应用列表、数据库列表、陈设模板、邮件模板的创立与治本。

自己的服务是作用实施模块,包涵SVN源码交付、SQL脚本实施、应用布置、分发器、日志查询。SVN源码交付包含合并主干、创造分支、版本归档、版本回滚、版本宣布操作记录功效,完成一站式全生命周期的管理,同时让抱有记录都有迹可循,便于跟踪记录。

(二)产品第二品级

完成配置中央,将安排文件统壹集中管理。对于集团用户而言,把分裂环境的配备,写到同三个配备文件中,是无比不安全的,是一个丰富危险的动作。为消除那1安全隐患,交付系统应用集中式的布局管理种类,将区别环境的安排严谨差距地存放。将配置文件根据项目区分为公家配置文件、项目配置文件。公共配置文件可保留为模板,多次循环使用,化解了多次创造的烦扰。通过文件目的路径维度将集体配置文件与类型安排文件实行存放保管。通过路径快速稳定到现实的文件,更具时效性、可操作性、安全性。

(三)产品第3等级

乘势企务的四处发展壮大,连串进一步多,要求运行的工程也尤为多。怎么样高效、安全、稳定的交付功效,投入到生育中式商店必须化解的三个标题。交付系统经过工作流的法子,用户能够将各种工程所须求实践的天职装配成工作流,保存为模板,完毕一键执行及批量履行。协助同一职务的两样环节装配、数十次装配、不一致条件、多情况的工作流成立。那样不仅缩短了浪费,升高费用和交给进程的成效,还足以使软件随时处于生产就绪状态,以便能够每一天达成安排。   
                                                                       
                                                                       
                                                                   

三、应用场景

(一)应用情势

(1)单分支开发形式

规定基线、拉分支、合主干、项目揭发、版本归档、持续交付

图片 11

(二)多分支开发方式

规定基线、拉(本性)分支、同步/回滚/合主干、项目揭发、版本归档、持续交付

图片 12

(三)一站式服务格局

图片 13

(4)分布式服务格局

图片 14

(贰)应用流程

多分支开发格局

一.一 明确基线

SVN-Trunk:工程德姆o – 特性开发 – 稳定版本

1.2 拉分支

分段来源于稳定为主,用于新效用的落到实处。稳定大旨均需符合以下标准:

(一)   版本已透露生产条件;

(二)   版本 完毕版本归档。

1.三 合并主干

由提测分支合并,用于功用测试、测试环境、预公布环境、生产环境的运作。

统一主干需具备放手条件:提测邮件。提测邮件需持有以下3/5分:

项目名称、版本号、分支路径、脚本路径、安插手册、功用边界

(一) 直接统一主干

  提测版本号倒数一位-一与当前主干版本号一致。

(二)先同步该中央,再统1主干

 二.1 提测版本号最后一位-一与方今主干版本号分化,且其余分支有归档记录;

 2.二 找到近来二遍归档的版本号,同步归档的本子号,再统壹主干。

(叁)先回滚上一版本,再统一主干

 三.1 提测版本号倒数一位-壹与当下主干版本号不等同,其余分支无归档记录,提测版本号倒数一位-一在历史版本中设有;

 三.二 需找到主干版本号最后一位-一的中心,先回滚到上1本子,再统1主干。

(四)先回滚分支对应主干,再统一主干

 四.一 提测版本号最后一位-壹与最近主干版本号分歧,别的分支无归档记录,提测版本号最后一位-1在历史版本中不存在;

4.二需找到相应的拉分支时主干,先回滚到对应主干,再统1主干。

一.肆 项目揭发

(一)持续集成

Jenkins是将代码举办联合的编译打包、还足以放置tomcat容器中进行公布。通过安排,将在此以前:编写翻译、打包、上传、计划到Tomcat中的进程交由Jenkins,Jenkins通过给定的代码地址U奥德赛L,将代码拉取到其“宿主服务器”(正是Jenkins的装置地方),实行编写翻译、打包和揭破到容器中。在Jenkins的宿主服务器中务须求有能够拓展:代码clone(Git)、代码编写翻译(Maven)、代码运营(汤姆cat)的中坚条件。

(二)持续计划

Udeployer集合了Jenkins、swarm、docker等工具,在跨网段、跨内外网等方面能够灵活安插。在全体版本交付生命周期(包蕴安顿在内)推荐使用Udeployer,能够把人工的干涉最小化、节省各环节等待时间,使得交付的流水生产线更清晰化。1旦把人的干预去掉,品质就尤其可预测,会变得更加好。

4、产品特性介绍

(一)产品性状

l  一站式源码生命周期管理

l  一站式版本生命周期管理

l  1站式容器生命周期管理

(二)应用天性

l  完毕线上运营方式;

l  开发    运行   开发的闭环;

l  完毕从源码到劳动的全体闭环;

l  飞快迭代,运行前置嵌入;

l  统一的条件,灰度公布,神速试错/回滚;

l  完结版本追溯并且不断反馈;

(叁)系统性子

l 底层服务由Python开发并对外暴光接口,达成对SVN、Jenkins、docker等极端服务调用;

l Web端由Java开发,已毕封装Python接口渲染到浏览器并贯彻权力管理;

l  Java、Python基于docker容器开发计划,易扩张,易迁移,达成打包就走。

伍、技术达成

(1)相关技能

l API接口开发规范

l Jenkins底层接口调用

l SVN多分支并行方案

l Docker、swarm容器技术

l WebSocket音讯实时互动。

6、运转实施

 

Post Author: admin

发表评论

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