一种云操作系统总线及通信方法与流程

文档序号:12755921阅读:196来源:国知局
一种云操作系统总线及通信方法与流程
本发明涉及云计算技术领域,具体的说是一种支持有状态构件集群化的云操作系统总线及通信方法。

背景技术:
随着云计算的兴起,传统的数据中心正在迅速向云数据中心转型。在数据中心从初级形态向高级形态演进的物理资源基础整合、物理与应用虚拟化整合、自动化集中管理、数据中心协同服务四个阶段中,云操作系统发挥着重要作用。云操作系统承担着对上接口应用、对下调度管理硬件的中间功能,将大量的异构设备融合为标准统一的逻辑资源池,动态调度给云应用,完成对终端的服务。云操作系统对应用和硬件的兼容性决定了整个云数据中心的开放融合程度。云操作系统必须考虑对不同厂商软、硬件的兼容性,同时要考虑到云计算应用功能和非功能需求不断变化的实际,便于第三方基于云操作系统平台进行应用的系统优化和二次开发。因此,云操作系统一方面需要采用广泛兼容的开放架构,既考虑对第三方软、硬产品的兼容性,也将第三方二次开发纳入其中,提供了完善、标准的接口API,另一方面,更要采用构件化、可扩展的系统设计,使资源虚拟化、资源调度、运维管理、计量计费、自助服务等功能构件可自由组合,按需部署,同时采用可扩展性系统设计,便于增值构件的开发和动态伸缩,满足用户个性化需求。已有云操作系统采用消息队列或消息中间件方式建立松耦合、构件化的体系结构。然而,基于消息队列的架构缺乏系统级的构件高可用性支持,需要构件自行考虑高可用方案,既加重了构件的开发负担,也加重了构件处理节点的系统开销。遵循高内聚低耦合的软件设计原则,从中间件层面针对构件建立支持处理节点集群的消息队列,可以保障构件的高可用性和高效性,但现有的消息中间件基于构件的无状态行假设设计,缺乏针对读写分离机制和负载均衡策略,并且缺乏对构件及其处理节点的管理和监控机制,从而无法实现对有状态构件处理集群的高可用和高性能支持。

技术实现要素:
本发明的技术任务是解决现有技术的不足,提供一种云操作系统总线及通信方法。本发明的技术方案是按以下方式实现的,该一种云操作系统总线,其结构包括队列管理模块、均与队列管理模块相连接的构件管理模块和集群监控模块,其中构件管理模块负责云操作系统各组成构件的注册、删除、修改和查询;队列管理模块负责根据构件信息建立、删除和调整构件服务的消息队列;集群监控模块负责检测构件各处理节点的加入和退出、失效和苏醒,并将所述检测信息发送给队列管理模块。所述构件管理模块中进一步对各构件的服务操作进行区分,设定其为幂等或非幂等,其中所述幂等操作属于无状态操作,在同一状态下每次执行的结果相同;所述非幂等操作属于有状态操作,同一状态下每次执行的结果不同。所述队列管理模块为每个构件建立一个读写分离队列组,其具体建立结构为:建立一个写操作主题,构件的每个处理节点向写操作主题订阅写操作;根据构件处理节点数建立若干个读操作子队列,构件的每个处理节点向其中的一个队列订阅读操作。所述节点的加入是指为构件添加一个处理节点;节点的退出是指为构件撤销一个处理节点;节点的失效是指构件的一个处理节点不可用;节点的苏醒是指构件一个不可用处理节点恢复可用。所述队列管理模块根据节点监控模块发送的信息调整队列结构,其具体调整方法为:当节点加入事件发生时,在队列组中为建立一个读操作队列,该节点向该队列订阅读操作,并向写主题订阅写主题;当节点退出事件发生时,删除该节点对应的读队列,关闭该节点对写主题的订阅;当节点失效事件发生时,停止向该节点对应的读队列发送读操作请求,在写主题中保留写操作;当节点苏醒事件发生时,在写主题中保留写操作同步写操作,恢复向该节点对应的读队列发送读操作请求。一种基于云操作系统总线的通信方法,其具体实施步骤为:所述队列管理模块根据服务操作请求的类型进行路由,其中非幂等操作发送到唯一的写队列;幂等操作根据负载均衡策略发送到根据处理节点数建立的读队列。所述读操作负载均衡策略的具体过程为:1)根据构件的配置信息计算节点的处理能力;2)根据读写队列组规模计算各节点的负载;3)根据各节点的负载和处理能力计算各节点的负载程度;4)选择负载程度最小的节点进行路由。本发明与现有技术相比所产生的有益效果是:本发明的一种云操作系统总线及通信方法对组成构件及其处理节点进行管理和监控,并对构件各处理节点对应的队列组进行读写分离和负载均衡,解决现有松耦合云操作系统中有状态构件的高可用性和高效性等集群化问题,完善了松耦合、构件化的云操作系统体系结构,通过支持有状态构件的高可用性和和负载均衡保障了云操作系统的整体可用性。附图说明附图1是本发明的云操作系统总线构架图。附图2是本发明的队列组读写分离示意图。附图3是本发明的读操作路由算法流程图。附图4是本发明的数据写入时序图。附图5是本发明的节点状态转换图。附图6是本发明的队列结构调整流程图。具体实施方式下面结合附图对本发明的一种云操作系统总线及通信方法作以下详细说明。一种云操作系统总线的结构如图1、图2所示,该云操作系统总线构架支持有状态构件集群化,其结构包括如下模块:构件管理模块,负责管理各组成构件的元数据信息,支持注册、删除、修改和查询等构件管理操作。其中,构件是一个三元组{名称、服务集合、访问地址、描述};服务是一个四元组{名称,消息协议,参数列表,key名称,功能描述,非功能描述}。构件管理模块中进一步对各构件的服务操作进行区分,设定其为幂等或非幂等,其中,幂等操作属于无状态操作,在同一状态下每次执行的结果相同;非幂等操作属于有状态操作,同一状态下每次执行的结果不同。队列管理模块,负责根据构件信息建立、删除和调整构件的消息队列组。消息路由器,负责根据路由信息向所述队列组分发消息。集群监控模块,负责检测构件各处理节点的加入和退出,获取处理节点的配置信息,并对各节点的数据状态进行控制。构件处理集群,负责实现构件的具体服务功能,由若干个处理节点组成。构件客户端,负责发起对构件服务的使用请求。完成图1所示的构架后,如图2所示,所述队列管理模块为每个构件建立一个读写分离队列组。其中构件注册时,系统总线为构建分配用户名user、密码psw以及唯一的构件id,处理节点的接入过程为:1)处理节点在合适的时候向地址为url的消息总线发起接入请求,代码为:connection=ConnectionFactory.createConnection(user,psw,url);session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);2)消息总线验证接入节点的用户名、密码和id,如验证通过,建立连接。3)建立一个写操作主题,构件的每个处理节点向写操作主题订阅写操作。write_topic=session.createTopic(id+"WRITE_TOPIC");write_topic_consumer=session.createConsumer(write_topic);4)处理节点在writeTopicListener的onMessage方法中实现具体的写操处理功能,并向消息总线注册。write_topic_consumer.setMessageListener(writeTopicListener);write_topic_consumer.listen();5)根据构件处理节点数建立若干个读操作子队列,构件的每个处理节点向其中的一个队列订阅读操作,若尚不存在对应构件id的队列组,则消息总线新建该队列组;若已存在,则消息总线在队列组中增加一个队列。read_queue=session.createMultiQueue(id+"READ_QUEUE");read_queue_consumer=session.createConsumer(read_queue);6)处理节点在readQueueListener的onMessage方法中实现具体的读操处理功能,并向消息总线注册。read_queue_consumer.setMessageListener(readQueueListener);read_queue_consumer.listen();在上述读写分离队列组基础上,本发明实例提供了一种保障有状态构件集群高可用、高性能的系统总线通信方法,包括:所述队列管理模块根据服务操作请求的类型进行路由,其中,所述非幂等操作发送到唯一的写队列;所述幂等操作根据负载均衡策略发送到根据处理节点数建立的读队列。其中,读操作负载均衡流程如图3所示,过程为根据构件的配置信息计算节点的处理能力;1)若节点i的CPU频率、内存容量和I/O带宽的配置信息分别为Ci,Mi和Bi,集群的各种资源配置为节点各种资源之和即C=∑Ci,M=∑Mi,B=∑Bi则节点i的CPU频率权值为WiCPU=Ci/C,内存容量权值WiRAM=Mi/M,I/O带宽权值WiIO=Bi/B。若构件服务处理所需资源各种资源比例分别为pCPU,pRAM,pIO,则节点i的处理能力Wi=pCPUWiCPU+pRAMWiRAM+pIOWiIO2)根据读写操作权值计算各节点的负载。若读队列Lr同写队列Lw的读写操作开销比a;则节点i的负载Li=LRi+aLW;各节点的负载状态Si=Li/Wi。3)选择负载最轻的节点进行路由。写操作采用流水化方式进行,以提高数据写入效率,如图4所示,其过程为:第一个节点首先写入数据,写入一个数据分片(64KB)后,在继续接收数据的同时向第二节点转发已写入的64K数据,第二节点至第N节点以相同方式接收和转发数据,直到第N节点写入最后一个数据分片(不超过64KB)。在上述云操作系统总线架构基础上,所述节点监控模块进一步将构件处理节点的加入、退出、失效和恢复事件发送给所述队列管理模块,节点状态转换关系如图5所示,其中,所述节点加入事件是指为构件添加一个处理节点。所述节点退出事件是指为构件撤销一个处理节点。所述节点失效事件是指构件的一个处理节点不可用。所述节点苏醒事件是指构件一个不可用处理节点恢复可用。所述队列管理模块进一步根据所述节点监控模块发送节点加入、退出、失效、恢复事件调整队列结构,调整流程如图6所示,其中,当节点加入事件发生时,在队列组中为该节点建立一个读操作队列,该节点向该队列订阅读操作,并向写主题订阅写主题。当节点退出事件发生时,删除该节点对应的读队列,关闭其对写主题的订阅。当节点失效事件发生时,停止向该节点对应的读队列发送读操作请求,在写主题中为该节点保留写操作。当节点苏醒事件发生时,在写主题中保留写操作同步写操作,恢复向该节点对应的读队列发送读操作请求。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1