如前所述,采用脚本模式,就像众多的奴隶为一个宏伟的工程而服务,如果以cc的成熟度和人类历史发展的阶段来映射,可以说是处于奴隶社会,虽然效率底下,但按部就班去实现,宏伟的金字塔依旧能建立。 运维人员就像奴隶一般,每天需要对系统进行运维和调整,编写和改进脚本,根据反馈的数据进行自我分析和判断。
人类的历史是有客观规律的,从低级阶段到高级阶段的发展,那对云端平台的理解和深入,也可以借鉴这种模式,我们对最基础的云端进行分解,庖丁解牛,用自己的双手DIY一套系统。这里总结一下所需的PaaS的功能:
-
提供按需索取的硬件和操作系统服务;
-
提供了应用程序平台和解决方案栈;
-
减少IT部署的开销和痛苦;
-
按需为应用程序提供资源;
-
让其更易伸缩。
总结的说,就是3点:对应用的管理,对服务的管理,对自身的管理。
完成一个基本型paas需要什么呢?支持简单架构的包部署(单一WAR包),支持tomcat和mysql,并提供缺省的route。为了不修改程序,可以在route设定为粘性路由方式。具体功能如下:
-
应用的管理:提供tomcat/jetty;支持war的打包上传;自动生成脚本,并执行。
-
服务的管理:提供mysql;支持服务的生命周期;只是服务和应用的绑定。
-
自身的管理:提供状态查询,系统监控,提供缺省模式的路由分配。
图52-01 基本型paas平台(部署模式)
这里只提供了部署模式,而没有系统架构的图,是因为在基本型Paas平台,很多处理是采用脚本处理方式,至于上传和监控模块,都是传统的web程序,容易理解。
从基本型paas平台的部署图里,分解为4个部分:前面是路由,用来作负载均衡用的;下面分别是service池和apps池,分别用来承载mysql服务器和tomcat/jetty应用服务器的;在这里最关键是paas管理器,包括上传,配置,模板管理,部署管理,监控,为了paas平台内部的信息和状态能持久,外加数据库。
上传管理
-
提供上传的界面,war包上传,并设定一些参数,如果按照最简单的方式,可以提供一些选项或者是下拉框,填入2级域名和web实例的个数等。
配置管理
-
接手到的war包,解压,根据配置的mysql的名称,改写war包中相应的xml文件,
-
并为上传的war提供一些脚本,脚本可以是生成的,也可以是用户上传的,最简单的脚本包括应用和服务的start和stop功能,并能被执行,执行后,设置状态和id,并用一个界面提供用户查询。
-
还需要改写route的信息,这样当应用是多个实例的时候,通过route能方便的把http请求拆分到多台apps上,实现负载均衡功能。
模板管理
-
提供tomcat/jetty以及mysql服务的模板。Tomcat是基于java的,mysql基于c的,分别需要为他们定制模板,在需要新服务的时候,只需要copy即可。
-
假设操作系统(由物理机或者虚拟机提供,不在paas内管理)安装的时候有个缺省环境,有统一的用户和JDK,tomcat的安装只需要复制tomcat即可,多少份都可,可以设定复制规则,比如每个vm中可复制3个tomcat,每个512m-1024m的内存容量,至于是tomcat6,还是tomcat7,可以根据用户的要求做不同的复制。
-
对于mysql稍微复杂一些,因为是c的,需要在linux上部署,会依赖于linux的虚拟机的安装;还有一种方式,对于测试或者验证方式的,可以在一台mysql上开启不同的用户。
部署管理
-
因为涉及到虚拟机或者物理机的部署,这里会涉及到iaas,在paas层,是不处理虚拟机的处理。在这里不区分虚拟机和物理机。
-
前端需要有一个route层,route用来处理前端请求的分发的,route的前端有个负载均衡的作用,可以是硬件或软件,在这里假设采取的都是nginx,作为分发和均衡器。
-
如果没有iaas平台的支撑,就假设apps池/service池所在的物理机/虚拟机已经搭建好了,只是服务的启动需要脚本来控制,脚本启动后,触发状态的变化,由配置管理模块修改paas平台的apps和servcie的状态。
-
如果底层基于iaas层,或者基于kvm的模式,可以由脚本或者iaas的api进行处理。
监控管理
-
监控模块在这里会做的比较简单,因为是基本型的嘛。但也包括2块内容:
-
Apps和services的状态监控,查看哪些应用和服务是启动了,以及状态等
-
如果在每个vm或者物理机上安装了agent,就可以查看到vm的内存,cpu,jvm等。
-
如果脚本强大,还可以有启动启动tomcat或者自动添加减少tomcat的实例脚本,自然在变动tomcat实例的同时,也需要修改前端route的信息。
掰完了基本型paas平台的结构和关键组件,在这里推演一个典型的流程,检验一下基本型paas平台是否能支撑呢。劳苦的程序员经过了一个项目的生命周期,好不容易把项目发布出来了,打成了一个war包,程序是mvc+servcie+dao实现的,采用的是spring+mybaits模式,采用的是连接池模式,采用的是mysql,配置信息写在了某个xml文件中。
-
打开“PAAS平台管理器”,上传war包,并设定如下参数:2级域名,3个tomcat实例,mysql实例1个,设定mysql用户名和密码。
-
"PAAS平台管理器"创建根据模板并设定用户名和用户,启动1个新的mysql实例,纪录好ip地址,端口等信息。修改paas状态。
-
“PAAS平台管理器”启动3个tomcat实例,分别编号:server01-tomcat01,server01-tomcat02,server01-tomcat03,修改paas状态。
-
"PAAS平台管理器”把上传的war包解压,并根据mysql的配置信息,改写相应的xml文件信息,并分别copy到3个tomcat指定的目录下。
-
“PAAS平台管理器”分别启动3个tomcat实例,并修改nginx的配置信息,生效请求转发,并修改状态。
-
大家就可以通过域名或地址来使用刚才发布的应用了。
前面用精神开拓了视野,用思想武装了头脑,那么现在我们就开工了,首先需要一些硬件,软件,以及网络设备,清单如下:
图52-02 基本型paas平台的物理部署
整个系统分为管理节点,计算节点和路由节点。
-
路由节点:实现2级域名的定向和请求的分派
-
计算节点:Service pool和apps pool里面的机器都是计算节点,假设都是由vm组成,如果是db池,每个vm启动一个mysql的实例,缺省不启动;如果是apps池,每个vm安装统一的jdk,允许启动3个jvm,并部署好tomcat实例,可使用统一的文件系统。缺省不启动。
-
管理节点:管理节点是整个系统的核心,包括数据库,以及存储服务模板和应用模板。这里的数据库是提供管理节点使用,用来存储整个管理系统的中间状态和元数据信息。
关键的数据
-
基础数据:包括ip地址,servcie id/apps id和ip的对应关系,2级域名对应的ip等
-
状态数据:服务和应用的当前状态,通过agent定时更新信息。
-
历史信息:服务和应用的状态轨迹,用户处理的信息,动作的处理等
核心的软件
-
执行脚本:服务和应用的预设脚本,典型的有start/stop。
-
上传模块:和用户交互的接口,获取war包,并得到用户设定的参数,典型的有mysql的id和需要启动的服务实例个数。
-
配置模块:把war解压,根据配置信息改写相应配置文件,并分别复制到相应的apps节点。
-
网络端口:节点机器端口和网络都需要彼此开放,相应的用户和权限开启
在此基础上,采用负载均衡,以及合理使用缓存,业务应用作合适的分离部署,来提高系统的性能。图52-03是个具备一定功能Paas平台的示意图,不但管理了通用服务的生命周期,也管理到了通用业务的开发到部署的阶段,建议和之前“图23-01”配合起来理解。
这里通过结合svn,jenkins以及测试的手段,规范测试流程,形成了整套的开发+部署的平台,后台采用脚本+代码,再用页面把各个功能组合起来,形成统一体。这种方式也是业界的发展趋势,从之前的cloudbees,到现在的openshift云端平台,均提供了从开发到部署的模式,可以看到这种结合devops能力的paas平台代表了业界新的发展方向。
图52-03 :具有devops功能的Paas平台结构
这里对基本paas作了个思路上的概述,没有涉及到具体的设计上,因为在《从项目开发到云端架构》文档里,主要是把概念和思路梳理清楚,因为每个人的认识和对云端的感知不一样,有自己的理解和思想,从开源软件的多样性就得知,从来没有绝对最好的,只有自己根据实际情况选择或者去实现最合适的,如何去作,仁者见仁智者见智,在心目中每个人都是架构师,都有自己的体会和认识。在下一篇《云端平台的设计和实现》中我按照自己的思路和想法,会更详细的描述和设计云端平台,让我们在云里雾里来一睹云端平台的风采。 ;)
上一篇 从项目开发到云端架构(16) :http://timeson.iteye.com/blog/1702881
下一篇 从项目开发到云端架构(18) :http://timeson.iteye.com/blog/1717288
- 大小: 15.5 KB
- 大小: 48.7 KB
- 大小: 64.7 KB
分享到:
相关推荐
【模拟云端系统项目】是一个综合性的IT项目,它结合了前端和后端技术,旨在构建一个功能完善的云端应用。...这样的项目实践能帮助开发者深入理解云端应用的开发流程和架构设计,提升在分布式系统中的实战能力。
在当前数字化时代,"云端第三代系统开发"是一个重要的议题,它涉及到如何利用先进的技术构建高效、易用且灵活的云服务平台。在这个系统开发过程中,Java作为主要编程语言扮演着核心角色。下面我们将深入探讨这个话题...
云端系统源码第二版是一个...综上所述,云端系统源码第二版是一个涉及多方面技术和实践的综合项目,涵盖了从底层基础设施到上层应用服务的全方位设计。深入理解和掌握这些知识点对于开发、运维和管理云端系统至关重要。
在Android开发中,结合Web服务(Webservice)可以实现丰富的云端功能,比如数据同步、远程API调用等。"android基于webservice云端运用最新代码EasyEnglish"是一个示例项目,展示了如何在Android应用中集成Webservice...
以上内容仅是对“wiki云端知识库平台项目”可能涉及的技术栈和概念的一个概述,具体实现可能根据开发团队的选择和技术栈有所不同。对于学习者来说,深入理解并掌握这些知识点,将对个人的技能提升和未来职业发展...
综上所述,这个压缩包是鸿蒙OS开发者的一站式资源库,涵盖了从系统底层到应用开发的各个环节,对于想要涉足鸿蒙OS领域的开发者而言,是一个宝贵的资料集合。通过深入学习和实践,开发者可以更好地掌握鸿蒙OS的开发...
“云端”意味着它涉及到云存储或云计算的服务。“脚本”指的是可执行的代码文件,如JavaScript、Python等,可能是网页脚本或者其他类型的程序。“获取器”和“下载器”则说明了工具的功能,即获取并下载云端的脚本...
通过研究这些源代码,初学者可以学习到实际项目开发中的最佳实践,而有经验的开发者则可以借鉴其中的设计模式和问题解决策略。无论是独立学习还是团队协作,这个资源都能提供宝贵的经验和洞察。
9. **部署与运维**: 项目可能还包含了部署和运维相关的文档,例如Dockerfile或者Kubernetes配置,帮助开发者将应用部署到云端或本地环境。 这个项目不仅提供了实际的代码实现,还可以作为学习微服务架构、前后端...
总结,SRA2021-G03-项目开发计划1.81是一个旨在构建云端知识库APP的详尽蓝图,涵盖了项目从需求分析到实施、测试、上线及后续维护的全过程。通过这个计划,团队能够有序地进行开发工作,确保知识库应用能高效、安全...
DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...
JSP+SSM项目-云端学习系统的Java毕业设计.rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:345】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 端学习系统在...
【SRA2021-G03-项目开发计划1.71】是关于一...总之,"SRA2021-G03-项目开发计划1.71"是一个全面的项目管理文档,它涵盖了项目从启动到完成的所有关键环节,旨在确保团队高效协作,成功开发出满足需求的云端知识库APP。
它的出现是为了解决软件开发和维护的成本问题,通过将软件部署到云端,提供基于互联网的软件服务,用户可以通过互联网访问和使用软件。 SAAS 架构设计模式的优势包括: 1. 用户方面:拿来即用,无须维护,按需使用...
《构筑大语言模型应用:应用开发与架构设计》是一份深度探讨大语言模型在实际应用中的开发和架构设计的资源集合。这份资料来源于GitHub上的开源项目phodal/aigc,旨在帮助开发者理解和利用大语言模型的技术,提升...
在物联网项目开发中,可能还需要特定的物联网协议解析或设备模拟插件。 3. **物联网架构**: 物联网环境监测系统通常包含传感器节点、网关和云端平台三个部分。传感器节点负责采集环境数据,如温度、湿度、光照等...
总结,本Android项目开发报告全面展示了项目开发的各个方面,从底层的平台架构到上层的功能实现,再到数据库和项目组织,为开发者提供了清晰的开发指南。通过这样的报告,不仅可以评估项目的成熟度,也便于团队协作...
9. **版本控制**:在项目开发过程中,版本控制非常重要。微信开发者工具允许开发者进行代码版本管理,便于团队协作和回滚更改。 10. **发布与更新**:完成开发后,开发者可以在微信开放平台上提交审核,待审核通过...
本项目“springboot-netty-protobuf-master”旨在提供一个基础架构,它利用了Spring Boot的便捷性以及Netty的高效网络通信能力,同时采用Google的Protocol Buffers(protobuf)作为数据交换格式,确保数据传输的高效...