一种基于SOA大并发高性能工作流程服务器系统技术方案

技术编号:10894501 阅读:146 留言:0更新日期:2015-01-09 17:27
一种基于SOA大并发高性能工作流程服务器系统,由服务请求组包和分发模块、工作流数据准备模块、工作流服务执行模块、工作流处理结果缓存模块组成,其连接关系为:服务请求组包和分发模块,工作流服务执行模块,工作流处理结果缓存模块依序连接,工作流处理结果缓存模块经过数据库与工作流数据准备模块连接,工作流数据准备模块与工作流服务执行模块相连。本发明专利技术充分利用并发技术,阵列多处理器,创新的技术来实现高性能和大并发工作流服务器,大大降低了对服务器硬件自身性能的依赖性,减少了处理响应时间和等待周期。

【技术实现步骤摘要】
—种基于SOA大并发高性能工作流程服务器系统
本专利技术涉及面向服务架构(SOA)的大并发高性能工作流服务器技术,实现并行工作流程引擎,超大并发极限用户规模应用场景,并可以持续不停机的扩展服务器能力。
技术介绍
企业级的工作流程服务系统,在高并发场景下,依赖于数据库的性能,这导致超大规模用户应用场景中,处理响应时间和等待周期都相当长。对于有对响应要求较高的企业应用业务场景,比如缴费,客户服务等,加快系统处理流程,减少排队时间,提高用户满意度至关重要。传统工作流系统和工作流引擎纯粹依赖软件优化,依赖于服务器硬件自身性能,扩展和提高非常有限。本专利技术充分利用并发技术,阵列多处理器,创新的技术来实现高性能和大并发工作流服务器,填补此项空白。
技术实现思路
传统服务器采用请求队列阻塞方式,多线程的处理请求,这样讲导致在多个任务切换的过程中,中处理器将从阻塞状态恢复到运行状态。这种切换虽然是纳秒级别的,当并发到10000个请求连接,也将使得操作系统在内核和用户态之间频繁切换,大大降低了处理器能够并发的上限响应能力。 本专利技术采用下列技术方案来实现。 一种基于SOA大并发高性能工作流程服务器系统,由服务请求组包和分发模块,工作流数据准备模块,工作流服务执行模块,工作流处理结果缓存模块组成,其连接关系为:服务请求组包和分发模块,工作流服务执行模块,工作流处理结果缓存模块依序连接,工作流处理结果缓存模块经过数据库与工作流数据准备模块连接,工作流数据准备模块与工作流服务执行模块相连;其中:所述的服务请求组包和分发模块使用C语言在多个高速网络接口计算机或者路由器上编写,充分利用带宽和处理器缓存,容纳大量的请求,并使用非阻塞的组包处理方式,所有请求都在RAM中处理完毕;工作流服务执行模块使用一个主处理的硬件CPU,配合多个核心的通用并行处理硬件组GPU,包括以下操作:O主处理器负责将已经就绪的流程依赖的数据对齐组装;2)按照请求包的流程关系对应好并行处理器GPU;3)控制GPU执行,多核心的并行可扩张GPU,保证执行速度高于数据库存储速度;4)将返回结果整理插入到哈希表中。 数据对齐组装程序结构如下:①数据准备模块来的聚合数据,将根据GPU不同要求,进行对齐组装,以取得较高的GPU执行率,对齐操作根据操作系统和内存边界的要求进行,alignmentReadyBuffer函数完成对齐检查; ②请求包的流程关系由缓存流程定义的WOTkFloWDefHash中获得,并作为GPU执行kernel的参数传递;③GPU控制执行程序调用GPU,并将返回结果缓存到哈希表woriiFlowResultHash,以提供工作流处理结果缓存模块做数据缓存和持久化。 CPU部分的代码使用C编写,GPU并行处理部分的虚拟机代码使用OPENCL编写。 此模块程序结构和源代码摘要如下:初始化GPU #include 〃CL\cl.h〃 #include <std1.h> #include <stdlib.h> #include <malloc.h> int InitOpenCL ( const char 氺program—source, cl—uint氺 alignment, const unsigned int map_size, unsigned int vector—width, const unsigned int gpu_algo, const unsigned int platform—num, const unsigned int dev—num); int InitOpenCL(const char 氺program—source, cl—uint氺 alignment, const unsigned int map_size, const unsigned int gpu_algo, const unsigned int platform—num, const unsigned int dev—num) { g—algo = AUTO;switch(gpu—algo) {case 0: g—algo = WORK—FLOW—START;break;case 1: g—algo = WORK—FLOW—TRANSFER;break;case 2: g—algo = WORK—FLOW—SPAWN;break;case 3: g—algo = WORK—FLOW—END;break; } g_group_size = 4;g—device—num = dev—num; cl—device—id devices[MAX—GPU—NUM]; //cl—uint size—ret = 0;cl_int err; cl_pIatform—id ocl_platform_id = GetOCLPlatform(platform—num/*dev_ num*/); if ( ocl—platform—id == NULL ) { printf (〃ERR0R: Failed to find available OpenCL platform.\n〃);return -1; } char ocl_vers1n_info[256] = { 0 }; err = cIGetPlatformInfo(ocl—platform—id, CL—PLATFORM—VERS1N, sizeof(ocl_vers1n_info)-1, ocl_vers1n_ info, NULL); if ( err != CL—SUCCESS ) { printf(ERROR[%d]: Failed to retreive platform %d’s Opencl vers1ninf0.\n' err, platform—num);return -1; }else { printf (Opencl vers1n of platform %d: %s\n〃,platform—num,ocl_vers1n_info); } cl—uintnumDevices = 0; cl—uintnumGPUDevices = 0; clGetDevicelDs (ocl—platform—id,CL—DEVICE—TYPE—GPU,0,NULL,&numDevices); if(numDevices == 0) //no GPU available.{ puts(〃Error: No any GPU devices available in platform! \n〃);return I; }else {err = clGetDevicelDs (ocl—platform—id,CL—DEVICE—TYPE—GPU, numDevices,devices, &numGPUDevices);if (err != CL—SUCCESS) { printf (ERROR [%d]: Failed to get GPU device’本文档来自技高网...

【技术保护点】
一种基于SOA大并发高性能工作流程服务器系统,其特征在于,由服务请求组包和分发模块、工作流数据准备模块、工作流服务执行模块、工作流处理结果缓存模块组成,其连接关系为:服务请求组包和分发模块,工作流服务执行模块,工作流处理结果缓存模块依序连接,工作流处理结果缓存模块经过数据库与工作流数据准备模块连接,工作流数据准备模块与工作流服务执行模块相连;其中:服务请求组包和分发模块使用C语言在多个高速网络接口计算机或者路由器上编写,充分利用带宽和处理器缓存,容纳大量的请求,并使用非阻塞的组包处理方式,所有请求都在RAM中处理完毕;工作流服务执行模块使用一个主处理的硬件CPU,配合多个核心的通用并行处理硬件组GPU,包括以下操作:1)主处理器负责将已经就绪的流程依赖的数据对齐组装;2)按照请求包的流程关系对应好并行处理器GPU;3)控制GPU执行,多核心的并行可扩张GPU,保证执行速度高于数据库存储速度;4)将返回结果整理插入到哈希表中;CPU部分的代码使用C编写,GPU并行处理部分的虚拟机代码使用OPENCL编写;工作流数据准备模块,完成对所有流程定义的数据预取和缓存,流程定义和流程状态数据相对都是稳定的,为了提速处理过程,这些数据只有在发生改变的时候才从数据库读取,所有工做流依赖的数据将缓存在哈希表中,保证工作流服务执行模块随机访问的速度;包括以下操作:1)对未就绪的数据加锁,将所有未在哈希表中的请求流程的定义数据读取并存储到哈希表;2)将有外界依赖的数据单独抽取处理;3)将已经就绪的数据解锁;4)将超时的数据和请求返回客户端;工作流处理结果缓存模块,完成将工作流结果缓存在高速的SSD整列中,当处理器空闲的时候,将数据解包,按照不同流程实例回写到数据库,并将请求结果传递会客户端;包括以下操作:1)对流程执行结果以包的形式批量写入SSD固态硬盘存储;2)判断主处理器是否已经调度完GPU,空闲后将流程结果解包;3)判断主处理器是否空闲,将流程结果提交到数据库;4)提交成功,将流程结果返回到客户端;5)将超时的数据和请求返回客户端。...

【技术特征摘要】
1.一种基于SOA大并发高性能工作流程服务器系统,其特征在于,由服务请求组包和分发模块、工作流数据准备模块、工作流服务执行模块、工作流处理结果缓存模块组成,其连接关系为:服务请求组包和分发模块,工作流服务执行模块,工作流处理结果缓存模块依序连接,工作流处理结果缓存模块经过数据库与工作流数据准备模块连接,工作流数据准备模块与工作流服务执行模块相连;其中: 服务请求组包和分发模块使用C语言在多个高速网络接口计算机或者路由器上编写,充分利用带宽和处理器缓存,容纳大量的请求,并使用非阻塞的组包处理方式,所有请求都在RAM中处理完毕; 工作流服务执行模块使用一个主处理的硬件CPU,配合多个核心的通用并行处理硬件组GPU,包括以下操作: 1)主处理器负责将已经就绪的流程依赖的数据对齐组装; 2)按照请求包的流程关系对应好并行处理器GPU; 3)控制GPU执行,多核心的并行可扩张GPU,保证执行速度高于数据库存储速度; 4)将返回结果整理插入到哈希表中; CPU部分的代码使用C编写,GPU并行处理...

【专利技术属性】
技术研发人员:于晓义詹卫许易勇强董灿吴方权陈彬胡俊杨陈晓洪王勇
申请(专利权)人:中国南方电网有限责任公司云南云电同方科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1