软件项目系统云部署方案模板2.docx
《软件项目系统云部署方案模板2.docx》由会员分享,可在线阅读,更多相关《软件项目系统云部署方案模板2.docx(15页珍藏版)》请在冰豆网上搜索。
软件项目系统云部署方案模板2
(XXX软件)项目
系统云部署详细设计
当前版本:
最新更新日期:
最新更新作者:
作者:
创建日期:
审批人:
审批日期:
修订历史
版本号
更新日期
修订作者
主要修订摘要
1服务器及网络架构设计
1.1总体架构设计
1.1.1设计目的
通过组建一套完整、高效、松耦合的云平台架构,结合国际领先的互联网分布式服务集成技术,使底层硬件数据、其他系统数据、各种形式的数据都能够集成到XXX软件系统中。
同时,XXX软件系统中需要与硬件、其他系统交互的数据,也可以通过此架构快速、高效的进行传输,并且满足集团公司多级部署和系统可伸缩需求。
本文根据XXX公司现有信息化系统和工厂实际情况,从实现模式和功能架构两方面进行服务器及网络架构总体设计,并分别对云端和工厂端的服务器及网络架构分别进行详细设计。
通过此文,为将来集团服务器及网络建设提供架构思路和建设意见。
1.1.2模式设计
XXX软件根据用户的工厂规模和对系统高可用性要求不同,结合集团、工厂两级管理的要求,可以采用“集团+多工厂模式”和“单工厂模式”两种模式进行系统部署。
如果集团的工厂数量大于等于8,则XXX软件集团+多工厂云部署的服务器数量更加经济。
工厂数量与服务器数量投入曲线如下:
1.1.2.1集团+多工厂模式
构建以集团XXX软件为中心,多工厂部署子级XXX软件系统为基础的“集团+多工厂模式”。
通过在集团部署XXX软件云平台,并在各个工厂部署子级XXX软件系统,支持集团多个工厂生产管理业务运作,可提供基于云架构、完全互联互通和高可用特性。
其特点如下:
●服务器数量:
23+N*3(N为工厂的数量)
●架构:
云架构
●主要特点:
完全互联互通、高可用特性
1.1.2.2单工厂模式
部分不满足接入集团XXX软件中心的工厂,或者不具备部署子级XXX软件系统的企业部门,可以单独构建具有完整功能的独立XXX软件系统,此为“单工厂模式”。
在单个工厂部署XXX软件应用系统,支持单工厂生产管理业务运作,系统的最低配置只需要3台服务器。
其特点如下:
●服务器数量:
N*6(N为工厂的数量)
●架构:
传统系统架构
●主要特点:
根据工厂实际需求灵活扩展
1.1.3架构设计
1.1.3.1基本架构
根据XXX公司工厂数量和工厂规模,必然使用“集团+多工厂模式”进行系统部署,既可以保证系统的一致性,也减少了单工厂部署的所需的经费。
如果需要使用“单工厂模式”则直接按照“集团+多工厂模式”中的工厂端架构进行系统搭建即可。
XXX软件分为工厂端和云平台,通过集团的VPN可以保证不同地区的不同工厂均可与集团系统进行交互。
如果VPN的带宽和稳定性不能满足业务的响应速度和可靠性要求,则对系统使用效果形成严重限制。
为了保证业务功能和系统功能粒度最小化,方便系统灵活扩展和柔性配置组合,XXX软件采用Java/Dubbo技术将功能全部封装为微服务,从而实现业务的云服务化。
由于XXX软件系统通过Java环境下的微服务实现业务功能,而工厂现场需要在非Java环境下实现业务功能。
为保证不同平台、不同系统之间的信息交互,XXX软件和工业现场系统(C++/DCOM技术)通过Thrift实现互联互通。
通过对XXX软件系统主要功能的梳理,XXX软件需要与工厂现场、系统用户、外部系统、内部系统进行交互。
其基本结构如下:
1.1.3.2架构特点
●微服务、构件化
通过在集团和工厂部署制造业务服务组件、流程服务组件、Web/数据服务等关键服务组件,保证集团数据信息与工厂一致,且可对关键数据信息进行统一规划和控制。
同时,根据实际业务需要,将工厂和集团的业务功能全部转化为服务组件,保证任何业务功能可随时插拔。
●分布式、一体化
通过此套服务构件化的架构模式,任何业务功能封装为Dubbo微服务并注册后,通过监控服务自动进行服务负载均衡功能,在XXX软件架构中的就可以调用此微服务。
由于调用者不用指向微服务的实际物理地址,可实现微服务根据承载硬件的性能进行分布式部署,且架构内的服务均由ZK服务统一管理调度。
●开放式云服务
通过EAI接口、直接调用Dubbo服务或者通过Thrift信息转换等方式,均可以在云架构的网络内访问到XXX软件系统内的功能服务(微服务)。
●大数据智能化
通过EAI接口、直接调用Dubbo服务或者通过Thrift信息转换等方式,均可以在云架构的网络内访问到XXX软件系统内的功能服务(微服务)。
既保证了集团内部数据、系统信息的交互功能,也通过启用服务调用策略等方式保证了系统安全稳定的运行。
1.2云端架构设计
1.2.1基本架构
为满足集团系统整体规划,满足未来工厂横向系统扩展的需求,可以通过“集团+多工厂模式”搭建XXX软件云平台。
云平台包含9个基础服务集群,其部署结构如下:
未来移动端、PC端、物联终端等用户端通过互联网(Internet)访问XXX软件云平台。
由云平台统一对外提供XXX软件应用服务(Dubbo微服务),未来根据用户分布和工厂分布的情况,结合硬件、网络等情况综合考虑后进行平台部署。
平台集群可以分别部署在不同的IDC机房,也可以根据管理、维护等需求进行集中部署。
每个集群所需的服务器数量需要根据集群实际负荷进行调整。
1.2.2架构说明
XXX软件云平台包含9个集群,集群之间相互关联且在功能上层级递进。
以下通过对9个集群分别进行介绍来说明各集群的功能作用和集群之间的关系。
●LVS
LVS是LinuxVirtualServer的简写,意即Linux虚拟服务器。
在云平台中主要作用是承载虚拟服务器,对接入平台的连接进行管理,对虚拟的服务器集群进行操作和维护。
此集群主要用于对XXX软件平台的访问IP进行负载均衡,也是外部访问连接和XXX软件平台之间的隔离区,可实现平台与外界的分离。
●NginxCluster
Nginx是一个高性能的HTTP和反向代理服务器,也是邮箱、邮件管理服务器。
此集群主要为XXX软件云平台提供Web服务和反向代理服务。
此集群也是LVS集群和XXX软件平台内部之间的隔离区。
●WebCluster
Web集群是用于发布XXX软件平台中功能界面和展示界面(UI)的服务器,主要使用Jetty为Java编写的web提供容器和运行环境,保证大量分布式环境占用资源可控,且高效处理高并发细粒度的访问请求。
●DockerMircroServiceCluster
Docker是流行的高级容器引擎,用于支持应用和服务的发布、运行、调用等功能。
此集群使用HOP4.0作为基础框架,对XXX软件平台中的微服务进行功能支持,保证微服务功能可高效稳定的运行。
●RocketMQCluster
RocketMQ是一套非日志的可靠消息传输中间件,此集群在XXX软件云平台中主要为平台中的各类消息传输提供服务。
通过消息传输机制,实现流程建模、工厂建模等各个模块中的数据的高密度收发。
●RedisCluster
Redis是一个开源的key-value存储系统,在平台中此集群主要用于存储大量的缓存信息,通过内存存储的方式快速调用所需信息并根据释放机制快速释放无用信息,保证系统平台始终有较高的性能。
●FastDFS+MongoDBCluster
FastDFS是一套开源的轻量级分布式文件管理系统,MongoDB是基于分布式文件存储的数据库。
此集群主要用于平台中各类文件和数据文件的管理。
●MySQL+CobarCluster
MySQL是一套广泛应用于WEB应用的数据库,配合使用Cobar形成分布式的数据库集群,保证多个数据库之间的访问链接和数据处理负荷处于均衡状态,同时为实现工厂、集团之间的数据同步提供服务。
●ZooKeeperCluster
ZooKeeper为XXX软件云平台中的分布式应用、微服务等提供一致性服务,可以为云平台提供应用和服务的注册、配置、维护、域名管理、组服务、分布式同步等服务功能。
1.2.3架构配置
XXX软件云平台基本的运行环境需要23台服务器(按虚拟机测算来验证云平台的基本配置需求),保证基础云架构满足一定规模工厂运营需要,具体数量根据实际负荷进行测算。
各个集群需要服务器配置和具体数量如下表:
1.2.4服务配置
XXX软件云平台功能主要依靠功能服务实现,为满足各工厂和集团的需要,将功能服务分为以下4个主要组成部分:
●平台基础业务微服务
XXX软件系统平台有基础数据、工厂建模、流程建模、数据集成、过程监视、报表图表六大模块,每个系统模块均使用微服务保证各自模块功能正常实现。
●行业业务微服务
通过对XXX公司现有业务梳理,总结提炼符合XXX公司的业务需求并结合ISA-95国际标准,形成8个类别的微服务。
如下:
⏹计划
包含计划接收、计划生成、计划分解、计划调整、进度管理等。
⏹工艺
工艺包括标准维护、参数下发、生产执行路径、工艺报警等。
⏹生产
包含生产单元的全部生产过程推进和监控,主要依据XXX工厂实际生产情况进行总结提炼。
⏹设备
包含基础信息、维修保养、点检巡检、运行监控、统计分析等。
⏹人员
包含人员基本信息、职能技能、岗位工位、班组班次等信息管理。
⏹质量
包含质量标准、质检计划、过程监控、追溯分析等。
⏹物料
包括物料基础信息、需求计划、调度监控、生产跟踪等。
⏹事件
包含事件触发、异常报警、过程执行、调度管理等。
●流程微服务
依照XXX工厂和家电行业的业务流程规范,根据实际的XXX业务流程总结并封装相应的业务流程微服务,各个工厂可拼接调用生产实际所需微服务。
●系统微服务
此类微服务主要用于系统的权限管理、功能管理和维护等。
以上微服务类别及说明如下表所示:
1.3工厂端架构设计
1.3.1基本架构
根据XXX软件云平台部署架构,“集团+多工厂模式”中的工厂端部署主要满足工厂数据文件的存储、业务功能的使用,其他与集团关联的功能可以根据实际情况在云平台或在工厂端处理。
功能集群架构如下图:
1.3.2架构说明
工厂端服务器部署在工厂机房,通过上图可知工厂端主要包含以下三类服务器:
●本地文件服务器
本地文件服务器即是FastDFS+MongoDBCluster,与云平台中的同名集群功能基本一致。
各个工厂端中的文件服务器都是云平台中文件服务集群(FastDFS+MongoDBCluster)的一个节点,只是部署到工厂端而非云端。
文件节点服务器通过此架构与云端中的的文件服务集群进行实时的数据同步操作,保证平台中的其他功能可实时访问、使用工厂端的文件信息。
●本地数据库服务器
本地数据库服务器即是MySQL+CobarCluster,与云平台中的同名集群功能基本一致。
各个工厂端中的数据服务器是XXX软件平台中数据库服务集群(MySQL+CobarCluster)部署到工厂端的一个节点。
数据库节点服务器通过云架构与XXX软件云平台中的的数据库服务集群进行实时的数据同步操作,保证数据访问负载均衡的基础上也减轻了工厂端的数据访问压力。
●本地应用服务器
本地应用服务器主要用于安装部署与工厂现场交互的微服务和其他功能服务。
服务器上的服务通过Thrift或者WebService的通讯方式,与工厂现场、工厂端其他服务器进行信息交互。
1.3.3架构配置
XXX软件工厂端基本的运行环境需要3台服务器,底层硬件数据信息采集和生产执行控制由SCADA系统支持,并由SCADA提供实时历史数据库对现场数据进行采集和大量存储。
1.3.4服务配置
XXX软件云平台对应工厂端需要保证工厂可正常生产,满足工厂所有业务功能的需求。
工厂端根据实际需要,部署与现场操作相关的应用服务,并根据业务变化部署不同的应用服务。
通过灵活调整应用服务,保证现场业务操作的实时性。
通过数据库集群实现业务功能数据实时同步。
根据XXX工厂实际业务,总结必须部署的微服务如下表:
1.4单工厂及扩展设计
1.4.1单工厂配置
XXX软件系统支持单个工厂独立部署。
单个工厂搭建XXX软件系统主要部署以下6个主要组成部分:
●WebServer
提供web展示、web服务等前端功能。
●DockerMicroServiceServer
提供微服务容器,保证业务功能微服务的应用。
●RocketMQServer
提供消息快速传输和消息队列功能。
●RedisServer
为XXX软件系统提供缓存和持久化缓存信息存放数据库。
●FastDFS+MongoDBServer
保证XXX软件系统相关文件、业务相关文件的存储管理。
●MySQLServer
提供业务数据、系统数据等必要数据存储数据库。
根据以上6个模块和业务功能实际数量,最低配置需要3台服务器,使用物理机和虚拟机搭配构建环境。
分配关系如下表:
1.4.2后续扩展设计
XXX软件系统可以根据工厂和集团的业务、组织结构等变化进行动态的组合配置。
例如,未来数据库存储数据量过大时会导致访问时速度下降,通过在云架构的数据库集群中增加服务器即可大幅度提高数据存储能力和处理能力。
当业务精简或者优化后,也可以对业务处理、流程处理的服务器进行移除,且不影响仍然继续使用的业务功能。
云架构中(云平台和工厂端)服务器数量根据XXX软件系统运行时的负荷可进行动态的服务器增减而不干扰现有系统运行。
服务器进行增减时,按照各集群(9个主要集群)的实际运行负荷调整服务器的数量,调整的数量和工厂的数量没有绝对的比例关系。
由于工厂端最少需要3台服务器,且各个服务器均为单独搭建业务功能服务,故工厂端如果扩展需要在本地文件、本地数据库、本地应用各增加1台(共3台)服务器,也可根据实际情况自行调整。
以下图为例说明XXX软件系统云平台需要扩展时,各个集群要增加的服务器数量。
●LVS:
每次一台
●NgixCluster:
每次一台
●WebCluster:
每次一台
●DockeMicroServiceCluster:
每次一台
●RocketMQCluster:
每次两台
●RedisCluster:
每次两台
●FastDFS+MongoDBCluster:
每次两台
●MySQL+CobarCluster:
每次两台
●ZooKeeperCluster:
每次一台
2数据库同步设计
2.1.1数据库分库分表方案
基于云与端的总体架构设计,考虑XXX生产实际现状,XXX软件Mysql数据库的分库方式采用以工厂单位的分库方式,每个工厂数据库独立。
数据量大的表做分区处理。
云端MySQLCluster保存所有工厂的数据。
以工厂为单位的数据库表中,包含工厂编码,工厂ID云段数据查询使用Mycat分布式查询汇总。
基于Mycat,E-R关系的数据分片策略,将工厂库看做是Mycat对一个表的分片来理解,通过Mycat将数据汇总查询。
例如:
SELECT*FROMpm_Sites_tWHERE工厂编码='TG001'
查询工厂数据,条件为工厂编码,Mycat路由到对对应的DB1库上
SELECT*FROMpm_Sites_t
Mycat将DB1、DB2、DB3的数据汇总返回。
什么是MYCAT
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQLServer
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
Mycat原理:
mycat里面通过定义路由规则来实现分片表(路由规则里面会定义分片字段,以及分片算法)。
分片算法有多种,你所说的hash是其中一种,还有取模、按范围分片等等。
在mycat里面,会对所有传递的sql语句做路由处理(路由处理的依据就是表是否分片,如果分片,那么需要依据分片字段和对应的分片算法来判断sql应该传递到哪一个、或者哪几个、又或者全部节点去执行)
2.1.2数据库同步方案
每个工厂的业务数据是独立的,基础数据来源于云(同步方式获取);
工厂的业务数据每30分钟一次同步到云端;
云端的基础数据每天00:
00同步到工厂;
数据同步方式如下:
阿里巴巴分布式数据同步系统OTTER
otter基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库.一个分布式数据库同步系统。
工作原理:
原理描述:
1.、基于Canal开源产品,获取数据库增量日志数据。
2.、典型管理系统架构,manager(web管理)+node(工作节点)
a、manager运行时推送同步配置到node节点
b、node节点将同步状态反馈到manager上
3、基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.
工作原理
canal消费端项目开源:
Otter(分布式数据库同步系统),
地址:
mysql主备复制实现
从上层来看,复制分成三步:
master将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents,可以通过showbinlogevents进行查看);
slave将master的binarylogevents拷贝到它的中继日志(relaylog);
slave重做中继日志中的事件,将改变反映它自己的数据。
canal的工作原理:
原理相对比较简单:
canal模拟mysqlslave的交互协议,伪装自己为mysqlslave,向mysqlmaster发送dump协议
mysqlmaster收到dump请求,开始推送binarylog给slave(也就是canal)
canal解析binarylog对象(原始为byte流)