- 文献综述
(一)国内外研究现状
现在B/S开发模式因其开发的项目更新速度快和无须用户安装的优点,逐渐成为应用开发时的主流开发模式。但是它的缺点也十分明显,例如难以处理复杂的业务,网站比较庞大或者流量较大时网站响应速度较慢,并且服务端压力较大。
docker是基于Go语言的应用容器引擎,可以实现将应用和依赖环境一起打包到一个轻量级、可移植的容器中,然后发布到任何装有容舉虚拟化环境的机器上,实现应用的快捷部署、管理以及迁移等功能,从而避免传统软件安装环境配置复杂、不易移植等问题。此外容器完全使用沙箱机制,容器与容器相互之间不会有任何接口,可以独立运行,安全性强并且容器性能开销极低,可以实现秒启动。
web系统是指可以提供web服务的系统,用户可以通过各种终端使用HTTP等传输协议来与web服务端进行数据通信。随着互联网的发展,大中型网站日渐增多,如淘宝、京东等电商网站,微博等社交网站以及近年来兴起的直播、短视频平台等。随着用户越来越多并发流量越来越大,web系统架构也不断发生着变化,从最初的单机一体式MVC架构,远程过程调用RPC架构,面向服务的SOA架构以及演变成目前主流的微服务架构。通过容器集群资源的并行资源调度研究,能够提升容器集群的调度效率,提升web 容器服务集群的可用性以及提高主机的资源利用率,从而为web系统提供更好的性能和稳定性保障。
前后端项目分成两个单独的项目,每个项目都部署在单独的服务器上,这会大大提高页面的响应速度。前后端分离有利于大型项目做集群,多台服务器共同承担访问流量,不易造成程序崩溃。从服务器运行压力角度来看来看,对于其后端而言,后端程序中只有后端代码,服务器只需要运行后端代码,给前端页面提供接口和数据,这极大地降低了服务器运行的压力,提升了页面响应的速度。传统的开发模式中前后端代码耦合在一起,造成了代码的可读性以及可扩展性不高。从项目维护和扩展的角度上说,网站流量的增加和项目架构的不断的演进,项目势必要进行升级扩展和结构优化。从开发的角度来看,传统开发模式中开发人员在开发过程中,不仅要将前段和后端融合在一起,会造成开发周期较长,增加了项目开发的成本。不过,前后端分离模式的出现较好地解决了这个问题。
(二)研究主要成果
Docker包括三个基本概念:①镜像(Image)。Docker镜像是一个特殊的文件系统,可以理解为一个模板,它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像构建时,会逐层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。②容器(Container)。容器就是使用镜像来启动常见的应用或者系统,在当前系统上安装所需的容器即可,而不用去创建新的系统。镜像(Image)和容器(Container)的关系,就像是信息技术教师熟悉的面向对象程序设计中的“类”和“实例”一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。③仓库(Repository)。仓库是存放镜像的地方,包括公开仓库和私有仓库两种形式。一个Docker仓库中也可以包含多个仓库,每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。
研究容器化web系统高并发性能影响因素以及系统架构演变过程。深入了解容器化web系统架构,明确面对高并发流量时web系统的性能瓶颈以及需要解决的问题,为容器化web系统设计提供指导和借鉴;研究docker容器原理,docker容器利用命名空间、控制组、联合文件系统虚拟化操作系统资源,研究目前容器集群技术对于高并发web系统的支持以及局限与不足之处;研究docker容器集群资源调度问题。容器化技术避免web服务与硬件设施的直接耦合,同时也带来容器与硬件服务器集群资源的调度分配问题,设计基于蚁群算法与goroutine pool的并行调度模型,提升系统容器分发调度效率,容器服务的可用性以及主机集群的系统资源利用率与均衡率等。
目前Web项目所需要应付的场景和以往有着很大的不同,以往的时候我们将代码、数据库放在同一个服务器中,所有的压力都由一个服务器承担,这样很容易使得服务器崩溃,为解决这类问题,现在许多系统都是用集群或者分布式模式,将一个项目部署到多个服务器或者分为多个子项目分别部署。当用户发送请求时,走完一个请求的全部流程可能需要经过多个服务器,还存在着请求跨域的问题,如果项目前后端耦合度较高,那么必然使得系统复杂性上升。前后端分离是指将前端和后端从之前的相互融合中分离开来,两者不再共用一个Server,前端作为一个独立Server存在。这种情况下使得一部分业务逻辑转移到前端,后台通过API将数据交给前端后对前端就已经是无感知状态,后端不再接触任何的HTML或者模板页面,前端获得数据后进行业务逻辑的处理。Web项目前后端分离开发实现了并行开发,有效地提高了开发效率。软件开发中前后端进行分离后,由后端提供数据,前端来进行渲染,使得项目分工明确。开发过程中,前后端可以各自测试已经完成的功能,最后将前后端进行对接,有效地提升开发效率,提高代码编写质量,缩短开发周期。前后端代码基本实现完全解耦,项目可以进行模块化开发,前端大量的代码以组件的方式得以复用,后端代码的逻辑更加清晰,可以以模块的方式得以复用。这种方式为项目的维护和升级提供了比较好的环境,以后相似项目的开发可以利用这些模块化代码,这会缩短开发时间。
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。