首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种支持高并发的区块链请求处理系统与方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:西安电子科技大学

摘要:本发明公开了一种支持高并发的区块链请求处理系统与方法,包括缓冲模块、提交模块、区块链模块;所述缓冲模块负责接收、初步处理、缓存任务请求;提交模块负责进一步处理数据,并将部分任务提交到区块链模块当中,区块链模块负责保障数据安全,并能够一次性接收处理大量任务。本发明能够并发处理大量的请求,根据请求者的身份信息、请求的服务类型、服务对象名称以及操作类型,进行不同的操作。

主权项:1.一种支持高并发的区块链请求处理系统,其特征在于,包括缓冲模块、提交模块和区块链模块;所述缓冲模块负责接收、初步处理、缓存任务请求;提交模块负责进一步处理数据,并将部分任务提交到区块链模块当中,区块链模块负责保障数据安全,并能够一次性接收处理大量任务;任务请求是系统对外提供微服务的接口,外部根据接口要求发送http请求以获取服务,一条http请求称为一个任务;进一步处理数据是提交模块以多协程的方式调度任务,并根据不同的任务内容提供不同的服务;部分任务指需要调度区块链智能合约的任务,不需要调度区块链智能合约,在提交模块处理完毕;所述缓冲模块用于接收系统外部的请求,对请求进行初步的解析与处理,并且将请求放入缓冲池等待进一步的处理;缓冲模块由接收与处理子模块、工作池子模块,具体功能如下:1接收与处理子模块:当系统中的服务器接收到外部传来的http请求时,首先由接收与处理子模块对请求进行初步处理,处理的结果被保存为一个特定的结构体,之后再将此结构体放入到工作池中等待进一步的处理;2工作池子模块:在系统开始运行之初创建关于结构体Job通道,称为总工作池,总工作池中预设了大量的缓冲空间,使系统能够接收足够多的外部请求而不会丢失,工作池将会暂存Job信息,等待进一步的处理;所述提交模块负责将Job从工作池中批量读取出来,并将部分Job的请求内容以交易的形式提交到区块链进行进一步的处理,接收到区块链模块的处理结果后,根据Job当中的Context对http请求进行响应,通过Waitgroup唤醒Job对应的缓冲模块的协程,提交模块由调度人子模块、工人子模块构成,具体功能如下:1工人子模块:此模块由在系统开始运行时创建的多个工人协程构成,每个协程中对应一个关于Job结构体的通道,称为工作池,工作池预设一定数量的缓冲空间,用于缓冲正在处理的Job,同时每个工人协程都持有区块链智能合约的地址,这使得每个工人协程能够调用区块链智能合约所提供的接口;系统运行之初会创建N+1个协程,协程根据Go语言提供的gofunc接口来创建,func表示此协程需要执行的方法;其中N个协程称为工人协程,负责根据Job的内容提供不同的服务,每一个工人协程都创建了一个通道作为缓冲空间,里面可以缓冲一定数量的Job,这样的缓冲空间称为工作池,工作池的创建方法与总工作池相似,workerQueue:=makechanJob,QueueSize,其中workerQueue表示工作池实例,QueueSize表示一定数量的缓冲空间,用于缓冲Job,工作池与工人协程一一对应,工人协程处理对应工作池中的Job;另一个协程称为调度人协程,负责读取总工作池中的Job,并将Job放入空闲的工人协程的工作池,为了方便调度人协程完成Job的调度,需要对一些信息进行记录;信息包括:总工作池的地址、工人协程的数量以及一个关于Job的双重通道,将这些信息一一赋值到一个结构体内部,称为调度人结构体,其中关于Job的双重通道用来缓冲当前空闲的工人协程对应的工作池,由于其缓冲的数据类型是一个通道,因需要采用双重通道的结构,称为工人池;工人池随着调度人协程一起创建,工人池的创建方法与工作池的创建类似,都需要调用Go语言通道创建的接口,具体创建方法如下:workerPool:=makechanchanJob,maxWorkers;workerPool表示工人池实例,chanchanJob表示工人池是关于Job的双重通道,maxWorkers规定了工人池的容量,其大小取决于工人协程总数量;2调度人子模块:此模块由在系统开始运行时创建的一个调度人结构体构成,此结构体中包含着总工作池的地址、工人协程的数量以及一个关于结构体Job的双重通道,工人池的容量大小取决于工人协程总数量;所述工人子模块中,一个工人协程当其工作池为空时,会进入阻塞状态,直到工作池加入新的Job,当其工作池不为空时,会读取工作池中全部的Job进行处理,具体处理过程分为两个部分进行;第一部分,对于不需要调度区块链智能合约的一些Job请求,直接在服务器节点进行处理,并不需要与区块链节点进行交互,工人协程按照其Job的内容,进行处理,并将处理结果进行记录;第二部分,对于需要调度区块链智能合约,工人协程对每个需要与区块链节点进行交互的请求添加到一个Job数组当中,工人协程在依次处理完工作池中的其他Job之后,将Job数组转换为符合区块链智能合约接口的格式;在全部Job都处理完成之后,工人协程首先会根据各个Job的http环境信息对各个http请求进行响应,接着通过各个Job的Waitgroup唤醒Job对应的缓冲模块的协程,最后清空工人协程工作池中的全部Job,并重新加入到调度人的工人池当中,进入阻塞状态,等待唤醒;所述调度人子模块中,工人池的第一层通道用于缓冲当前空闲的工人协程对应的工作池,第二层通道用于缓冲Job;工人池的作用是缓冲当前空闲的工人协程,并获得工人协程对应的工作池地址,当工人池不为空且总工作池中存在足量任务时,弹出一个工作池,将Job放入到对应的工作池当中,工人协程此时进入工作状态,按照工人子模块所述方式处理任务,并且由于其工作池已经被弹出,所以调度人也不会再将Job放入其中,直到工人协程完成任务后重新加入到调度人的工人池当中,准备执行下一次的任务;系统开始时会创建一个调度人协程,该协程从创建开始就执行以下步骤:若总工作池Job数量不足100或工人池为空时,协程阻塞;若总工作池Job数量不少于100并且工人池不为空时,调度人协程从总工作中取出100数量的Job,并从工人池弹出一个工人的工作池,将Job放入其中。

全文数据:

权利要求:

百度查询: 西安电子科技大学 一种支持高并发的区块链请求处理系统与方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。