任务调度中心系统-概要设计
- 格式:doc
- 大小:668.71 KB
- 文档页数:27
第1章wind 内核1.1 内核概述VxWorks操作系统内核称为wind内核,下面从实时性能、核结构、调度特点等方面初步探讨。
1.1.1 实时内核“实时”表示控制系统能够及时处理系统中发生的要求控制的外部事件。
从事件发生到系统产生响应的反应时间称为延迟(Latency)。
对于实时系统,一个最重要的条件就是延迟有确定的上界(这样的系统属于确定性系统)。
满足这个条件后,根据这个上界大小再区分不同实时系统的性能。
这里,“系统”是从系统论的观点讲的一个功能完整的设计,能够独立和外部世界交互,实现预期功能,包括实时硬件系统设计、实时操作系统设计、实时多任务设计3部分。
后两者可以概括为实时软件系统设计。
实现实时系统是这3部分有机结合的结果。
从另外一个角度,即实时程度看,可以把系统分为硬实时系统和软实时系统。
硬实时系统是这样一种系统,它的时间要求有一个确定的底线(Deadline),超出底线的响应属于错误的结果,系统将会崩溃,上面所说的实时系统属于硬实时系统。
对于软实时系统来说,“实时性”是个程度概念,在提交诸如中断、计时和调度的操作系统服务时,系统定义一个时间范围内的延迟。
在该范围内,越早给出响应越有价值,只要不超出范围,晚点给出的结果价值下降,但可以容忍。
1.实时硬件系统设计实时硬件系统设计是其他两部分的基础。
实时硬件系统设计要求满足在软件系统充分高效的前提下,必须提供足够的处理能力。
例如,硬件系统提供的中断处理逻辑能同时响应的外部事件数量、硬件反应时间、内存大小、处理器计算能力、总线能力等,以保证最坏情况下所有计算仍然得以完成。
多处理的硬件系统还包括内部通信速率设计。
当硬件系统不能保证达到实时要求时,可以确信整个系统不是实时的。
目前,各种硬件速度不断提高,先进技术大量涌现,硬件在大多数应用中已经不是实时系统的瓶颈。
因而,实时系统的关键集中在实时软件系统设计,这方面也成了实时性研究的主要内容,也是最复杂的部分。
数据结构课程设计设计题目:车厢调度学生姓名:万道武专业班级:10计算机科学与技术1班指导教师:姚丽莎完成时间:2012年6月7日信息工程学院计算机科学院与技术系目录1.设计目的 (4)2.需求分析 (5)3.概要设计 (5)4.详细设计 (7)5. 课程设计体会及问题分析 (10)6.参考文献 (11)7.附录 (12)1.设计目的数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。
因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。
数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
在当今信息时代,信息技术己成为当代知识经济的核心技术。
我们时刻都在和数据打交道。
比如人们在外出工作时找最短路径,在银行查询存款、通过互联网查新闻、以及远程教育报名等,所有这些都在与数据发生关系。
实际上,现实世界中的实体经过抽象以后,就可以成为计算机上所处理的数据。
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
通过此次课程设计主要达到以下目的:一、了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;二、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;三、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;四训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风2.需求分析本程序的任务是:假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3…n。
设计主管的主要职责设计主管的主要职责(篇1)1.执行及遵守公司的规章制度,服从公司管理;2.负责监督公司各项规章制度的执行;3.负责考勤监督及起表率作用;4.负责设计部的全面工作,及时完成总经理要求的任务;5.负责设计部工作任务的制定和实施;6.负责分解设计部的.任务,跟踪进度,保证工作目标的实现;7.负责网站页面质量审核、监督与管理;8.负责协调各部门之间的关系;9.考核部门工作人员工作绩效,评定工作能力;10.负责安排对销售和本部门员工的培训;11.配合销售约见客户或与客户沟通;12.审核制定单子的制作周期和单子的分配。
设计主管的主要职责(篇2)职责:1、负责公司日常宣传、策划设计制作、企业宣传资料的设计、制作与创新;2、独立完成设计创意工作的开展,包括品牌设计,平面广告,平面印刷,包装等类别;3、协助公司其他部门人员完成对设计及美学方面的.工作,负责公司市场活动宣传品配合工作;4、负责与广告协作方沟通,保证各类平面项目的质量及其到位时间。
岗位要求:1、艺术类相关专业大专以上学历,3-5年平面设计工作经验;2、具备较强审美能力和美术功底,设计能力突出,对不同需要有灵活的艺术表现力,具备独特创意;3、熟练掌握并应用各种平面设计软件,具有扎实的美术功底,优秀的设计表现能力;4、较强的沟通理解能力,能够深度理解公司营销意图。
5、视频制作,动漫设计等作为加分项。
6、医美、美容整形、奢侈品行业优先考虑。
设计主管的主要职责(篇3)1、负责公司项目整体形象创意设计,根据公司品牌传播诉求,制定品牌视觉设计方向;2、关注行业设计动态与发展方向,准确把握公司和项目的设计风格,把控相关创意工作的出品质量,领导团队完成优秀的设计作品;3、把握项目和品牌的整体风格和视觉呈现以及传播媒介设计风格,线上的图案、广告、海报等;4、把控创意及设计项目的质量,对设计的.创意、色彩、版式等进行评审;5、全面负责公司创意、平面及设计的评判和指导工作,配合公司整体的营销策略以达到预期的市场效果;6、指导公司平面设计师、美工审美,把控公司品牌整体视觉形象,提升公司整体审美品味;7、负责公司网站及CIS视觉识别系统建设工作。
公司名称——部门名称“请在此处填写项目名称(保留引号)”项目任务书【下表由PMO管理员在“任务书审核和立项评分”结束后填写】1项目简介1.1背景[介绍项目的背景]1.2发起人[项目的发起人]1.3客户基本需求[简要介绍客户基本需求]1.4客户信息2项目目标2.1项目管理目标[从管理的角度描述此项目要达到的目标,如:客户可使用该系统实行会议的信息化管理等。
可以进行简单文字描述,也可以采用列举的方式]●[目标1描述]●[目标2描述]2.2项目技术目标[从技术的角度描述此项目要达到的目标,针对实际项目简单说明。
可以采用列举方式进行描述。
如:实行会议信息编辑、参会人员查询、签到卡制作、签到情况统计等]●[目标1描述]●[目标2描述]2.3项目性能目标[从性能的角度描述此项目要达到的目标,如运行速度、易用性、兼容性、可扩充性等。
可以采用列举方式进行描述。
如:确保人员并排入场不漏卡、可一键生成人员签到情况报告单、可兼容XP/Win7操作系统、可结合人员坐席排位系统使用等。
]•运行速度•易用性•兼容性•可扩充性3工作内容本次项目的主要实施内容主要包括15项,包括建模服务、信息发布平台、公共广播、视频监控、智能巡更、无接触电梯控制、智能考勤、智慧食堂、人脸闸机、室内环境质量监测、智慧抄表、智慧灯杆、智慧井盖、接口集成、项目实施,具体产品实施内容与主合同中约定的相关内容为准。
3.1数字孪生3.1.1服务内容完成本项目要求的滨州移动大楼所在园区及楼宇的3D虚拟仿真建模、智慧园区平台开发、部署及实施等,该项目涉及主要工作包括。
●收集滨州移动大楼园区、建筑、楼层相关CAD图●园区、建筑、楼层各角度拍照●3D仿真建模(一个园区、三栋建筑外立面、生产调度中心楼宇所有楼层)●3D效果渲染●模型上传测试●OnePark智慧园区平台开发3.1.2可交付物本项目约定的园区、重点建筑和室内结构场景3D模型文件、OnePark智慧园区平台。
软件用户操作手册1.软件概述1.1 编写目的:该文档是为系统使用者介绍使用方法以及遇到问题是如何解决等,软件使用者为公交调度员。
1.2 项目背景:公交公司在在调度工作中因任务繁重,手动调度易出错等原因,由杭州易和网络软件研发部研发公交调度系统。
1.3 参考资料:【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:a.项目的计划任务书、合同或批文.b.项目开发计划.c.需求规格说明书;d.概要设计说明书;e.详细设计说明书;f.测试计划;g.手册中引用的其他资料、采用的软件工程标准或软件工程规范。
】2.软件概述2.1目标:通过软件掌握一切车辆司机实时状态,并且能完成实时调度;2.2功能:登录,选择监控线路,显示车辆实时速度、温度、故障,查看线路下的所有车辆位置状态,调度实时调度车辆和司机,发送消息,消息提醒和警告,调度记录查询,里程统计,执行进度,调派单查询,定班定点计划,轨迹回放;2.3性能:数据显示及时快速,延时误差在几秒内,操作简单灵活符合用户操作习惯;3.运行环境3.1硬件:a.内存1G以上,CPU无特殊要求b.显示器分辨分辨率1280*720以上最小不应小于1024;3.2支持软件:操作系统要求为windows,版本xp以上(包括xp系统);4.使用说明4.1安装和初始化:点击安装文件,开始安装,一切都默认安装即可,可以自己设置安装目录,创建桌面快图标,如图:4.2安装出错:安装出错时候查看系统版本是否过低,关闭大型程序,和杀毒软件,或重启电脑。
4.3 运行软件:在桌面找到BusClient文件,双击启动,如下图:4.5 选择线路:第一次登录的时候会要求选择监控的线路,在你所有有权限的线路下选择你当前不要的线路,如下图:4.6 查看数据:通过不同的菜单按钮来查看你要查看的数据。
4.6.1 车辆信息:点击车辆信息按钮查看:4.6.2 调度记录查询:点击调度记录查询按钮查看:4.6.3 轨迹回放:点击轨迹回放按钮查看:4.6.4 里程统计:点击里程统计按钮查看:4.6.5 执行情况:点击执行情况按钮查看:4.6.6 调派单:点击调派单按钮查看:4.6.7 定班定点计划:点击定班定点计划按钮:4.7 车辆调度:调度可以在“车辆实时信息”里面双击车辆或右键车辆->单车调度就会弹出调度界面,另外也可以在行车记录表中直接修改,如下图:息后点击发送即可,如下图:5.运行说明5.1正常运行:打开程序后登录,不会遇到任何提示框。
XXXX软件概要设计单位编写校对审核标审批准XXXX有限公司文档控制变更记录目录1范围 (1)1.1标识 (1)1.2系统概述 (1)1.3文档概述 (1)1.4基线 (1)2引用文件 (1)3术语和定义 (2)4总体说明 (2)4.1软件与系统的关系 (2)4.2软件功能描述 (3)4.3项目特点分析 (3)4.4设计决策 (3)4.5软件业务流程(建立与设计模块的关系) (3)4.6软硬件环境说明 (3)4.7复用说明 (3)5XXX配置项体系结构设计 (4)5.1体系结构 (4)5.1.1组件划分 (4)5.1.2组件层次结构关系 (5)5.1.3性能的分配 (6)5.2接口设计 (6)5.2.1配置项外部接口 (7)5.2.2组件开发接口 (7)5.2.3组件其他接口 (7)5.3总体进程视图 (8)5.3.1XXX进程 (8)5.3.2任务执行线程 (8)5.4组件说明 (11)5.4.1业务流程调度(标识:TSF) (11)5.5实现视图 (18)5.6部署视图 (18)6数据库设计 (19)6.1概念数据库设计 (19)6.2逻辑数据库 (20)6.2.1数据库表清单 (20)6.2.2库表描述 (20)6.3物理数据库设计 (20)7其他设计 (20)7.1配置项初始化数据设计 (20)7.2安装设计 (20)8组装设计 .................................................................................. 错误!未定义书签。
8.1第一轮组装........................................................................................ 错误!未定义书签。
8.1.1第一组........................................................................................ 错误!未定义书签。
设计和开发控制程序1. 控制程序的概述控制程序是计算机系统中的一个关键部分,它用于管理和协调系统中的各个组件和资源,以实现系统的正常运行和预期功能。
控制程序通常由一系列指令和算法组成,它能够监控系统状态、接收输入、产生输出,并根据一定的逻辑规则对系统进行控制和调度。
2. 控制程序的设计和开发流程设计和开发一个控制程序需要经过以下几个重要步骤:2.1 需求分析在设计控制程序之前,首先需要进行需求分析。
通过与用户沟通和调研,了解用户的具体需求和系统功能要求,明确控制程序的功能和性能指标。
需求分析的结果将成为后续设计和开发的基础。
2.2 概要设计概要设计是对控制程序整体结构和功能进行规划和设计。
在这一阶段,需要确定控制程序的模块划分、数据流和控制流,并进行相应的数据结构和算法设计。
概要设计的结果是控制程序的总体框架和设计方案。
2.3 详细设计详细设计是在概要设计的基础上,对各个模块和功能进行详细的设计。
在详细设计中,需要定义每个模块的输入、输出和功能,并具体说明数据结构和算法的实现细节。
详细设计的结果是控制程序的具体实现方案。
2.4 编码和测试在详细设计完成后,可以开始编写控制程序的源代码。
编码阶段需要按照详细设计的要求实现各个模块和功能,并进行相应的单元测试和集成测试以验证程序的正确性和稳定性。
测试结果将反馈给设计人员,有助于进一步修改和优化程序设计。
2.5 调试和优化控制程序的调试阶段是为了发现和修复程序中的错误和故障。
通过调试,可以验证控制程序的正确性和稳定性,确保它能够按照设计要求进行正常运行。
调试完成后,还需要对程序进行优化,以提高其效率和性能。
2.6 发布和维护当控制程序经过验证和优化后,可以正式发布和部署到目标系统中。
发布后,需要进行一定的维护和支持工作,包括对程序进行更新和修复,以及对系统进行性能监控和故障排除等工作。
3. 控制程序的关键技术和挑战设计和开发控制程序时,面临以下一些关键技术和挑战:3.1 并发和并行控制现代计算机系统中通常存在多个任务和进程同时运行的情况,控制程序需要能够有效地进行并发控制和并行计算,以实现多任务的协同工作和系统资源的高效利用。
跟模工程师岗位职责(32篇)跟模工程师岗位职责(精选32篇)跟模工程师岗位职责篇11、负责公司模具从新规到量产阶段的所有技术跟进工作2、了解成型工艺,懂模具加工工艺及流程,熟悉模具结构3、生产过程中常见的问题点能处理,能解决常见注塑缺陷4、能看懂图纸,对测量有一定理解,具备一定产品测量能力5、具有服务现场和改善量产性的意识;6、熟练使用办公软件与及模具制造常用软件;跟模工程师岗位职责篇21、负责模具及委外模具制作项目的过程策划,并跟踪项目进展,反馈相关数据;2、负责合格样品的送样及样品反馈工作;3、负责落实产品调整资料,跟进样品调整进度,并跟进修改模后试模验证;4、跟踪样品试模情况,及时反馈样品信息,回收外发模具返司后相关资料、物资;5、组织模具验收前样品评审,并开展模具验收的`相关工作;6、严格遵守公司、部门的各项规章制度、岗位标准流程;7、完成上级交办的临时任务与本部门的团队配合工作。
跟模工程师岗位职责篇31)独立解决跟进项目开发过程中的模具相关问题;2)试模,试产,量产模具的跟进,协助结构工程师进行模具问题检讨;3)解决壳料在相关测试过程中的问题;4)主导复制模的试模检讨及问题改进跟进,复制模的互配并给结构工程师样品确认,复制模试产验证物料的跟进。
跟模工程师岗位职责篇4职责:负责大数据数据仓库的建设,根据数据仓库及BI项目的需求,制定相关的设计方案和开发计划;参与数据的分析处理和数据统计内容的架构设计与研发;组织项目组成员完成数据仓库的开发和运维等;负责公司数据规范、数据标准、数据指标梳理与定义;协助技术人员完成数据管控平台的搭建,完成数据规范管理体系到信息平台的落地实施;组织开展对数据平台各模块的内容进行培训;制定和审计业务系统数据数据库模型设计规范;任职资格:有一定的互联网数据仓库经验;深入了解 Hadoop 生态系统,熟悉HBase、Hive、Storm、spark等大数据开发工具中一种或几种;具备大型数据仓库架构设计、模型设计、ETL 设计的相关经验;关系型数据库原理基础扎实,熟悉 MySQL/PostgreSQL等的使用和调优;有独立设计数据仓库经验、熟悉数据仓库相关理论知识者优先;跟模工程师岗位职责篇51、根据项目的需求,开发与新产品相关的电气技术,并完成电气设计相关的全流程工作;2、参加产品开发计划制定,实施产品开发电气设计完成产品电气元器件的验证及承认。
第4章结构化设计方法4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?在“编写”程序时并没有设计软件。
软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。
4.2 举出3个数据抽象的例子和可以用来操作这些数据抽象的过程抽象的一个例子。
抽象是忽略事物的细节,获取其本质特征的过程。
抽象是一种重要的机制,使人们能够对复杂系统能够很好地理解、交流和推理。
在软件领域,可以将抽象分为两类,即数据抽象和过程抽象。
在传统的结构化程序设计语言中,就提供了这两种抽象机制。
(1) 数据抽象:在所有的结构化程序设计语言中,用户都可以自定义抽象数据类型。
如定义抽象数据类型Student(学生)、Course(课程)、ClassScoreList(班级成绩单)。
(2) 过程抽象:过程抽象也称为是基于方法的抽象。
过程抽象使我们关心处理过程的名字和它能做什么,而无需知道如何完成所有实现细节。
如求班级总平均分average(ClassScoreList)就是一个过程抽象。
在面向对象的程序设计语言中,抽象与封装的概念密切相关,数据抽象和相关的过程抽象被封装在类中,不同类中相似的过程抽象(方法)又可以进一步抽象,放在接口中。
封装是保证事物有明确内外界限的机制。
内部是受保护的,与外部事物相隔离。
4.3 应在什么时候把模块设计实现为单块集成软件?如何实现?性能是实现单块集成软件的唯一理由吗?由于模块之间的调用降低了系统的运行速度,可能会导致满足不了用户的性能要求,这时就需要将软件设计为单块集成软件。
但是在设计时,最好按照模块化的原则进行设计,只是没有显式的模块定义而已。
这样的程序也具有模块化的优点。
性能是实现单块集成软件的唯一理由。
4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响?通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。
任务调度中心系统目录一、设计目的 (5)二、整体架构 (7)2.1 核心功能 (7)2.2 核心组件 (8)三、Job元数据 (8)四、JobClient (9)五、JobManager (Master) (9)5.1 RPCServer (9)5.2 数据库管理服务类 (10)5.3 资源管理服务 (11)5.4 Job依赖关系维护 (12)5.5 定时调度器 (12)5.7 告警服务 (13)5.8 初始化流程 (13)5.9 启动流程 (13)5.10 成功Job处理流程 (14)5.11 失败Job处理流程 (14)六、JobWorker (Slave) (14)6.1 存数据结构 (14)6.2 定期从获取可以运行的Job (14)6.3 执行Job (15)七、核心流程图 (15)7.1 Job维护流程 (15)7.2 Job依赖维护流程 (16)7.3 资源维护流程 (18)7.4 Job提交流程 (19)7.5 Job执行流程 (20)7.6 Job监控流程 (20)八、后台部署与运行 (22)8.1 安装 (22)8.2 数据库建库建表 (22)8.3 配置 (22)8.4 运行 (24)九、部署与运行 (25)9.1 安装 (25)9.2 配置 (25)9.3 运行 (26)一、设计目的●目前整个市场任务调度非常粗糙,基本仅靠Crontab来定时运行,日志清洗、日志校验、数据分析、入库各模块之间无有效依赖,经常由于前置任务出错或者未完成,后续的任务运行出错,并且对任务出错的监控不到位,造成分析数据不能及时入库,导致线上BUG。
●真实业务场景下合理的任务运行图:(图一)1.定时触发一个日志校验的Job,去检查清洗后的日志是否已经就绪;2.分析的JOB均依赖日志校验的Job,一旦日志校验的Job执行成功,则并发启动依赖其的分析Job1-4;3.入库JOB1依赖分析JOB1和分析JOB2,如果这两个分析JOB全部执行成功,则启动执行入库JOB1;4.对于入库JOB2,如果分析JOB3和分析JOB4有一个未成功执行,则入库JOB2就不执行;●一个复杂的任务依赖图:●为了解决数据平台分配任务的稳定性,时效性,因此设计开发任务调度中心系统,旨在解决任务的统一配置,统一调度,统一监控告警等功能,减少开发人员的开发和维护成本,提高平台的稳定性。
二、整体架构2.1 核心功能1.Job维护:添加、修改、删除、杀死Job;2.Job依赖关系维护:添加、修改、删除Job之间的依赖关系;3.查询类:查询Job列表、根据状态查询Job列表、查询Job的父子依赖等;4.资源维护:添加、修改、删除资源,查询资源列表;5.Job触发:支持定时、依赖、手工触发调度Job;6.任务失败告警:当任务失败或者某个时间点未成功结束时,触发和短信报警;7.支持任务类型包括:shell、python、MapReduce、Hive、DataHub任务的调度及监控;8.可扩展性:Slave(JobWorker)可根据需要随时扩充;2.2 核心组件1.元数据库:Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告警配置等;2.JobClient:客户端类,对外的唯一接口;3.JobManager:Master,提供RPC服务,接收并处理JobClient提交的所有操作;与元数据库通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控;4.JobMonitor: 监控正在运行的Job状态、监控任务池、监控等待运行的Job;5.JobWorker:Slave,从任务池中获取Job、负责启动并收集Job的执行状态,以心跳方式发送给JobManager;以上各组件下文中详细介绍。
三、J ob元数据元数据存储于Mysql 。
四、J obClient1.用户与系统交互的唯一接口;2.封装提供给用户使用的所有接口,单例模式,使用时候指定JobManager的RPC hostname和端口号;3.拥有JobManager的RPC代理,将用户提交的操作通过RPC调用JobManager的相应接口进行处理;4.提供的接口包括:●操作Job,包括增加,修改,删除,运行,杀死Job等;●维护Job依赖关系;●配置、查询资源;●查询Job信息,包括指定条件查询,如状态,JobID,时间等;●查询Job依赖;五、J obManager (Master)任务调度中心系统的Master节点,负责所有任务的调度,分发,状态跟踪,报警,资源管理等。
5.1 RPCServer●JobManager自身为一个RPCServer,为JobClient提供调用接口;●为JobClient提供的RPC接口:✓Job操作类接口:保存Job,根据JobID获取Job,获取所有Job,获取新的JobID,删除Job;✓Job依赖关系维护接口:添加、删除Job依赖,查询Job的父子依赖;✓查询类接口;查询正在运行的Job,查询Job的历史运行,查询一个时间段的Job等;✓维护类接口:停止JobManager,添加、修改、删除资源,获取资源列表;5.2 数据库管理服务类●JobStoreManager,封装所有与元数据库通讯的接口,用于Job元数据的持久化和查询。
●使用数据库池;●接口列表:5.3 资源管理服务●ResourceManager,负责Job资源的计算和分配;●资源包括:主机名/IP,可运行的任务类型,最大运行的任务数量;●初始化将资源配置表中已分配的Job数全部设为0;●资源申请流程:✓根据Job类型,首先从资源配置表中获取可以运行该类型Job的节点、最多可运行的Job数量、已分配出去的Job数量;✓从上面获取的节点中取(max_job_count – running_job_count)> 0,并按照(max_job_count – running_job_count)降序排列,取第一条记录;✓如果有返回主机名,表示有资源,则将该资源已分配Job数量+1;✓返回主机名;✓如果没有记录返回,则表示没有资源,返回null;●资源释放流程:✓根据传入的hostname和job_type,将资源配置表中该记录已分配Job数量-1;5.4 Job依赖关系维护●Neo4jService●使用Neo4j保存任务的依赖关系,供查询使用;●当Job的依赖关系发生变化时,需要在Neo4j中做相应的维护;5.5 定时调度器●QuartzService●维护定时运行的Job,当Job到达任务触发时间时,提交Job运行;5.6 Job监控●监控超时未成功执行的Job,触发告警(可依靠Quartz定时触发);●监控正在运行的Job列表,当Job长时间未更新时,做相应处理;●监控待运行Job队列,并尝试提交Job;●监控任务池,从任务池中删除被拿走的Job;5.7 告警服务●提供告警服务,目前只提供告警服务5.8 初始化流程●获取RPC host&port:从配置文件conf/master.xml中获取;●构建RPCServer;●初始化Neo4j服务;●从数据库中初始化加载所有Job;●从数据库中初始化job依赖;●初始化资源管理服务;●构建Quartz服务;5.9 启动流程●初始化;●启动jobManagerRPCServer;●registerShutdownHook;●启动Neo4j服务线程;●启动Quartz服务线程;●启动Job监控线程;5.10 成功Job处理流程●更新Job状态;●获取该Job的一级子Job,分别检查子Job的其他父Job,如果父Job全部完成,则提交该Job运行;如果有父Job未完成,则将该Job加入因前置Job未全部完成而等待运行的Job队列5.11 失败Job处理流程●更新Job状态;●告警;六、J obWorker (Slave)6.1 存数据结构●正在运行的JobExecutor列表;6.2 定期从获取可以运行的Job●定期从任务池获取可以运行的Job●定期汇总各个Job状态,并更新;6.3 执行Job●根据Job类型,构建相应的JobExecutor,执行并收集Job执行日志;七、核心流程图7.1 Job维护流程●添加、修改Job●删除Job7.2 Job依赖维护流程添加Job依赖删除Job依赖●添加、修改资源●删除资源●Job自动提交(定时触发和依赖触发)●Job手动提交(由JobClient提交)7.5 Job执行流程7.6 Job监控流程●监控任务池●监控等待运行的Job监控正在运行的Job八、后台部署与运行8.1 安装●解压●解压后目录结构:conf/ ##配置文件bin/ ##执行脚本lib/ ##第三方jar包Manager.jar ##核心jar包8.2 数据库建库建表●建库:●赋权:●建表:8.3 配置●conf/c3p0.propertiesc3p0数据库池。
●conf/mail.properties发送告警配置。
●conf/master.propertiesJobManager配置文件。
✓job_manager_rpc_host=172.16.0.1 //JobManager RPC运行主机ip ✓job_manager_rpc_port=2234 //JobManager RPC运行端口号✓job_monitor_scan_period=10 //JobMonitor扫描数据库时间间隔●conf/slave.propertiesJobWorker配置文件。
✓job_worker_scan_period=5 //JobWorker线程扫描数据库间隔,单位:秒✓job_log_dir=/usr/local/skynet/logs //JobWorker记录的日志路径✓job_worker_jetty_port=9911 //JobWorker中Jetty服务端口号,用于查看Job运行日志✓job_working_directory=/tmp/skynet/ //job执行工作目录,各用户必须有可读写权限,chmod –R 777 /tmp/skynet●bin/net.sh配置export JAVA_HOME=/usr/local/jre1.7.0_67●bin/monitor-net.sh系统监控脚本。
配置export JAVA_HOME=/usr/local/jre1.7.0_67配置maillist= //当系统运行异常时,发给管理员告警●开放相关端口访问权限job_manager_rpc_port、job_worker_jetty_port●配置环境变量NET_HOME,JAVA_HOME●数据库中配置初始数据dmp_job_buseinss_type //业务类型dmp_resource_config //资源dmp_user //用户、用于前端页面登陆和权限控制8.4 运行●运行JobManagerbin/net.sh start jm启动后,在net/下产生jm.log日志文件●运行JobWorkerbin/net.sh start jw启动后,在net/下产生jw.log日志文件●运行系统监控脚本bin/ monitor-net.sh启动后,在net/下产生monitor.log日志文件(5分钟刷新一次)8.5 停止●停止JobWorkerbin/net.sh stop jw●停止JobManagerbin/net.sh stop jm//会将JobManager和系统监控(monitor-net.sh)一起停止九、部署与运行9.1 安装●将net.war拷贝至$TOMCAT_HOME/ webapps/9.2 配置●开放8080端口●配置tomcat数据库池:$TOMCAT_HOME/conf/ context.xml<Resource name="jdbc/NetDB" auth="Container"type="javax.sql.DataSource"driverClassName=".mysql.jdbc.Driver"maxActive="50" maxIdle="10" maxWait="10000"username="net_reader" password="password"url="jdbc:mysql://172.16.0.1:3306/net"validationQuery='select 1'testWhileIdle='true'timeBetweenEvictionRunsMillis='8000'minEvictableIdleTimeMillis='10000'/>●配置后台服务信息:$TOMCAT_HOME/ webapps/net/WEB-INF/classes/ jm.propertiesjob_manager_rpc_port=2234job_manager_rpc_host=172.16.0.19.3 运行●运行tomcat即可。