N久没写东西了,贴下最近项目我那块的系统设计,主要是一个任务体系,用于执行可动态配置的不同算法。其中算法均运行于hadoop环境。任务框架的要求是,每种算法可配置,算法各个步骤可配置,算法结果可校验,算法结果可保存。并且提供对算法执行过程的管理、监控、异常获取、异常重做。
整个体系分为两块,一块是算法调度,即为,动态控制算法执行时间,主要用quartz框架实现。一块为算法执行,主要是自己用线程池实现。
所有算法配置的信息,由用户(算法工程师)设定,通过页面设置后存入数据库。当算法被调度以后,交由执行模块去运算。其中,每个运算,都与DB在交互,将实时信息写入DB中。
废话不多说,先上图:
上图为执行模块的整体架构,总体上是一个生产者/消费者模式。其中所有执行的信息,均存在DB中。总共涉及到4个环境,DB + 应用 + 网关 + hadoop。
所有执行的step信息,都在DB中通过状态位来控制执行,具体表现为:waiting(等待执行),executing(执行中),exception(异常),over(正常执行结束)。step会分为多个类型,比如:普通步骤类型、索引生成类型、校验类型等待。每个不同的类型会对应不同的task。
生产者的角色主要是PoolThread来扮演,PoolThread是一个不死轮询线程,每10s去轮询DB,将DB中所有等待执行的step信息获得。所有步骤获得后,都在TaskFactory中生产处对应的task。所有task,根据具体信息不同,通过RunnerFactory,分别注入对应的Runner之中。最终将所有的runner都放入线程池中运行。
消费者的角色主要由线程池来扮演,ThreadPool获得runner以后,会按顺序执行Runner的before(),callTask(),after()。如果过程中出现任何异常,这会被handleException()捕获到。执行过程中执行状态,执行内容,执行结果都会实时刷新到DB中。以便监控、管理、重做。
其中,Task与Runner完全独立。Runner主要负责任务的流转。Runner中做前置后置通知,调用注入其中的task。运算什么样的内容,完全不关心。具体表现为,在before()中做校验,对执行内容加锁。在callTask()中调用task。在after()中,控制任务下一步流转到哪儿去。Task则相反,只负责执行具体内容,会由Task内部的execute()具体执行。Task只完成自己一个单独节点任务。既不关心上一步,也不关系下一步,流转等任何问题交由Runner负责。
类图过于复杂,不画了…….
所有与hadoop的交互,都由一台独立的网关机器来交互。在此台网关上,启动了Thrift、Jetty的两个Server,提交job,操作hdfs等,均由Thrift来做。另外启了一个jetty的Server,主要负责通过http请求,完成文件的操作。
所有在云梯上的执行的m/r、hive sql执行的结果,会根据DB中不同的配置,会将结果数据存在k-v系统 or 文件系统 or 索引中 or ……之中。
另外一个时间调度模块,下次再写了……
分享到:
相关推荐
采用Forth虚拟机技术,对基于Forth虚拟机架构的嵌入式操作系统关键技术进行探索,提出一种具有良好扩展和移植特性且高效精简的基于Forth虚拟机的嵌入式多任务操作系统体系架构。该架构采用分类存储映射、Forth向量...
云计算数据服务中心的巨大能源消耗成为其发展的绿色挑战, 提出了基于能源感知的高级云体系架构, 并对此体系架构进行深入研究。提出了基于服务器集群预留机制的动态分配策略, 并以电力消耗为例进行建模, 通过分析电力...
最后以PetStore为例,简单阐述怎样应用该模式在实际的J2EE系统之中.1层体系架构模式层(layer)体系架构模式就是把应用系统分解成子任务组,其中每个子任务组处于一个特定的抽象层次上。1.1概述层架构模式组织成一个...
可用可伸缩架构实用经验谈;专题|Topic;深入浅出 Mesos(三):持久化存储和容错;深入浅出 Mesos(四): Mesos 的资源分配.; 戏(细)说 Executor 框架线程池任务执行全过程(上);戏(细)说 Executor 框架线程池...
在过去的几年中,在成功完成以前的GRACE和当前的GRACE后续卫星任务... ST-FGM和PI-FGM任务体系结构分别相对于GRACE式编队整体提高了约80倍和60倍,而相对于GRACE样结构则分别提高了约2.4倍和1.8倍。使用高斯滤波器在
天津市水稻产业技术体系创新团队岗位专家及试验站建设架构及目标任务【模板】.pdf天津市水稻产业技术体系创新团队岗位专家及试验站建设架构及目标任务【模板】.pdf
天津市水稻产业技术体系创新团队岗位专家及试验站建设架构及目标任务【模板】.docx天津市水稻产业技术体系创新团队岗位专家及试验站建设架构及目标任务【模板】.docx
这几款处理器均基于革命性的英特尔酷睿微体系架构,并采用65纳米制程工艺。随着这两个处理器系列的正式发布,英特尔从高端到低端的全线产品已经完成了向酷睿微体系架构的过渡。国内外领先企业方正、海尔、神舟、七喜...
多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过...
小程序 毕业设计,小程序 课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、...
又拍网架构中的消息,任务系统(赵钟秋).pdf 国家级基础信息库交换系统架构设计(潘雪梅).pdf 基于Hadoop平台的亿贝用户邮件数据分析(苏立).pdf 基于中间件技术平台构建企业化电子商务系统(黄浩).pdf 基于事件驱动...
为提升网络仿真性能,面向虚拟化与数字仿真融合的网络仿真体系架构,研究相应的网络仿真任务划分方法。综合考虑虚拟化与数字仿真各自优势,将网络拓扑分为虚拟化拓扑区域与数字仿真拓扑区域,结合给定物理资源,以...
人工神经网络分段卷积神经网络是NLP中用于任务的一种架构。 在句子嵌入上应用一种传统的单层卷积可以捕获n-gram特征。 在最大池化之后,仅返回最强的功能,这对于关系提取任务是不够的。 PCNN体系结构根据实体位置将...
简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小,高度自动化,响应速度快等特点,特别适合于要求实时和多任务的体系.嵌入式系统主要由嵌入式处理器,相关支撑硬件,嵌入式...
OmniNet:用于多模式多任务学习的统一架构 OmniNet是用于多模式多任务学习的Transformer体系结构的统一和扩展版本。 单个OmniNet体系结构可以对几乎任何现实领域(文本,图像,视频)的多个输入进行编码,并能够跨...
1. 架构语言ArchiMate 架构视角Viewpoint分类框架 实现和维护一个一致的架构是一件非常复杂的任务因为架构会涉及到很多 不同背景的人员他们使用不同的标记。为了处理这种复杂性研究人员开始关 注如何...
论文首先讨论了高层体系结构HLA的架构组成和基于 HLA的联邦开发流程,提出了基于HLA架构的无人机飞行仿真系统的设计思路以及模型对象的设计方案。然后详细概述了无人机飞行仿真数学模型的建模步骤和实现方法,利用 ...
采用宏观体系工程和微观ICS(事故指挥系统)体系框架结合的方法,从4个基本层次(体系的目标使命、体系的服务、系统的目标和系统的行为)的6个方面(使命、任务、作战能力、作战体系、平台/设施和系统)构建了一种矿山应急...