Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COMPONENT ORIENTED HYBRID CLOUD OPERATING SYSTEM ARCHITECTURE AND COMMUNICATION METHOD THEREOF
Document Type and Number:
WIPO Patent Application WO/2015/024368
Kind Code:
A1
Abstract:
Provided are a component oriented hybrid cloud operating system architecture and a communication method thereof. Based on a hierarchical model, an object model and a message model, a hybrid architecture is established. An idea of components orientation is adopted to manage components and processing environments thereof. On this basis, highly efficient routing, read-write separation and load balancing are conducted on a component processing cluster, so as to satisfy the demands of open compatibility, loose coupling and expandability for a cloud operating system, thereby solving the self-management problem of the existing cloud operating system, the problem of horizontal retraction of components and the problem of high availability of stateful components. Compared with the prior art, the component oriented hybrid architecture proposed in the present invention perfects the component-based cloud operating system architecture with open compatibility, expandability and loose coupling, and ensures the retractility and high availability of the cloud operating system by means of the communication method for a horizontal retraction cluster and a high availability cluster of the components.

Inventors:
WANG ENDONG (CN)
ZHANG DONG (CN)
LIU ZHENGWEI (CN)
QI KAIYUAN (CN)
LIU JUNPENG (CN)
GUO FENG (CN)
LIU CHENGPING (CN)
GAO FEI (CN)
ZHU BO (CN)
Application Number:
PCT/CN2014/071233
Publication Date:
February 26, 2015
Filing Date:
January 23, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INSPUR ELECTRONIC INFORMATION INDUSTRY CO LTD (CN)
International Classes:
H04L29/08; G06F9/445
Foreign References:
CN103442049A2013-12-11
CN102521022A2012-06-27
CN102970332A2013-03-13
Other References:
LI, MINGJIE: "INSPUR IN -CLOUD OS V2.0 PRODUCT ANALYSIS(VOLUME 1", SCIENCE & TECHNOLOGY INSPUR, vol. 1, no. 4, 30 April 2012 (2012-04-30), XP008176083
See also references of EP 2899947A4
Attorney, Agent or Firm:
BEIJING HUIZE INTELLECTUAL PROPERTY LAW LLC (CN)
北京汇泽知识产权代理有限公司 (CN)
Download PDF:
Claims:
权利要求书

1、 一种面向构件的混合型云操作系统, 其特征在于基于层次、对象和消息 模型建立混合型架构, 并采用面向构件思想对组成构件及其处理环境进行管理, 在此基础上, 对构件处理集群进行高效路由、 读写分离和负载均衡, 满足对云 操作系统地的开放兼容、 松耦合和可扩展需求, 解决现有云操作系统的自管理 问题、 构件水平伸缩问题和有状态构件的高可用问题, 从层次模型角度, 系统自上至下分为门户层、 逻辑层、 适配层和实现层, 各层相对独立, 通过在各层分别定义标准接口增强开放性, 通过在各层适配不 同功能实现增强兼容性;

从对象模型角度, 云操作系统由云门户、 云管理门户、 云资源管理、 监控 管理、计量计费、业务审批、授权认证功能模块组成, 各功能组件通过基于 Rest 消息的调用进行通信, 可自由组合, 按需分布部署, 并且可根据需求增值开发 新模块, 通过在逻辑层的不同模块间实现互操作增强平台的可扩展性, 在实施 例中, 最小化安装的云操作系统仅由云门户、 云管理门户和云资源管理模块组 成, 在此基础上, 监控、 计费、 审批或其他模块按需定制和扩展, 通过基于 Rest 消息的调用进行通信, 按需分布部署和增值开发, 通过在逻辑层的不同模块间 实现互操作增强系统的可扩展性; 引入基于消息的通信方式支持异步调用, 使 用消息通信接口 JMS传输 Rest消息, 使系统架构进一步解耦, 在此基础上, 采 用面向构建设计, 构件管理门户负责管理构件的元数据并对其运行状态进行监 控;

对象架构虽然能够实现按需扩展和分布部署, 但属于 RPC (Remote Process Call)同步通信方式,发送端等待接收端返回后才能继续执行,双方进程紧耦合, 随着系统的扩大化和复杂化, 构件之间的关联关系过于复杂, 针对此问题, 在 对象架构的基础上引入基于消息的通信方式, 使用消息通信接口 JMS传输 Rest 信息, 使得发送和接收端生命周期可以不同, 并支持异步调用, 使系统架构进 一步解耦, 在实施例中, 门户和云资源层之间的虚拟机开启、 关闭、 挂起、 关 闭等操作通过异步方式实现, 门户发出命令后无需等待响应即可返回, 提升了 用户交互效果;

基于上述混合型架构的云操作系统能够满足开放兼容和扩展需求, 在此基 础上, 基于面向构建设计思想, 构件管理门户负责管理构件的元数据信息, 支 持注册、 删除、 修改和查询等操作, 其中, 构件是一个三元组包括: 名称、 服务集合、 访问地址、 描述; 服务是一个四元组, 包括: 名称、 类型、 消息协议、 参数列表、 key名称、 功能描述、 非功能描述; 除对构件进行描述和管理, 构件管理模块进一步对其处理环境进行监控, 为保障构件的可伸缩性和可用性提供基础服务, 完善云操作系统的自管理能力, 在构件注册时,系统为其分配用户名 user、 密码 psw以及唯一的构件 id,之后构件 处理集群的接入过程为

1 ) 处理集群向地址为 url的系统总线发起接入请求, 系统总线验证接入节 点的用户名、 密码和 id, 如验证通过, 建立连接, 代码为:

connection=ConnectionFactory.createConnection(user,psw,url);

2) 建立一个写操作主题, 构件的每个处理节点向该主题订阅写操作; write_topic=session.createTopic(id+"WRITE_TOPIC");

write_topic_consumer=session.createConsumer(write_topic);

3 )构件在 writeTopicListener的 onMessage方法中实现写处理, 并向系统总 线注册;

write— topic— consumer. setMessageListener( writeTopicListener);

4) 根据构件处理节点数 mum建立读操作队列组, 每个处理节点对应一个 队列订阅读操作

read_queue=session.createMultiQueue(num,id+"READ_QUEUE");

read_queue_consumer=session.createConsumer(read_queue);

5 )在 readQueueListener的 onMessage方法中实现具体的读处理功能, 并向 系统总线注册

read— queue— consumer. setMessageListener(readQueueListener);

在上述读写分离队列组基础上, 在构件管理模块中对各构件的服务类型进 行区分, 设定其为幂等或非幂, 幂等操作属于无状态操作, 在同一状态下每次 执行的结果相同; 非幂等操作属于有状态操作, 同一状态下每次执行的结果不 同, 路由器根据服务类型进行路由, 非幂操作发送到唯一的写队列, 幂操作根 据负载均衡策略发送到不同的读队列; 读操作负载均衡流程过程为

1 ) 计算节点的处理能力; 若节点 i的 CPU频率、 内存容量和 I/O带宽分别为 d Μ^Ρ Β 集群的各 种资源为节点各种资源之和, 即 C=∑d M=∑Mi B=∑B1; 则节点 i 的 CPU权值为 I/O 带宽 若构件服务所需资源比例分别为 pepu pro, 则节点 i的处理能力为

2) 根据读写操作权值计算各节点的负载; 若读队列! ^同写队列 Lw 的读写操作开销比 a 各节点的负载状态 Sfl Wi

3 ) 选择负载最轻的节点进行路由; 写操作采用流水方式进行, 以提高数据写入效率, 其过程为节点 1 首先写 入数据, 写入一个数据分片 64 KB后, 在继续接收数据的同时向节点 2转发己 写入的 64K数据, 节点 2至节点 n以相同方式接收和转发数据, 直到节点 n写 入最后一个不超过 64 KB数据分片; 在上述通信方法基础上, 节点监控模块进一步将构件处理节点的加入、 退 出、 失效和恢复事件发送给构件管理模块, 其中, 节点加入事件是指为构件添 加一个处理节点; 节点退出事件是指为构件撤销一个处理节点; 节点失效事件 是指构件的一个处理节点不可用; 节点苏醒事件是指构件一个不可用处理节点 恢复可用。

2、 一种面向构件的混合型云操作系统的通信方法, 其特征在于, 包括高可 用构件集群通信方法和水平伸缩构件集群通信方法, 其中: 高可用构件集群通信方法, 是构件管理模块为每个构件集群建立一个读写 分离队列组, 构件管理模块进一步将构件的服务类型区分为幂等或非幂, 路由 器根据服务类型进行路由, 非幂操作发送到唯一的写队列, 幂操作根据负载均 衡策略发送到不同的读队列, 在此基础上, 节点监控模块将处理节点的加入、 退出、 失效和恢复事件发送给构件管理模块, 构件管理模块进一步根据节点变 化事件调整队列结构, 此方法通过读写分离和负载均衡提高有状态构件集群的 通信性能, 根据节点变化调整队列结构保障构件的高可用性, 构件管理模块进 一步根据监控模块发送的节点变化事件调整队列结构, 流程如下:

1 ) 当节点加入时, 在队列组中为该节点建立一个读操作队列, 该节点向该 队列订阅读操作, 并向写主题订阅写主题;

2) 当节点退出时, 删除该节点对应的读队列, 关闭其对写主题的订阅;

3 ) 当节点失效时, 停止向该节点的读队列发送读请求, 在写主题中为该节 点保留写操作;

4) 当节点苏醒时, 在写主题中同步写操作, 恢复向该节点对应的读队列发 送读操作请求; 无状态集群的负载均衡方法将操作完全均衡的分配到各个节点上, 在有状 态情况下将造成处理结果不一致, 上述方法通过建立读写分离队列并针对节点 能力负载均衡, 能够避免此问题, 提高有状态构件集群的通信性能, 并且根据 节点变化事件调整队列结构保障了有状态集群的高可用性; 水平伸缩构件集群通信方法, 是构件管理模块根据节点数为构件的每个服 务建立多边形队列结构, 按 Hash值进行二分查找路由, 算法效率由远小于关键 字规模的 Hash分组数目决定,提高了路由效率,并且在节点数发生变化的情况下 只需调整部分节点数据状态,提高了动态伸缩效率, 在上述通信方法基础上, 在 初始化阶段根据节点处理能力划分各节点所需处理的 Hash区间, 形成路由表, 实现按比例分布数据状态, 达到负载均衡; 构件管理模块根据节点数为构件的每个服务建立多边形队列组, 每个队列 对应一个 Hash值区间或分组, 按 Hash值进行二分查找路由, 路由算法如下:

1 ) 计算 key 的 Hash值 h;

2) 初始化分组下限 i为 1,分组上限 j为分组总数 m; 3 ) 重复;

4) 计算中间分组 t=(i+j)/2, 查看分组 t是否包含 h;

5 ) 若 h小于当前分组下限, 更新上限 j=t-l ;

6) 若 h大于当前分组上限, 更新下限1^+1;

7) 否则, 返回区间所在节点进行路由;

上述算法相当于以分组为节点做二分查找, 复杂度为 0(log2n),算法的效率 由分组数目决定,由于分组数目远小于关键字规模,因此提高了路由效率, 另外, 由于采用了分组策略,因此在节点数量发生变化的情况下只需调整部分分组的关 键字规模和对应节点的数据状态,提高了动态伸缩效率。

Description:
一种面向构件的混合型云操作系统体系结构及 其通信方法 技术领域

本发明涉及云计算领域, 具体地说是一种面向构件的混合型云操作系统 体 系结构及其通信方法。

背景技术

随着云计算的兴起, 传统的数据中心迅速向云数据中心转型。 在数据中心 从初级向高级形态演进的物理资源整合、 应用与虚拟化接合、 自动化管理、 数 据中心协同四个阶段中, 云操作系统(COS, Cloud Operating System)发挥着重 要作用,承担着对上接口应用、 对下管理硬件的中间功能, 将大量的异构设备融 合为逻辑资源池, 动态调度给云应用, 完成对终端的服务。 云数据中心环境具有动态、 异构、 大规模和单点易失效的特征, 因此, COS 需采用广泛兼容的开放架构, 既考虑对第三方软硬件的兼容性, 也将二次开发 纳入其中, 提供完善标准的接口 API; 针对云计算环境对功能的动态变化需求, cos 需采用可扩展的构件化设计, 在虚拟化、 资源调度等基本构件基础上, 便 于运维管理、 计量计费和自助服务等构件的增值开发和按需 部署; 此外, COS 还要采用伸缩性和高可用设计, 达到云计算追求的规模扩展和业务连续性目标 。 针对云数据中心对 COS的松耦合、 可扩展、 可伸缩和高可用需求, 采用传 统 OS的单一模块架构可以实现 COS模块间的高效调用, 但耦合紧密、 结构复 杂, 系统难于扩展; 采用层次架构可以使各模块间的组织结构和依 赖关系清晰 化, 提高 COS的可靠性、 可移植性和维护性, 但软件栈层次太深使得内核过于 庞大, 并且模块间的耦合程度仍然较高, 不适于构建分布处理环境; 在上述架 构基础上, 开源软件 OpenStack和 CloudStack基于消息队列建立了松耦合的云 管理架构, 但缺乏面向构件的设计, 无法控制构件生命周期, 需要组成模块自 行考虑伸缩和高可用方式, 加重了模块的开发部署负担和运行开销。 遵循高内 聚低耦合原则, 应该从 COS层面增加对构件的管理并保障其可扩展性、 可伸缩 性和高可用性, 这其中主要面对的问题是

1.当前的云操作系统缺乏自包含性,无法对组 成构件进行描述和管理, 也无 法对其处理环境进行动态监控。 2.针对构件的高可用处理集群, 现有通信协议基于构件的无状态性假设设 计, 缺乏读写分离机制和负载均衡策略, 无法实现对有状态构件处理集群的高 可用和高性能支持。

3.针对构件的水平伸缩(scale-out) 处理集群, 现有基于树的路由算法效率 受到关键字规模扩大的影响,而基于 Hash 的路由算法在节点变化时会造成大量 的数据移动, 并且缺乏均衡异构节点负载的数据分布方法。

因此, 如何在 COS中提供对构件及其处理集群的管理和监控机 制, 以及实 现消息的高效路由和负载均衡, 成为 COS架构中亟待解决的技术问题。

发明内容

本发明的目的是提供一种面向构件的混合型云 操作系统体系结构及其通信 方法。 本发明的目的是按以下方式实现的, 基于层次、 对象和消息模型建立混合 型架构, 并采用面向构件思想对组成构件及其处理环境 进行管理, 在此基础上, 对构件处理集群进行高效路由、 读写分离和负载均衡, 满足对云操作系统地的 开放兼容、 松耦合和可扩展需求, 解决现有云操作系统的自管理问题、 构件水 平伸缩问题和有状态构件的高可用问题, 从层次模型角度, 系统自上至下分为门户层、 逻辑层、 适配层和实现层, 各层相对独立, 通过在各层分别定义标准接口增强开放性, 通过在各层适配不 同功能实现增强兼容性;

从对象模型角度, 云操作系统由云门户、 云管理门户、 云资源管理、 监控 管理、计量计费、业务审批、授权认证功能模 块组成, 各功能组件通过基于 Rest 消息的调用进行通信, 可自由组合, 按需分布部署, 并且可根据需求增值开发 新模块, 通过在逻辑层的不同模块间实现互操作增强平 台的可扩展性, 在实施 例中, 最小化安装的云操作系统仅由云门户、 云管理门户和云资源管理模块组 成, 在此基础上, 监控、 计费、 审批或其他模块按需定制和扩展, 通过基于 Rest 消息的调用进行通信, 按需分布部署和增值开发, 通过在逻辑层的不同模块间 实现互操作增强系统的可扩展性; 引入基于消息的通信方式支持异步调用, 使 用消息通信接口 JMS传输 Rest消息, 使系统架构进一步解耦, 在此基础上, 采 用面向构建设计, 构件管理门户负责管理构件的元数据并对其运 行状态进行监 控;

对象架构虽然能够实现按需扩展和分布部署, 但属于 RPC (Remote Process Call)同步通信方式,发送端等待接收端返回后 能继续执行,双方进程紧耦合, 随着系统的扩大化和复杂化, 构件之间的关联关系过于复杂, 针对此问题, 在 对象架构的基础上引入基于消息的通信方式, 使用消息通信接口 JMS传输 Rest 信息, 使得发送和接收端生命周期可以不同, 并支持异步调用, 使系统架构进 一步解耦, 在实施例中, 门户和云资源层之间的虚拟机开启、 关闭、 挂起、 关 闭等操作通过异步方式实现, 门户发出命令后无需等待响应即可返回, 提升了 用户交互效果;

基于上述混合型架构的云操作系统能够满足开 放兼容和扩展需求, 在此基 础上, 基于面向构建设计思想, 构件管理门户负责管理构件的元数据信息, 支 持注册、 删除、 修改和查询等操作, 其中, 构件是一个三元组包括: 名称、 服务集合、 访问地址、 描述;

服务是一个四元组, 包括: 名称、 类型、 消息协议、 参数列表、 key名称、 功能描述、 非功能描述; 除对构件进行描述和管理, 构件管理模块进一步对其处理环境进行监控, 为保障构件的可伸缩性和可用性提供基础服务 , 完善云操作系统的自管理能力, 在构件注册时,系统为其分配用户名 user、 密码 psw以及唯一的构件 id,之后构件 处理集群的接入过程为

1 ) 处理集群向地址为 url的系统总线发起接入请求, 系统总线验证接入节 点的用户名、 密码和 id, 如验证通过, 建立连接, 代码为:

connection=ConnectionFactory.createConnection(user,psw,url);

2) 建立一个写操作主题, 构件的每个处理节点向该主题订阅写操作; write_topic=session.createTopic(id+"WRITE_TOPIC");

write_topic_consumer=session.createConsumer(write_topic);

3 )构件在 writeTopicListener的 onMessage方法中实现写处理, 并向系统总 线注册; write— topic— consumer. setMessageListener(writeTopicListener);

4) 根据构件处理节点数 mum建立读操作队列组, 每个处理节点对应一个 队列订阅读操作

read_queue=session.createMultiQueue(num,id+"READ_QUEUE");

read_queue_consumer=session.createConsumer(read_queue);

5 )在 readQueueListener的 onMessage方法中实现具体的读处理功能, 并向 系统总线注册

read— queue— consumer. setMessageListener(readQueueListener); 在上述读写分离队列组基础上, 在构件管理模块中对各构件的服务类型进 行区分, 设定其为幂等或非幂, 幂等操作属于无状态操作, 在同一状态下每次 执行的结果相同; 非幂等操作属于有状态操作, 同一状态下每次执行的结果不 同, 路由器根据服务类型进行路由, 非幂操作发送到唯一的写队列, 幂操作根 据负载均衡策略发送到不同的读队列; 读操作负载均衡流程过程为

1 ) 计算节点的处理能力;

若节点 i的 CPU频率、 内存容量和 I/O带宽分别为 d, Μ^Ρ Β 集群的各 种资源为节点各种资源之和, 即 C=∑d, M=∑Mi, B=∑B 1; 则节点 i 的 CPU权值为 I/O 带宽

若构件服务所需资源比例分别为 p epu , p ro , 则节点 i的处理能力为

2) 根据读写操作权值计算各节点的负载;

若读队列! ^同写队列 L w 的读写操作开销比 a ,则节点 i的负载 各节点的负载状态 Sfl Wi

3 ) 选择负载最轻的节点进行路由; 写操作采用流水方式进行, 以提高数据写入效率, 其过程为节点 1 首先写 入数据, 写入一个数据分片 64 KB后, 在继续接收数据的同时向节点 2转发己 写入的 64K数据, 节点 2至节点 n以相同方式接收和转发数据, 直到节点 n写 入最后一个不超过 64 KB数据分片; 在上述通信方法基础上, 节点监控模块进一步将构件处理节点的加入、 退 出、 失效和恢复事件发送给构件管理模块, 其中, 节点加入事件是指为构件添 加一个处理节点; 节点退出事件是指为构件撤销一个处理节点; 节点失效事件 是指构件的一个处理节点不可用; 节点苏醒事件是指构件一个不可用处理节点 恢复可用。 本发明还提供一种面向构件的混合型云操作系 统的通信方法, 包括高可用 构件集群通信方法和水平伸缩构件集群通信方 法, 其中: 高可用构件集群通信方法, 是构件管理模块为每个构件集群建立一个读写 分离队列组, 构件管理模块进一步将构件的服务类型区分为 幂等或非幂, 路由 器根据服务类型进行路由, 非幂操作发送到唯一的写队列, 幂操作根据负载均 衡策略发送到不同的读队列, 在此基础上, 节点监控模块将处理节点的加入、 退出、 失效和恢复事件发送给构件管理模块, 构件管理模块进一步根据节点变 化事件调整队列结构, 此方法通过读写分离和负载均衡提高有状态构 件集群的 通信性能, 根据节点变化调整队列结构保障构件的高可用 性, 构件管理模块进 一步根据监控模块发送的节点变化事件调整队 列结构, 流程如下:

1 ) 当节点加入时, 在队列组中为该节点建立一个读操作队列, 该节点向该 队列订阅读操作, 并向写主题订阅写主题;

2) 当节点退出时, 删除该节点对应的读队列, 关闭其对写主题的订阅;

3 ) 当节点失效时, 停止向该节点的读队列发送读请求, 在写主题中为该节 点保留写操作;

4) 当节点苏醒时, 在写主题中同步写操作, 恢复向该节点对应的读队列发 送读操作请求; 无状态集群的负载均衡方法将操作完全均衡的 分配到各个节点上, 在有状 态情况下将造成处理结果不一致, 上述方法通过建立读写分离队列并针对节点 能力负载均衡, 能够避免此问题, 提高有状态构件集群的通信性能, 并且根据 节点变化事件调整队列结构保障了有状态集群 的高可用性; 水平伸缩构件集群通信方法, 是构件管理模块根据节点数为构件的每个服 务建立多边形队列结构, 按 Hash值进行二分查找路由, 算法效率由远小于关键 字规模的 Hash分组数目决定,提高了路由效率,并且在 点数发生变化的情况下 只需调整部分节点数据状态,提高了动态伸缩 效率, 在上述通信方法基础上, 在 初始化阶段根据节点处理能力划分各节点所需 处理的 Hash区间, 形成路由表, 实现按比例分布数据状态, 达到负载均衡; 构件管理模块根据节点数为构件的每个服务建 立多边形队列组, 每个队列 对应一个 Hash值区间或分组, 按 Hash值进行二分查找路由, 路由算法如下:

1 ) 计算 key 的 Hash值 h;

2) 初始化分组下限 i为 1,分组上限 j为分组总数 m;

3 ) 重复;

4) 计算中间分组 t=(i+j)/2, 查看分组 t是否包含 h;

5 ) 若 h小于当前分组下限, 更新上限 j=t-l ;

6) 若 h大于当前分组上限, 更新下限1^+1;

7) 否则, 返回区间所在节点进行路由; 上述算法相当于以分组为节点做二分查找, 复杂度为 0(log 2 n),算法的效率 由分组数目决定,由于分组数目远小于关键字 模,因此提高了路由效率, 另外, 由于采用了分组策略,因此在节点数量发生变 化的情况下只需调整部分分组的关 键字规模和对应节点的数据状态,提高了动态 缩效率。 本发明的有益效果是: 与现有技术相比, 本发明提出的面向构件的混合型 架构完善了开放兼容、 可扩展、 松耦合的构件化云操作系统体系结构, 并通过 构件水平伸缩集群和高可用集群的通信方法保 障了云操作系统的可伸缩性和高 可用性。

附图说明

图 1是面向构件的混合型 COS体系结构图; 图 2是支持有状态构件集群高可用的通信架构图 图 3是读写分离队列组示意图; 图 4是数据写入时序图; 图 5是节点状态转换图; 图 6是队列结构调整流程图; 图 7 是水平伸缩构件集群通信架构图; 图 8 是多边队列组路由示意图; 图 9是多边队列组路由算法流程图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的 实施方式, 借此对本发明如 何应用技术手段来解决技术问题, 并达成技术效果的实现过程能充分理解并据 以实施。 需要说明的是, 如果不冲突, 本发明实施例以及实施例中的各个特征 的相互均在本发明的保护范围之内。

1.面向构件的混合型云操作系统架构 从层次模型角度, 云操作系统从上至下分为门户层、 逻辑层、 适配层和实 现层四个层次, 如图 1 所示。 各层相对独立, 通过在各层分别定义标准接口增 强系统的开放性, 通过在各层适配不同功能实现增强兼容性。 在实施例中, 通 过剥离门户层可实现用户 UI和功能逻辑的分离, 例如, 逻辑层可通过对外提供 统一标准的 Rest API支持门户或第三方的二次开发; 通过抽象出逻辑功能层可 以实现对多种具体功能实现的兼容, 例如, 云资源管理模块通过虚拟化适配器 支持多种虚拟化基础设施, 监控管理模块通过适配框架兼容多种监控协议 , 流 程管理模块通过流程引擎支持不同审批流程的 定制, 计费管理和认证授权模块 通过预留钩子接口支持插件接入。 从对象模型角度, 云操作系统由云门户、 云管理门户、 云资源管理、 监控 管理、 计量计费、 业务审批、 授权认证等功能模块组成, 各功能组件通过基于 Rest消息的调用进行通信, 可自由组合, 按需分布部署, 并且可根据需求增值 开发新模块, 通过在逻辑层的不同模块间实现互操作增强平 台的可扩展性。 在 实施例中, 最小化安装的云操作系统仅由云门户、 云管理门户和云资源管理模 块组成, 在此基础上, 监控、 计费、 审批或其他模块可以按需定制和扩展。

对象架构虽然可以实现按需扩展和分布部署, 但属于 RPC (Remote Process Call)同步通信方式,发送端等待接收端返回后 能继续执行,双方进程紧耦合, 随着系统的扩大化和复杂化, 构件之间的关联关系过于复杂。 针对此问题, 在 对象架构的基础上引入基于消息的通信方式, 使用消息通信接口 JMS传输 Rest 信息, 使得发送和接收端生命周期可以不同, 并支持异步调用, 使系统架构进 一步解耦。 在实施例中, 门户和云资源层之间的虚拟机开启、 关闭、 挂起、 关 闭等操作通过异步方式实现, 门户发出命令后无需等待响应即可返回, 提升了 用户交互效果。

基于上述混合型架构的云操作系统能够满足开 放兼容和扩展需求。 在此基 础上, 基于面向构建设计思想, 构件管理门户负责管理构件的元数据信息, 支 持注册、 删除、 修改和查询等操作, 其中, 构件是一个三元组 {名称、 服务集合、 访问地址、 描述 }

服务是一个四元组 {名称、 类型、 消息协议、 参数列表、 key名称、 功能描 述、 非功能描述 } 除对构件进行描述和管理, 构件管理模块进一步对其处理环境进行监控, 为保障构件的可伸缩性和可用性提供基础服务 , 完善云操作系统的自管理能力。

2.高可用构件集群通信方法

本发明提出高可用构件集群的实施例如图 2所示, 主要包括如下模块 构件管理模块负责根据构件信息建立、 删除和调整构件的消息队列组; 消息路由器负责根据路由信息向所述队列组分 发消息。 节点监控模块负责检测构件处理集群各节点的 加入和退出, 获取处理节点 的资源配置信息。

构件处理集群负责实现构件的具体服务功能, 由若干个处理节点组成。 构件客户端负责发起对构件服务的使用请求。

基于上述架构, 在构件注册时,系统为其分配用户名 user、 密码 psw以及唯 一的构件 id,之后构件处理集群的接入过程为

1.处理集群向地址为 url的系统总线发起接入请求, 系统总线验证接入节点 的用户名、 密码和 id, 如验证通过, 建立连接。 代码为:

connection=ConnectionFactory.createConnection(user,psw,url);

2.建立一个写操作主题, 构件的每个处理节点向该主题订阅写操作; write_topic=session.createTopic(id+"WRITE_TOPIC");

write_topic_consumer=session.createConsumer(write_topic);

3.构件在 writeTopicListener的 onMessage方法中实现写处理, 并向系统总 线注册;

write— topic— consumer. setMessageListener( writeTopicListener);

4.根据构件处理节点数 mum建立读操作队列组, 每个处理节点对应一个队 列订阅读操作

read_queue=session.createMultiQueue(num,id+"READ_QUEUE");

read_queue_consumer=session.createConsumer(read_queue);

5.在 readQueueListener的 onMessage方法中实现具体的读处理功能, 并向 系统总线注册

read— queue— consumer. setMessageListener(readQueueListener);

在上述读写分离队列组基础上, 在构件管理模块中对各构件的服务类型进 行区分, 设定其为幂等或非幂等。 幂等操作属于无状态操作, 在同一状态下每 次执行的结果相同; 非幂等操作属于有状态操作, 同一状态下每次执行的结果 不同。 路由器根据服务类型进行路由, 非幂等操作发送到唯一的写队列, 幂等 操作根据负载均衡策略发送到不同的读队列, 如图 3所示。 其中, 读操作负载均衡流程过程为

1.计算节点的处理能力。

若节点 i的 CPU频率、 内存容量和 I/O带宽分别为 d, ?^和^ , 集群的各 种资源为节点各种资源之和, 即 C=∑d, M=∑Mi, B=∑B 10 则节点 i 的 CPU权值为 内存容量 W^^Mi/M, I/O 带宽 若构件服务所需资源比例分别为 p epu , p ro , 则节点 i的处理能力为

2.根据读写操作权值计算各节点的负载。 若读队列! ^同写队列 L w 的读写操作开销比 a 各节点的负载状态 S^L ^

3.选择负载最轻的节点进行路由。 写操作采用流水方式进行, 以提高数据写入效率, 如图 4所示, 其过程为 节点 1首先写入数据, 写入一个数据分片 (64 KB)后, 在继续接收数据的同时 向节点 2转发己写入的 64K数据,节点 2至节点 n以相同方式接收和转发数据, 直到节点 n写入最后一个数据分片 (不超过 64 KB)。 在上述通信方法基础上, 节点监控模块进一步将构件处理节点的加入、 退 出、 失效和恢复事件发送给构件管理模块, 节点状态转换关系如图 5所示。 其 中, 节点加入事件是指为构件添加一个处理节点; 节点退出事件是指为构件撤 销一个处理节点; 节点失效事件是指构件的一个处理节点不可用 ; 节点苏醒事 件是指构件一个不可用处理节点恢复可用。 构件管理模块进一步根据监控模块发送的节点 变化事件调整队列结构, 流 程如图 6所示:

1.当节点加入时, 在队列组中为该节点建立一个读操作队列, 该节点向该 队列订阅读操作, 并向写主题订阅写主题;

2.当节点退出时, 删除该节点对应的读队列, 关闭其对写主题的订阅;

3.当节点失效时, 停止向该节点的读队列发送读请求, 在写主题中为该节 点保留写操作;

4.当节点苏醒时, 在写主题中同步写操作, 恢复向该节点对应的读队列发 送读操作请求。 无状态集群的负载均衡方法将操作完全均衡的 分配到各个节点上, 在有状 态情况下将造成处理结果不一致。 上述方法通过建立读写分离队列并针对节点 能力负载均衡, 能够避免此问题, 提高有状态构件集群的通信性能, 并且根据 节点变化事件调整队列结构保障了有状态集群 的高可用性。

3水平伸缩构件集群通信方法 本发明实施例提供了一种水平伸缩构件集群通 信方法, 如图 7所示。 构件 管理模块根据节点数为构件的每个服务建立多 边形队列组, 每个队列对应一个 Hash值区间 (分组), 按 Hash值进行二分查找路由, 路由算法为如图 9所示:

1.计算 key 的 Hash值 h

2.初始化分组下限 i为 1,分组上限 j为分组总数 m,

3.重复

4.计算中间分组 t=(i+j)/2, 查看分组 t是否包含 h

5.若 h小于当前分组下限, 更新上限 j=t- l

6.若 h大于当前分组上限, 更新下限1^+1

7.否则, 返回区间所在节点进行路由。 上述算法相当于以分组为节点做二分查找, 复杂度为 0(log 2 n),算法的效率 由分组数目决定,由于分组数目远小于关键字 模,因此提高了路由效率。 另外, 由于采用了分组策略,因此在节点数量发生变 化的情况下只需调整部分分组的关 键字规模和对应节点的数据状态,提高了动态 缩效率。

在上述通信方法基础上, 本发明实例提出一种数据状态分布方法, 在初始 化阶段根据节点处理能力划分各节点所需处理 的 Hash区间, 节点处理能力的计 算方法如前所述。 此方法能够根据节点处理能力划分各节点的队 列所需处理的 Hash区间规模, 实现按比例分布数据状态, 达到负载均衡。 本发明的其它特征和优点将在随后的说明书中 阐述, 并且, 部分地从说明 书中变得显而易见, 或者通过实施本发明而了解。 本发明的目的和其他优点可 通过在说明书、 权利要求书以及附图中所特别指出的结构来实 现和获得。