部署运行管理子系统概设2.docx
- 文档编号:28375806
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:21
- 大小:20.89KB
部署运行管理子系统概设2.docx
《部署运行管理子系统概设2.docx》由会员分享,可在线阅读,更多相关《部署运行管理子系统概设2.docx(21页珍藏版)》请在冰豆网上搜索。
部署运行管理子系统概设2
第六部分部署运行管理子系统
第一章部署运行管理服务端
1.1工具
1.1.1日志组件
1.1.1.1.功能描述
根据日志组件注册信息,将日志内容按模块输出到不同的文件。
1.1.1.2.业务流程描述
1、注册日志组件;
2、管理日志组件;
3、获取使用日志组件;
1.1.1.3.业务流程图
1.1.1.4.接口
注册日志组件:
/**
*注册组件日志
*@parammodelName组件名称
*@paramlogName日志名称
*@paramlevel日志级别
*@parammaxHistory日志保留时间
*/
publicstaticvoidregister(StringmodelName,StringlogName,LevellogLevel,intmaxHistory)
获取日志组件:
/**
*获得日志组件
*未注册的模块,只返回consolelogger
*@parammodelName模块名称
*@paramcls类名
*@return
*/
publicstaticch.qos.logback.classic.LoggergetLogger(StringmodelName,Classcls)
1.1.2线程池组件
1.1.2.1.功能描述
使用无界队列线程池,线程池大小可修改,状态可查询。
1.1.2.2.业务流程描述
1、建立线程池;
2、使用线程池
3、获取线程池状态
1.1.2.3.业务流程图
1.1.2.4.接口
建立线程池、使用线程池:
/**
*建立线程池
*@paramcoreSize线程池大小
*@parammaxSize线程池最大容量
*@parampoolName线程池名称
*1.采用无界队列,线程池最大值无意义
*2.采用无界队列,核心池大小接受动态调整。
*/
protectedThreadPool(intcoreSize,intmaxSize,StringpoolName);
publicclassUpMessageProcessThreadPoolextendsThreadPool;
获得线程池状态:
finalpublicStringstat();
1.1.3Socket组件
1.1.3.1阻塞式连接器封装
1.1.3.1.1.功能描述
连接器建立客户端与服务器之间的连接,用在阻塞式连接时使用,不需要人工关闭连接。
1.1.3.1.2.业务流程说明
1、建立阻塞式连接器
2、设置阻塞式处理器
3、连接服务端
1.1.3.1.3.业务流程图
1.1.3.1.4.接口
/**创建阻塞式连接器*/
SocketConnectorsocketConnector=newSocketConnector();
/**设置阻塞式处理器*/
socketConnector.setHandler(SessionClientBlockHandler);
/**连接*/
socketConnector.connect();
1.1.3.2非阻塞式连接器封装
1.1.3.2.1.功能描述
连接器建立客户端与服务器之间的连接。
用在非阻塞式连接时使用。
1.1.3.2.2.业务流程说明
1、建立非阻塞式连接器
2、设置非阻塞式处理器
3、连接服务端
1.1.3.2.3.业务流程图
1.1.3.2.4.接口
/**创建非阻塞式处理器*/
NioSocketConnectornioSocketConnector=newNioSocketConnector();
/**设置非阻塞式处理器*/
nioSocketConnector.setHandler(SessionHandler);
/**连接*/
nioSocketConnector.connect();
1.1.3.3非阻塞处理器封装
1.1.3.3.1.功能描述
用在非阻塞式连接的消息处理,服务端与客户端都可使用。
1.1.3.3.2.业务流程说明
1、连接成功后业务处理
2、收到消息处理
3、异常处理
1.1.3.3.3.业务流程图
1.1.3.3.4.接口
/**连接成功处理*/
publicabstractvoidsessionOpened(SocketChannelchannel)throwsIOException;
/**收到消息处理*/
publicabstractvoidmessageReceived(SocketChannelchannel,Messagemessage)throwsIOException;
/**异常处理*/
publicabstractvoidexceptionCaught(SocketChannelchannel,Throwablecause);
1.1.3.4阻塞式(客户端)处理器封装
1.1.3.4.1.功能描述
用在(客户端)阻塞式连接的消息处理。
1.1.3.4.2.业务流程说明
1、连接成功后业务处理(不需要人工关闭连接)
2、异常处理
1.1.3.4.3.业务流程图
1.1.3.4.4.接口
/**
*阻塞-业务处理
*此方法结束后,连接自动关闭
*/
publicabstractvoidprocess(SocketChannelchannel)throwsIOException;
/**
*异常处理
*@throwsIOException
*/
publicabstractvoidexceptionCaught(SocketChannelchannel,Throwablecause);
1.1.3.5阻塞式(服务端)处理器封装
1.1.3.5.1.功能描述
用在(服务端)阻塞式连接的消息处理。
1.1.3.5.2.业务流程描述
1、连接成功后业务处理(不需要人工关闭连接)
2、异常处理
1.1.3.5.3.业务流程图
1.1.3.5.4.接口
/**
*阻塞-业务处理
*此方法结束后,连接自动关闭
*@throwsClassNotFoundException
*/
protectedabstractvoidprocess()throwsIOException,ClassNotFoundException;
/**
*异常处理
*@throwsIOException
*/
publicabstractvoidexceptionCaught(SocketChannelchannel,Throwablecause);
1.1.4统一接入接口
1.1.4.1.功能描述
模块加入容器需要实现统一接入接口,应用运行时,核心模块通过此接口向业务模块转发请求。
模块更新时,autoins通过此接口停止或启动业务模块。
1.1.4.2.业务流程描述
1、启动模块
2、获得模块版本
3、业务请求处理
4、停止模块
1.1.4.3.业务流程图
1.1.4.4.接口
启动模块:
/**
*启动模块
*@returntrue:
成功
*false:
失败
*/
publicbooleanstart(String...args);
返回版本号:
/**
*返回模块当前版本号,必须继承覆盖实现
*@return字符串形式版本号
*/
publicStringgetModelVersion();
处理请求:
/**
*请求处理
*
*@paramrequest请求字符串,json格式
*
*@return可返回空
*/
publicObjectprocess(Requestrequest);
停止模块:
/**
*停止模块
*@returntrue:
成功
*false:
失败
*/
publicbooleanstop();
1.1.5模块组件
1.1.5.1.功能描述
模块为程序中的实体,包含配置文件和jar包文件,配置文件指定模块实体信息,jar包为实现统一接入接口类包。
1.1.5.2.业务流程描述
1、配置模块配置文件
2、读取模块配置文件
3、检查模块配置是否正确
4、生成模块实体
1.1.5.3.业务流程图
1.1.5.4.接口
配置文件名称:
conf.10.aud
Conf:
固定文件名前缀
10:
加载顺序,容器启动时按此顺序加载,越小越先处理
Aud:
模块名称
Jar包名称为:
模块名.jar
生成模块实体:
/**
*根据配置文件,生成模块信息实体
*@paramconfig
*@return
*@throwsIOException
*/
publicstaticModelgetModelByConfig(Fileconfig);
模块处理:
/**
*获得目录下模块的配置文件
*
*文件名格式分为三段,conf.xxx.xxx
*第一段固定
*第二段为数字,数字小的先加载,数字大的后加载
*第三段为模块名称等说明性的易懂的字符串
*
*@paramcurrentModelDir
*/
publicstaticFile[]getModelConfigFiles(FilerootDir);
模块配置完整性检查:
/**
*检查配置项是否完整
*@parammodel
*@return
*/
publicstaticvoidcheckModel(Modelmodel){
1.2容器/客户端管理
1.2.1客户端注册
1.2.1.1.功能描述
客户端注册与加载到内存。
当客户端启动后,客户端信息汇报到服务端,服务端将客户端分配到组中进行管理。
其中,一个模块可以属于多个组,一个客户端/容器只能属于一个组。
1.2.1.2.业务流程描述
1、增加客户端
2、通知客户端进行注册
3、将客户端注册到内存
4、获取客户端信息
1.2.1.3.业务流程图
1.2.1.4.接口
客户端注册:
/**
*根据文件内容,通知一批客户端进行注册
*@parammsgStr
*/
publicstaticintregClientByFile(StringfileName);
客户端写入磁盘:
/**
*增加客户端,并持久化
*用于客户端信息主动汇报时的处理
*@paramclient
*/
publicstaticbooleanaddClient(finalClientclient)
增加客户端到内存:
/**
*增加客户端到内存
*@paramclient
*/
publicsynchronizedstaticvoidputClient(Clientclient);
获得已注册客户端:
/**
*获得已注册客户端信息数
*@return
*/
publicstaticintgetClientCount();
1.2.2客户端更新
1.2.2.1.功能描述
当客户端信息发生变化时,如所属组发生变化,此时需要重新更新客户端。
1.2.2.2.业务流程描述
刷新客户端信息,重新将客户端信息汇报到服务器。
1.2.2.3.业务流程图
1.2.2.4.接口
更新客户端:
/**
*根据组名称,刷新客户端信息,即重新汇报
*@paramgroupName
*@return
*/
publicstaticintreflushClientByGroup(StringgroupName);
1.2.3客户端删除
1.2.3.1.功能描述
当某客户端需要卸载时,删除该客户端注册信息,包括内存和磁盘信息。
1.2.3.2.业务流程描述
1、根据IP地址删除客户端
2、根据文件内容删除客户端
1.2.3.3.业务流程图
1.2.3.4.接口
根据IP地址删除客户端:
/**
*根据IP地址删除客户端,包括内存及磁盘文件
*@parammsgStr
*/
publicstaticvoidremoveClientByIp(Stringaddr);
根据文件内容删除客户端:
/**
*根据文件内容,删除客户端,包括内存及磁盘文件
*@parammsgStr
*/
publicstaticintremoveClientByFile(StringfileName);
1.3版本管理
1.3.1版本注册
1.3.1.1.功能描述
将不同模块对应的版本进行注册,最新模块版本文件存放在current目录下,旧版本文件存放在bak目录下,使用时临时获取处理,同一版本备份多次后只保留最后一份。
1.3.1.2.业务流程描述
1、将模块移动到current目录
2、版本注册
3、模块加入内存
1.3.1.3.业务流程图
1.3.1.4.接口
移动模块到current目录:
ModelUtil.moveModelDelExist(reg_model,configFile.getParent(),Env.Property.VRESION_DIR_CUR.getValue());
注册模块:
/**
*根据文件,注册模块
*模块版本管理只在内存中管理最新版本,非最新版本不记内存
*@paramfileName
*@return
*/
publicstaticStringregModel(StringfileName);
models.put(reg_model.getName(),reg_model);
加载模块:
/**
*只加载最新版本到内存
*旧版本在bak目录下,需要时再去取
*/
publicsynchronizedstaticintloadCurrentModel;
获取模块信息:
/**
*获得已注册模块详细信息
*@return
*/
publicstaticStringgetModelDetail();
1.3.2版本更新
1.3.2.1.功能描述
系统线程定时扫描指定目录,检测是否有新版本需要发布,若版本目录下包含配置文件及包文件,则发布版本更新消息。
1.3.2.2.业务流程描述
1、监控版本目录是否存在
2、监控版本目录是否有版本配置文件
3、监控版本目录是否有包文件
4、发布版本更新消息
1.3.2.3.业务流程图
1.3.2.4.接口
发布版本更新通知:
MessageNoticeService.versionAppNotice(model,null,false);
1.3.3版本删除
1.3.3.1.功能描述
当系统更新新版本后,删除已过期版本,并将过期版本备份到bak目录下。
1.3.3.2.业务流程描述
1、卸载已经注册模块
2、将模块备份到bak目录
1.3.3.3.业务流程图
1.3.3.4.接口
/**
*根据模块名称缷载模块
*@parammodel_name模块名称
*/
publicstaticStringremoveModel(Stringmodel_name)
1.4版本发布管理
1.4.1自动版本发布
1.4.1.1.功能描述
系统发布新版本通过自动版本发布不要人工参与,实现完全自动化
1.4.1.2.业务流程描述
1、监控task任务状态
2、判断自动部署是否已激活
3、通知客户端进行版本更新
1.4.1.3.业务流程图
1.4.1.4.接口
/**自动版本发布*/
MessageNoticeService.versionAppNotice(model,null,false);
1.4.2人工版本发布
1.4.2.1.功能描述
人工通过命令行工具,可通知单个客户端、多个客户端、一组客户端主动下载发布。
1.4.2.2.业务流程描述
1、读取输入命令
2、命令分析、执行
1.4.2.3.业务流程图
1.4.2.4.接口
/**人工版本发布*/
MessageNoticeService.versionAppNotice(model,null,false);
1.4.3版本发布进度监控
1.4.3.1.功能描述
记录版本发布过程中的状态,用于控制版本发布的整个流程。
1.4.3.2.业务流程描述
1、获取每条任务详细信息
2、任务是否完成
3、获取当前任务数
4、记录任务开始
5、记录任务失败
6、启动任务
7、停止任务
1.4.3.3.业务流程图
1.4.3.4.接口
/**版本监控*/
publicclassNewVersionTask;
1.5命令行管理
1.5.1.功能描述
通过使用命令行工具实现对服务器的管理,同时也可以管理客户端容器。
1.5.2.业务流程描述
1、创建客户端与服务器端连接
2、客户端发送命令
3、服务器接收命令
4、服务器分析、执行命令
1.5.3.业务流程图
1.5.4.接口
/**命令行管理*/
publicclassCommandAnlyze;
第二章容器/客户端
2.1模块管理
2.1.1模块加载
2.1.1.1.功能描述
判断模块是否存在,并将模块加载到内存,持久化。
一个模块的加载失败不影响其他模块的加载。
2.1.1.2.业务流程描述
1、读取配置文件信息
2、加载模块jar包设置jar依赖
3、注册模块业务处理线程池
4、更新下游模块
5、注册模块到内存
2.1.1.3.业务流程图
2.1.1.4.接口
/**加载模块*/
publicsynchronizedstaticvoidloadCurrentModel();
2.1.2模块缷载
2.1.2.1.功能描述
将内存中已经存在的模块卸载。
2.1.2.2.业务流程描述
1、从模块列表中删除模块
2、删除模块关系
3、模块执行stop
4、销毁模块所用资源
5、更新客户端
2.1.2.3.业务流程图
2.1.2.4.接口
/**从列表中删除模块信息*/
models.remove(model_name);
2.2热部署/动态更新
2.2.1.功能描述
在不影响其他业务模块正常运行情况下,动态更新某些模块信息,在更新模块时要保证没有其他业务正在使用。
2.2.2.业务流程描述
1、接收服务端版本更新的消息
2、下载模块
3、校验模块
4、缷载对应的模块
5、重新加载模块
6、通知服务端更新成功
2.2.3.业务流程图
2.2.4.接口
/**热部署流程*/
publicclassCommandAnlyze;
2.3任务分发/统一调度
2.3.1.功能描述
统一调度为系统对外接口,外部请求通过该接口下发到相应业务系统进行处理。
2.3.2.业务流程描述
1.异步分发
2.同步分发
2.3.3.业务流程图
2.3.4.接口
请求分发:
/**
*请求分发
*
*同步处理
*
*返回处理结果
*
*@paramrequest
*/
publicstaticObjectdispatchSchedulerSyn(finalRequestrequest);
/**
*请求分发
*
*异步处理
*
*如果模块线程池存在,则将请求放入业务模块处理线程池中处理。
*否则新开线程处理
*异步处理没有返回值
*
*@paramrequest
*/
publicstaticvoiddispatchSchedulerASyn(finalRequestrequest);
2.4服务端命令响应
2.4.1.功能描述
服务器接收命令行命令,并对该命令进行分析,将远程命令转发到客户端处理,执行本地命令。
2.4.2.业务流程描述
1、接收命令
2、分析命令
3、执行命令、返回结果
2.4.3.业务流程图
2.4.4.接口
/**服务器命令处理*/
publicclassCommandAnlyze;
第三章ECM组件化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部署运行管理子系统 概设2 部署 运行 管理 子系统