CN107819858B - 一种在云服务动态伸缩时管理云服务的方法及装置 - Google Patents

一种在云服务动态伸缩时管理云服务的方法及装置 Download PDF

Info

Publication number
CN107819858B
CN107819858B CN201711124474.7A CN201711124474A CN107819858B CN 107819858 B CN107819858 B CN 107819858B CN 201711124474 A CN201711124474 A CN 201711124474A CN 107819858 B CN107819858 B CN 107819858B
Authority
CN
China
Prior art keywords
cloud service
service
connection
cloud
long
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711124474.7A
Other languages
English (en)
Other versions
CN107819858A (zh
Inventor
杜萌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao poly cloud Technology Co., Ltd.
Original Assignee
Qingdao Jukanyun Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qingdao Jukanyun Technology Co ltd filed Critical Qingdao Jukanyun Technology Co ltd
Priority to CN201711124474.7A priority Critical patent/CN107819858B/zh
Publication of CN107819858A publication Critical patent/CN107819858A/zh
Application granted granted Critical
Publication of CN107819858B publication Critical patent/CN107819858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种在云服务动态伸缩时管理云服务的方法及装置,属于互联网技术领域。应用于第一云服务,所述方法包括:在第一云服务调用第二云服务的过程中,第一云服务通过其与监控服务之间的长连接接收服务变化消息;其中,服务变化消息为监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的;当接收到服务变化消息时,在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对失效长连接构建有效长连接。本发明通过监控服务主动向第一云服务发送服务变化消息,更及时的响应云服务的进程数量的变化。

Description

一种在云服务动态伸缩时管理云服务的方法及装置
技术领域
本发明涉及互联网技术领域,特别涉及一种在云服务动态伸缩时管理云服务的方法及装置。
背景技术
随着互联网技术的快速发展,云平台技术越来越成熟。云平台内可以部署多个不同的云服务,不同的云服务之间可以通过相互调用来实现不同的功能。并且为了达到负载均衡的目的,一个云服务可以包括多个不同的进程,该多个不同的进程可以提供相同的服务。同时,云服务包括的多个进程还可以依据不同的需求动态伸缩,也即是,云平台可以根据云服务的访问量动态调节云服务的进程数量,因此,在云服务动态伸缩时对云服务的管理成为目前研究的热点。
当云平台内部署的多个云服务之间相互调用时,为了便于描述,假设第一云服务当前需要调用第二云服务,此时可以在第一云服务与第二云服务之间建立长连接,来实现这两个云服务之间的相互调用。然而,在第一云服务调用第二云服务的过程中,当第二云服务的进程数量发生增减时,需要在第二云服务和第一云服务之间重新做负载均衡处理,此时会断开已经建立的长连接,导致会损毁第一云服务与第二云服务之间已经建立的长连接,从而无法实现第一云服务对第二云服务的调用。此时就需要再根据进程增减数量重新建立长连接。
相关技术中,当第二云服务的进程数量发生增减时,也即第二云服务发生了动态伸缩,此时第二云服务的版本号会更新,第一云服务接收更新的版本号后断开其与第二云服务之间的长连接,因此,在第二云服务侧可以建立一个云服务查询接口,这样,第一云服务可以每隔预设时间段通过该云服务查询接口获取第二云服务的版本号,如果第二云服务的版本号发生变化,则可以确定第二云服务进行了动态伸缩,此时可以将第一云服务与第二云服务之间的长连接均断开并重新建立。
然而,由于上述方法是每隔预设时间段来获取第二云服务的版本号,如果第二云服务的进程数量在该预设时间段内发生了变化,会更新第二云服务中服务的版本号,那么第一云服务通过前述长连接在更新版本号之后的下次推送时才能获知更新的版本号,从而不能及时感知到第二云服务的进程数量变化,并且通过前述长连接传输更新的版本号,会在长连接正常使用时产生传输冲突。另外,由于第一云服务中缺少对第一云服务与第二云服务之间的长连接的使用状态的管理,因此当第一云服务确定第二云服务的进程数量发生变化时,会将所有与第二云服务之间的长连接断开,可能会错误中断一些正常提供云服务的长连接,从而不利于用户的使用导致用户体验差。
发明内容
为了解决相关技术中不能及时感知到第二云服务的进程数量的变化及可能会错误中断一些未被影响的进程之间的长连接的问题,本发明实施例提供了一种在云服务动态伸缩时管理云服务的方法及装置。所述技术方案如下:
根据本发明实施例的第一方面,提供一种在云服务动态伸缩时管理云服务的方法,所述方法包括:
在第一云服务调用第二云服务的过程中,所述第一云服务通过其与监控服务之间的长连接接收服务变化消息;
其中,所述服务变化消息为所述监控服务监控到所述第二云服务的进程数量发生变化时向所述第一云服务发送的;
当接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接构建有效长连接。
可选地,所述从所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,包括:
从所述第一云服务的连接池中确定处于活跃状态的连接对象,所述活跃状态的连接对象用于构建所述当前使用的长连接;
当通过所述活跃状态的连接对象构建的长连接中存在所述失效长连接时,拦截所述失效长连接。
可选地,所述第一云服务通过其与监控服务之间建立的长连接接收服务变化消息之后,还包括:
从所述第一云服务的连接池中确定处于空闲状态的连接对象,所述空闲状态的连接对象用于与所述第二云服务之间构建长连接;
通过所述处于空闲状态的连接对象将所述当前未使用的长连接构建为所述有效长连接。
可选地,所述服务变化消息中携带伸缩指示信息,所述伸缩指示信息用于指示所述第二云服务的进程数量减少或增加;
所述第一云服务通过其与监控服务之间建立的长连接接收服务变化消息之后,还包括:
从所述第一云服务的连接池中确定处于空闲状态的连接对象;
根据所述伸缩指示信息,通过所述空闲状态的连接对象在所述第一云服务和第二云服务之间重构当前未使用的长连接。
可选地,所述根据所述伸缩指示信息,通过所述空闲状态的连接对象在所述第一云服务和第二云服务之间重构当前未使用的长连接,包括:
当所述伸缩指示信息指示所述第二云服务的进程数量增加时,重构所述当前未使用的长连接中的有效长连接和失效长连接;
当所述伸缩指示信息指示所述第二云服务的进程数量减少时,重构所述当前未使用的长连接中的失效长连接。
可选地,所述服务变化消息中还携带所述第二云服务的最新版本号;
所述通过所述处于空闲状态的连接对象将所述当前未使用的长连接构建为所述有效长连接之后,还包括:
从所述连接池中调用所述处于空闲状态的连接对象且将其设置为处于活跃状态的目标连接对象;
当所述目标连接对象的版本号与所述最新版本号不同时,重构所述目标连接对象与所述第二云服务之间的第一长连接;
在所述第一长连接重构成功时,重构所述第一云服务与所述目标连接对象之间的第二长连接。
根据本发明实施例的第二方面,提供一种在云服务动态伸缩时管理云服务的方法,所述方法包括:
在第一云服务调用第二云服务的过程中,监控服务对所述第二云服务的进程数量进行监控;
当所述监控服务确定所述第二云服务的进程数量发生变化时,通过其与所述第一云服务之间建立的长连接向所述第一云服务发送服务变化消息;
其中,所述服务变化信息用于指示所述第一云服务在接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接构建有效长连接。
可选地,所述当所述监控服务确定所述第二云服务的进程数量发生变化之后,还包括:
所述监控服务对所述第二云服务的版本号更新得到最新版本号,以及将所述最新版本号加入所述服务变化消息中。
可选地,所述在第一云服务调用第二云服务之前,还包括:
所述监控服务接收由所述第一云服务发送的监控请求,所述监控请求中携带所述第二云服务的标识;
所述监控服务基于所述第二云服务的标识为所述第二云服务分配初始版本号。
根据本发明实施例的第三方面,提供一种在云服务动态伸缩时管理云服务的装置,配置于第一云服务,所述装置包括:
接收模块,用于在第一云服务调用第二云服务的过程中,通过所述第一云服务与监控服务之间的长连接接收服务变化消息;
其中,所述服务变化消息为所述监控服务监控到所述第二云服务的进程数量发生变化时向所述第一云服务发送的;
第一构建模块,用于当接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接构建有效长连接。
可选地,所述第一构建模块包括:
第一确定子模块,用于从所述第一云服务的连接池中确定处于活跃状态的连接对象,所述活跃状态的连接对象用于构建所述当前使用的长连接;
拦截子模块,用于当通过所述活跃状态的连接对象构建的长连接中存在所述失效长连接时,拦截所述失效长连接。
可选地,所述装置还包括:
第一确定模块,用于从所述第一云服务的连接池中确定处于空闲状态的连接对象,所述空闲状态的连接对象用于与所述第二云服务之间构建长连接;
第二构建模块,用于通过所述处于空闲状态的连接对象将所述当前未使用的长连接构建为所述有效长连接。
可选地,所述服务变化消息中携带伸缩指示信息,所述伸缩指示信息用于指示所述第二云服务的进程数量减少或增加;
所述装置还包括:
第二确定模块,用于从所述第一云服务的连接池中确定处于空闲状态的连接对象;
第一重构模块,用于根据所述伸缩指示信息,通过所述空闲状态的连接对象在所述第一云服务和第二云服务之间重构当前未使用的长连接。
可选地,所述第一重构模块包括:
第一重构子模块,用于当所述伸缩指示信息指示所述第二云服务的进程数量增加时,重构所述当前未使用的长连接中的有效长连接和失效长连接;
第二重构子模块,用于当所述伸缩指示信息指示所述第二云服务的进程数量减少时,重构所述当前未使用的长连接中的失效长连接。
可选地,所述服务变化消息中还携带所述第二云服务的最新版本号;
所述装置还包括:
调用模块,用于从所述连接池中调用所述处于空闲状态的连接对象且将其设置为处于活跃状态的目标连接对象;
第二重构模块,用于当所述目标连接对象的版本号与所述最新版本号不同时,重构所述目标连接对象与所述第二云服务之间的第一长连接;
第三重构模块,用于在所述第一长连接重构成功时,重构所述第一云服务与所述目标连接对象之间的第二长连接。
根据本发明实施例的第四方面,提供一种在云服务动态伸缩时管理云服务的装置,配置于监控服务,所述装置包括:
监控模块,用于在第一云服务调用第二云服务的过程中,对所述第二云服务的进程数量进行监控;
发送模块,用于当确定所述第二云服务的进程数量发生变化时,通过监控服务与所述第一云服务之间建立的长连接向所述第一云服务发送服务变化消息;
其中,所述服务变化信息用于指示所述第一云服务在接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接构建有效长连接。
可选地,所述装置还包括:
更新模块,用于对所述第二云服务的版本号更新得到最新版本号,以及将所述最新版本号加入所述服务变化消息中。
可选地,所述装置还包括:
接收模块,用于接收由所述第一云服务发送的监控请求,所述监控请求中携带所述第二云服务的标识;
分配模块,用于基于所述第二云服务的标识为所述第二云服务分配初始版本号。
根据本发明实施例的第五方面,提供了一种在云服务动态伸缩时管理云服务的装置,所述装置包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序代码,所述处理器执行所述程序代码时实现上述第一方面或第二方面所述的方法。
根据本发明实施例的第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面或第二方面所述的任一项方法的步骤。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例在第一云服务调用第二云服务的过程中,第一云服务可以通过其与监控服务之间的长连接接收监控服务发送的服务变化消息,其中服务变化消息是监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的,也即是,第一云服务与监控服务之间的长连接,以及与第二云服务之间的长连接相互独立,可以单独监控第二云服务的进程数量,避免与第二云服务和第一云服务之间的长连接发生数据传输冲突,当第二云服务的进程数量发生变化时,监控服务以长连接方式将服务变化消息推送给第一云服务,这样,第一云服务也可以及时感知到第二云服务的进程数量发生了变化,响应速度快。之后,可以在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接,也即是,当第一云服务与第二云服务之间当前使用的长连接失效时,才会针对该失效长连接重构有效长连接,同时并不处理正常使用的长连接,不会错误的中断用户正常使用的长连接,让用户感知不到第二云服务的进程数量发生的变化,给用户带来更好的使用体验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种在云服务动态伸缩时管理云服务的方法流程图;
图2A是本发明实施例提供的另一种在云服务动态伸缩时管理云服务的方法流程图;
图2B是本发明实施例提供的一种第一云服务的连接池的示意图;
图2C是本发明实施例提供的一种第二云服务的进程数量扩容示意图;
图2D是本发明实施例提供的一种第二云服务的进程数量缩容示意图;
图3A是本发明实施例提供的第一种在云服务动态伸缩时管理云服务的装置结构示意图;
图3B是本发明实施例提供的一种第一构建模块302的结构示意图;
图3C是本发明实施例提供的第二种在云服务动态伸缩时管理云服务的装置结构示意图;
图3D是本发明实施例提供的第三种在云服务动态伸缩时管理云服务的装置结构示意图;
图3E是本发明实施例提供的一种第一重构模块306的结构示意图;
图3F是本发明实施例提供的第四种在云服务动态伸缩时管理云服务的装置结构示意图;
图4A是本发明实施例提供的第五种在云服务动态伸缩时管理云服务的装置结构示意图;
图4B是本发明实施例提供的第六种在云服务动态伸缩时管理云服务的装置结构示意图;
图4C是本发明实施例提供的第七种在云服务动态伸缩时管理云服务的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于理解,在对本发明实施例进行详细的解释说明之前,先对本发明实施例涉及的应用场景进行介绍。
通常完成一个用户请求的业务,需要云平台内的多个云服务之间相互调用、协调配合来完成整个业务处理链。也即是,第一云服务可以负责接收来自用户的业务请求,在实现具体业务流程时,就需要调用第二云服务,从而通过第二云服务完成用户请求的业务。其中,云平台内可以提供不同的互联网业务的公共服务作为第二云服务,如用户身份验证服务、支付服务、物流查询服务、视频服务等。
例如,用户发起一个下订单的请求,第一云服务接收到请求,按照业务要求进行订单处理,当处理到付款部分时,就调用云内的支付服务完成付款。
接下来将结合附图对本发明实施例提供的一种在云服务动态伸缩时管理云服务的方法进行详细介绍。
图1是本发明实施例提供的一种在云服务动态伸缩时管理云服务的方法的流程图。参见图1,该方法包括以下步骤:
步骤101:在第一云服务调用第二云服务的过程中,监控服务对第二云服务的进程数量进行监控,以通过第二云服务的进程数量增加或减少,检测第二云服务发生动态伸缩变化。
步骤102:当监控服务确定第二云服务的进程数量发生变化时,通过与第一云服务之间的长连接向第一云服务发送服务变化消息。
步骤103:当第一云服务接收到该服务变化消息时,在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接。
本发明实施例在第一云服务调用第二云服务的过程中,第一云服务可以通过其与监控服务之间的长连接接收监控服务发送的服务变化消息,其中服务变化消息是监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的,也即是,第一云服务与监控服务之间的长连接,以及与第二云服务之间的长连接相互独立,可以单独监控第二云服务的进程数量,避免与第二云服务和第一云服务之间的长连接发生数据传输冲突,当第二云服务的进程数量发生变化时,监控服务以长连接方式将服务变化消息推送给第一云服务,这样,第一云服务也可以及时感知到第二云服务的进程数量发生了变化,响应速度快。之后,可以在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接,也即是,当第一云服务与第二云服务之间当前使用的长连接失效时,才会针对该失效长连接重构有效长连接,同时并不处理正常使用的长连接,不会错误的中断用户正常使用的长连接,让用户感知不到第二云服务的进程数量发生的变化,给用户带来更好的使用体验。
图2A是本发明实施例提供的一种在云服务动态伸缩时管理云服务的方法的流程图。本发明实施例将结合图2A对图1提供的实施例进行展开论述。参见图2A,该方法包括以下步骤:
步骤201:在第一云服务调用第二云服务的过程中,监控服务对第二云服务的进程数量进行监控,以通过第二云服务的进程数量增加或减少,检测第二云服务发生动态伸缩变化。
其中,第一云服务和第二云服务可以为云平台内部署的任一云服务。
由于云平台内部署有多个云服务,且该多个云服务可以为用户提供不同的服务,并且云平台通常的用户访问量都比较大,因此,云平台需要通过负载均衡机制来处理用户的访问请求,也即是,云平台内的每个云服务可以包括多个进程,对于同一云服务,该云服务包括的多个进程可以为用户提供相同的服务,这样,当多个用户同时访问同一业务时,可以通过负载均衡机制将该多个用户的访问请求进行分配,从而对该多个用户的访问请求进行并行处理。
但是,在不同时刻,访问同一业务的用户数量不确定,也即是,可能在当前时刻访问同一业务的用户数量很多,需要云服务提供较多的进程来处理,而在下一时刻访问同一业务的用户数量可能会减少很多,此时,为了节约资源,可以减少云服务包括的进程。这种进程动态变化的过程即为云服务的动态伸缩。
由于对用户的访问请求进行处理的过程中,可能需要云平台内的多个云服务之间进行相互调用,此时,为了能够实现第一云服务调用第二云服务,需要建立第一云服务与第二云服务之间的长连接,从而通过建立的长连接实现数据的传输,为用户提供服务。然而,在第二云服务进行动态伸缩后,可能就无法为用户提供服务,也即是,第一云服务与第二云服务中某些进程之间的长连接会断开,因此,在本发明实施例中,在第一云服务需要调用第二云服务之前,第一云服务还可以向监控服务发送监控请求,该监控请求中携带第二云服务的标识。当监控服务接收到该监控请求时,可以基于第二云服务的标识为第二云服务分配初始版本号,并开始对第二云服务进行监控,以确定第二云服务的进程数量是否发生变化。
需要说明的是,第二云服务的标识用于唯一标识第二云服务,且第二云服务的标识可以为第二云服务的名称等等。其中,由于云平台中部署的云服务是用于提供不同类型的服务,因此,云平台中部署的云服务的类型均不相同,也即是,云平台内不会包括相同类型的多个云服务,因此,也可以将第二云服务的类型作为第二云服务的标识。
由于监控服务可能同一时间会监控多个云服务,为了便于区分,监控服务可以将第二云服务的标识和为第二云服务分配的初始版本号进行对应存储。
示例的,当监控服务接收到第一云服务发送的监控请求时,开始监控第二云服务的进程数量的变化,假设该监控请求中携带的第二云服务的标识为支付服务、物流服务,则监控服务会为支付服务、物流服务分配初始版本号,并对支付服务、物流服务的进程数量进行监控。监控服务中可以存储如下表1所示的第二云服务的标识与版本号的对应关系。
表1
Figure BDA0001468100490000101
Figure BDA0001468100490000111
需要说明的是,本发明实施例仅以上述表1所示的第二云服务的标识与版本号之间的对应关系为例进行说明,上述表1并不对本本发明实施例构成限定。
另外,为了在第一云服务与第二云服务之间建立长连接,第一云服务还可以建立一个连接池,用于存放连接对象,该连接对象用于在第一云服务与第二云服务之间建立长连接。该连接池还可以管理连接对象的连接状态,连接对象的连接状态可以为活跃状态和空闲状态。其中,活跃状态的连接对象用于构建当前使用的长连接,也即是,活跃状态的连接对象分别与第一云服务和第二云服务建立长连接,第一云服务可以通过处于活跃状态的连接对象与第二云服务建立长连接以进行数据传输;空闲状态的连接对象用于与第二云服务构建长连接,也即是,空闲状态的连接对象只与第二云服务相连接,而没有与第一云服务相连接,因此第一云服务不能通过处于空闲状态的连接对象与第二云服务进行数据传输,此时处于空闲状态的连接对象与第二云服务之间的长连接不能用于数据传输。
第一云服务建立连接池时,可以创建连接对象,创建连接对象的个数与第一预设数值相等,并将创建的连接对象初始化为空闲状态,每个连接对象初始化时,通过云平台内的负载均衡服务与第二云服务之间建立长连接。其中,负载均衡是云平台内部署的用于平均分配长连接的机制,第一云服务建立连接池后,会向负载均衡服务发送一个请求,当负载均衡服务接收到该请求后,会将连接池中存放的连接对象均分给第二云服务包括的进程。示例的,第一云服务建立的连接池中创建有100个连接对象,第二云服务包括有4个进程,则在第二云服务的每个进程与25个连接对象之间分别建立长连接。
其中,第一预设数值是指连接池中可以存放的空闲状态的连接对象的最大数量,可以根据不同的需求预先进行设置,如第一预设数值可以为300、500、800等。
当第一云服务与第二云服务之间需要建立长连接时,可以从连接池中调用处于空闲状态的连接对象,通过该连接对象在第一云服务与第二云服务之间建立长连接,并将该连接对象设置为活跃状态。
需要说明的是,第一云服务从连接池中调用连接对象时,首先需要获取处于空闲状态的连接对象,如果获取成功,则可以调用获取到的处于空闲状态的连接对象。如果获取不成功,则需要查看连接池是否达到第二预设数值,如果达到,则等待其他连接对象归还到连接池,如果未达到,则创建一个新连接对象并在其与第二云服务之间建立长连接,将该连接对象作为能够调用的连接对象。其中,第二预设数值是指连接池中可以调用的连接对象的最大数量,可以根据不同的需求预先进行设置,如第二预设数值可以为200、300、400等。
还需要说明的是,当第一云服务与第二云服务之间不需要使用长连接来传输数据时,第一云服务可以将之前调用的连接对象归还给连接池归。向连接池归还连接对象时,需要将连接对象的状态重新设置为空闲状态,并检查连接池中空闲状态的连接对象的数量是否大于第一预设数值,如果大于,则将该连接对象删除,即释放该连接对象所占的内存空间,如果小于,则将该连接对象归还连接池。
例如,图2B为一种第一云服务的连接池的示意图,如图2B所示,连接池中包括3个连接对象,每个连接对象对应有一个连接状态,还包括一个HTTP长连接,其中有1个处于活跃状态的连接对象,2个处于空闲状态的连接对象。该3个连接对象分别和第二云服务包括的进程1、进程2、进程3相连接,另外1个活跃状态的连接对象还和第一云服务相连接。也即是,第一云服务与第二云服务中的进程1建立了长连接,第一云服务中的该进程可以和第二云服务中的进程1进行数据传输。
步骤202:当监控服务确定第二云服务的进程数量发生变化时,通过其与第一云服务之间的长连接向第一云服务发送服务变化消息。
需要说明的是,监控服务可以开放一个HTTP(Hyper Text Transfer Protocol,超文本传输协议)监控接口,第一云服务可以通过该HTTP监控接口与监控服务建立一个HTTP长连接,进而监控服务可以通过该HTTP长连接向第一云服务发送服务变化消息。
由于HTTP是单向性协议,即必须由第一云服务发起一个监控请求来建立长连接,监控服务接收监控请求,将服务变化消息返回给第一云服务,然后释放连接,这是一个通常的请求应答过程。但是如果保留这种方式,需要第一云服务定时去请求监控服务获取服务变化消息,为了确保及时性,时间间隔往往设定很小,这样就大大加重了监控服务的压力。因此本发明实施例采用了监控服务利用长连接实现推送技术,也即是,第一云服务向监控服务发送一个监控请求,在第一云服务与监控服务之间建立一个能够保持很长时间的HTTP长连接,监控服务会阻塞住该监控请求,其中,阻塞是指进程的一种调用方式,没有接收完数据或者没有得到结果之前,不会返回,直到监控服务发现第二云服务的进程数量发生变化则向第一云服务发送服务变化消息。
然而,如果第二云服务的进程数量长期没有发生变化,为了避免超时,监控服务不能一直阻塞第一云服务发送的监控请求,因此还应该设定一个最长时限。在最长时限内,如果第二云服务包括的进程的数量发生了变化,监控服务向第一云服务发送服务变化消息,之后继续阻塞第一云服务发送的监控请求,并继续监控第二云服务的进程数量是否发生变化,直到达到最长时限;如果超过了最长时限,第二云服务的进程数量没有发生变化,则监控服务向第一云服务返回本轮次第二云服务的进程数量没有发生变化的正常响应,并断开HTTP长连接,第一云服务接收到该正常响应后,再次发送监控请求,开启新一轮监控。
在本发明实施例中,由于监控服务可以向第一云服务主动发送服务变化消息,也即是,当第二云服务的进程数量发生变化时,监控服务会第一时间将该服务变化消息发送给第一云服务,因此第一云服务可以更及时的感知到第二云服务的进程数量发生了变化,提升了第一云服务感知的及时性。
进一步地,服务变化消息中可以携带第二云服务的最新版本号,第二云服务的最新版本号是监控服务监控到第二云服务的进程数量发生变化时对第二云服务的版本号进行更新得到。当然,服务变化消息除了可以携带第二云服务的最新版本号,还可以携带第二云服务的进程数量的伸缩指示信息,该伸缩指示信息用于指示第二云服务的进程数量增加或减少,本发明实施例对服务服务变化消息携带的信息不做限制。由于服务变化信息在监控到第二云服务的进程数量变化才发送,其发送也就表示服务变化,因此能够触发对第一云服务和第二云服务之间的长连接区分管理即可。
进一步地,当监控服务监控到第二云服务的进程数量变化时,监控服务还可以将第二云服务的标识与版本号之间的对应关系中的版本号替换为最新版本号。
例如,当监控服务确定第二云服务的进程数量发生变化时,假设监控服务检测到支付服务的进程数量由2个增加到3个,物流服务的进程数量由3个减少为2个,此时监控服务会将上述表1中的第二云服务与版本号之间的对应关系更新为如下表2所示的第二云服务的标识与版本号之间的对应关系。
表2
第二云服务的标识 版本号
支付服务 1.1
物流服务 1.1
需要说明的是,本发明实施例仅以上述表2所示的第二云服务的标识与版本号之间的对应关系为例进行说明,上述表2并不对本发明实施例构成限定。
步骤203:当第一云服务通过其与监控服务之间的长连接接收到服务变化消息时,在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接。
需要说明的是,当前使用的长连接是指通过活跃状态的连接对象在第一云服务与第二云服务之间建立的长连接,也即是,当前使用的长连接可以用于在第一云服务与第二云服务之间进行数据传输。失效长连接是指连接对象与第二云服务之间的长连接出现异常。有效长连接是指连接对象与第二云服务之间的长连接可以正常使用。
还需要说明的是,可以通过连接池中的连接对象的连接状态来反应哪些长连接是第一云服务与第二云服务之间当前使用的长连接,也即是,确定连接池中处于活跃状态的连接对象,通过该处于活跃状态的连接对象在第一云服务与第二云服务之间建立的长连接即为当前使用的长连接。
为了确保第一云服务与第二云服务之间当前使用的长连接中的有效长连接继续进行业务处理,不受干扰,可以从第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,且针对失效长连接构建有效长连接。具体地,可以从第一云服务的连接池中确定处于活跃状态的连接对象,当当前使用的长连接中存在失效长连接时,拦截该失效长连接,然后针对该失效长连接构建有效长连接。
当处于活跃状态的连接对象与第二云服务之间的长连接失效时,第一云服务会产生一个异常信号,也即是,当第一云服务不能通过该长连接与第二云服务之间进行数据传输时,第一云服务会产生一个异常信号,该异常信号用于指示对应的处于活跃状态的连接对象与第二云服务之间的长连接已经失效,此时第一云服务需要针对该失效长连接构建有效长连接,也即是,在该处于活跃状态的连接对象与第二云服务包括的其他进程之间建立有效长连接。
当然第一云服务的连接池中不只存在处于活跃状态的连接对象,还存在处于空闲状态的连接对象,因此,在第一云服务通过与监控服务之间的长连接接收到监控服务发送的服务变化消息之后,还需要通过处于空闲状态的连接对象在第一云服务和第二云服务之间重构当前未使用的长连接。其中,当前未使用的长连接是指处于空闲状态的连接对象与第二云服务之间的长连接,由于处于空闲状态的连接对象只与第二云服务之间建立了长连接,并未与第一云服务之间建立长连接,因此第一云服务不能使用该长连接与第二云服务进行数据传输。
需要说明的是,由于服务变化消息中不仅可以携带第二云服务的最新版本号,还可以携带第二云服务的进程数量的伸缩指示信息,该伸缩指示信息用于指示第二云服务的进程数量是增加还是减少。因此,可以按照如下方式1或方式2来通过空闲状态的连接对象在第一云服务和第二云服务之间重构当前未使用的长连接。
方式1:当服务变化消息中携带第二云服务的最新版本号时,第一云服务接收到该服务变化消息,从第一云服务的连接池中确定处于空闲状态的连接对象;通过处于空闲状态的连接对象将当前未使用的长连接构建为有效长连接。
当第一云服务与第二云服务之间需要建立长连接时,会从连接池中调用处于空闲状态的连接对象,通过该连接对象在第一云服务与第二云服务之间建立当前使用的长连接,并将该连接对象设置为活跃状态,连接池中剩余的没有被用来在第一云服务与第二云服务之间建立当前使用的长连接的连接对象即为空闲状态的连接对象。也即是,处于空闲状态的连接对象没有被用来在第一云服务与第二云服务之间建立长连接,但是当第二云服务的进程数量发生变化时,处于空闲状态的连接对象和第二云服务之间的长连接可能已经失效了,且如果第二云服务的进程数量增加,也需要将处于空闲状态的连接对象重新分配给第二云服务包括的所有进程,因此需要通过处于空闲状态的连接对象将当前未使用的长连接构建为有效长连接。
具体地,首先断开处于空闲状态的连接对象与第二云服务之间已经建立的长连接,并在断开之后建立处于空闲状态的连接对象与第二云服务当前包括的进程之间的长连接。
例如,图2C为一种第二云服务的进程数量扩容示意图,如图2C所示,第一预设数值为600,也即是,第一云服务的连接池中共存储了600个连接对象,其中有100个连接对象为活跃状态,500个连接对象为空闲状态。第二云服务包括进程1、进程2、进程3,第二云服务的进程1与进程2分别连接有50个处于活跃状态的连接对象和250个处于空闲状态的连接对象。当第二云服务的进程数量由2个扩展为3个时,将500个处于空闲状态的连接对象与第二云服务的2个进程之间的长连接全部断开,并分别重新建立500个处于空闲状态的连接对象与第二云服务的进程1、进程2、进程3之间的长连接。由于连接池中共存储有600个连接对象,通过负载均衡,第二云服务包括的每个进程应该连接200个连接对象,而第二云服务包括的进程1与进程2各自已经连接了50个处于活跃状态的连接对象,因此只能再连接150个处于空闲状态的连接对象。也即是,第二云服务的进程1和进程2各自与150个处于空闲状态的连接对象重新建立长连接,而第二云服务的进程3与200个处于空闲状态的连接对象建立长连接。
方式2:当服务变化消息中携带有伸缩指示信息时,第一云服务接收到该服务变化消息,从第一云服务的连接池中确定处于空闲状态的连接对象;根据伸缩指示信息,通过空闲状态的连接对象在第一云服务和第二云服务之间重构当前未使用的长连接。
具体地,当该伸缩指示信息指示第二云服务的进程数量增加时,重构当前未使用的长连接中的有效长连接和失效长连接;当伸缩指示信息指示第二云服务的进程数量减少时,重构当前未使用的长连接中的失效长连接。
当该伸缩指示信息指示第二云服务的进程数量增加时,说明此时需要将处于空闲状态的连接对象重新分配给第二云服务包括的所有进程,而此时所有处于空闲状态的连接对象已经和第二云服务的进程数量增加前包括的进程相连接,因此需要重构当前未使用的长连接中的有效长连接和失效长连接。具体地,断开处于空闲状态的连接对象与第二云服务包括的进程之间已经建立的长连接,并在断开之后建立空闲状态的连接对象与第二云服务当前包括的进程之间的长连接。
当伸缩指示信息指示第二云服务的进程数量减少时,只需将减少的进程与处于空闲状态的连接对象之间的连接重新建立,也即是,只需要重构当前未使用的长连接中的失效长连接。具体地,可以从处于空闲状态的连接对象中确定与第二云服务包括的进程之间已经建立的长连接为失效长连接的连接对象,断开当前确定的连接对象与第二云服务包括的进程之间的长连接,并在断开之后建立当前确定的连接对象与第二云服务当前包括的进程之间的有效长连接。
具体地,可以采用通过第二云服务包括的进程的心跳接口的方式检测处于空闲状态的连接对象与第二云服务包括的进程之间的长连接是否失效。如果无法正常通过心跳接口获得成功标记,说明长连接已经失效,也即是,该处于空闲状态的连接对象与第二云服务包括的进程之间的长连接为失效长连接,如果可以通过心跳接口获得成功标记,则说明该处于空闲状态的连接对象与第二云服务包括的进程之间的长连接为有效长连接。
其中,第二云服务包括的进程可以通过心跳接口定时发送一个数据包,以确保该进程与处于空闲状态的连接对象的有效性。
例如,图2D为一种第二云服务的进程数量缩容的示意图,如图2D所示,第一预设数值为600,也即是,第一云服务的连接池中共存储了600个连接对象,其中有150个连接对象为活跃状态,450个连接对象为空闲状态。第二云服务的进程1、进程2、进程3分别连接有50个处于活跃状态的连接对象和150个处于空闲状态的连接对象。
当第二云服务的进程数量由3个缩减为2个时,假设缩减的进程为第二云服务的进程3,此时连接对象与第二云服务的进程1、进程2之间的长连接均为有效长连接,不需要进行处理,而连接对象与第二云服务的进程3之间的连接均为失效长连接。将50个处于活跃状态的连接对象与第二云服务的进程3之间的失效长连接全部断开,并通过负载均衡服务将该50个处于活跃状态的连接对象平均分配给第二云服务的进程1、进程2,也即是,第二云服务的进程1、进程2分别再与25个处于活跃状态的连接对象相连接,这样,第二云服务的进程1、进程2均连接有75个处于活跃状态的连接对象。
将150个处于空闲状态的连接对象与第二云服务的进程3之间的失效长连接全部断开,并通过负载均衡服务将该150个处于空闲状态的连接对象平均分配给第二云服务的进程1、进程2,也即是,第二云服务的进程1、进程2分别再与75个处于空闲状态连接对象建立有效长连接,这样,第二云服务的进程1、进程2均连接有225个处于空闲状态的连接对象。
在本发明实施例中,当第二云服务的进程数量发生变化时,可以基于不同的变化情况对处于空闲状态的连接对象与第二云服务包括的进程之间的长连接进行不同的处理。也即是,只有当第二云服务的进程数量增加时,才对处于空闲状态的连接对象与第二云服务包括的进程之间的有效长连接和失效长连接全部进行重新构建,而当第二云服务的进程数量减少时,可以保持处于空闲状态的长连接与第二云服务包括的进程之间的有效长连接不变,只将处于空闲状态的连接对象与第二云服务包括的进程之间的失效长连接断开,并在该连接对象与第二云服务包括的其他进程之间重新构建有效长连接。这样,可以有效的节约资源,提高响应速度。
需要说明的是,第一云服务通过与监控服务之间的长连接接收到监控服务发送的服务变化消息之后,第一云服务会对连接池中的处于空闲状态的连接对象与第二云服务包括的进程之间的长连接进行重新构建,而在该过程中,第一云服务仍旧有可能需要使用连接池中处于空闲状态的连接对象,基于该连接对象在第一云服务包括的进程与第二云服务包括的进程之间建立长连接,以进行数据传输完成相应的业务处理。此时,可以按照如下步骤204-206来确定从连接池中调用的处于空闲状态的连接对象与第二云服务包括的进程之间的第一长连接是否完成了构建,当完成了构建时,可以调用该处于空闲状态的连接对象,基于该连接对象在第一云服务与第二云服务之间建立长连接,以进行数据传输完成相应的业务处理。
步骤204:当进行处于空闲状态的连接对象与第二云服务之间的第一长连接重构的过程中,如果第一云服务需要调用连接池中处于空闲状态的连接对象与第二云服务包括的进程建立长连接,第一云服务从连接池中调用处于空闲状态的连接对象,并将调用的连接对象设置为处于活跃状态的目标连接对象。
其中,此步骤中从连接池中调用处于空闲状态的连接对象,并将调用的连接对象设置为处于活跃状态的目标连接对象的实施过程与上述步骤201中从连接池中调用处于空闲状态的连接对象,通过该连接对象在第一云服务与第二云服务之间建立长连接,并将该连接对象设置为活跃状态的实施过程相似,本发明在此不再赘述。
步骤205:当目标连接对象的版本号与最新版本号不同时,重构目标连接对象与第二云服务之间的第一长连接。
当第一云服务通过与监控服务之间的长连接接收到监控服务发送的服务变化消息之后,第一云服务会对连接池中的处于空闲状态的连接对象与第二云服务之间的长连接进行重构。由于重构连接池中的处于空闲状态的连接对象与第二云服务之间的长连接需要一段时间,而在该时间段内,可能还会存在一些处于空闲状态的连接对象并没有重新和第二云服务中的进程数量变化后包括的进程相连接。如果在该时间内,第一云服务需要调用连接池中处于空闲状态的连接对象在第一云服务与第二云服务之间建立长连接,以进行数据传输,则需要检测第一云服务从连接池中调用的处于空闲状态的连接对象的版本号与最新版本号是否相同,也即是,检测调用的目标连接对象与第二云服务之间的第一长连接是否完成了重新构建。
由于第一云服务会存储第二云服务的进程数量发生变化之前每个连接对象对应的版本号,当处于空闲状态的连接对象与第二云服务之间的长连接重新构建完成时,第一云服务会将存储的该连接对象对应的第二云服务的服务版本号更新为第一云服务接收到的最新的服务版本号。因此,当从连接池中调用目标连接对象时,判断该目标连接对象存储的服务版本号与最新的服务版本号是否相同,当调用的目标连接对象存储的服务版本号与最新的服务版本号相同时,说明该目标连接对象与第二云服务之间的第一长连接已经重新构建完成,可以成功调用此目标连接对象。当调用的目标连接对象存储的服务版本号与最新的服务版本号不相同时,说明该目标连接对象与第二云服务之间的第一长连接还没有重新构建,需要重新构建调用的目标连接对象与第二云服务包括的进程之间的第一长连接。
例如,第二云服务包括进程1、进程2、进程3,第一云服务的连接池中共存储了600个连接对象,其中有100个活跃状态的连接对象,500个空闲状态的连接对象,且假设600个连接对象的版本号均为1.0。当第一云服务接收到监控服务发送的服务变化消息后,其中服务变化消息中携带的最新版本号为1.1,将连接池中处于空闲状态的连接对象与第二云服务包括的进程之间的长连接全部断开并重新建立,此时第一云服务需要调用连接池中处于空闲状态的连接对象来建立第一云服务包括的进程与第二云服务包括的进程之间的长连接,也即是,此时第一云服务需要从连接池中调用处于空闲状态的连接对象。
假设此时只有100个处于空闲状态的连接对象已经与第二云服务包括的进程重新建立了长连接,且将服务版本号更新为1.1,还有剩余400个处于空闲状态的连接对象没有与第二云服务包括的进程重新建立长连接,服务版本号依旧为1.0。当第一云服务从连接池中调用目标连接对象时,需要判断该连接对象中存储的版本号与最新的版本号是否一致。
假设第一云服务调用到的目标连接对象为没有与第二云服务包括的进程重新建立第一长连接的400个空闲状态的连接对象中的一个,此时该连接对象中存储的服务版本号为1.0与最新的服务版本号1.1不相同,因此需要重新构建获取的目标连接对象与第二云服务包括的进程之间的第一长连接。假设第一云服务调用到的目标连接对象为已经与第二云服务包括的进程重新建立第一长连接的100个空闲状态的连接对象中的一个,此时该连接对象中存储的服务版本号为1.1与最新的服务版本号1.1相同,此时成功调用该连接对象。
步骤206:在目标连接对象与第二云服务之间的第一长连接重构成功时,重构第一云服务与目标连接对象之间的第二长连接。
目标连接对象与第二云服务之间的长连接重构成功时,说明该目标连接对象已经和第二云服务之间建立了第一长连接,然后在第一云服务与该目标连接对象之间建立第二长连接,即将该目标连接对象与第一云服务相连接,从而通过该目标连接对象可以建立第一云服务与第二云服务之间的长连接,以在第一云服务和第二云服务之间进行数据传输。
在本发明实施例中,当第一云服务需要与第二云服务建立长连接时,可以从连接池中调用处于空闲状态的连接对象,还可以判断调用的目标连接对象中存储的服务版本号与最新的服务版本号是否一致。这样,第一云服务可以在获取目标连接对象时及时检测到该目标连接对象与第二云服务之间的第一长连接是否建立完成,避免了从连接池中调用到的目标连接对象与第二云服务之间的第一长连接为失效长连接的情况,节省了资源,提高了响应速度。
本发明实施例在第一云服务调用第二云服务的过程中,第一云服务可以通过其与监控服务之间的长连接接收监控服务发送的服务变化消息,其中服务变化消息是监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的,也即是,第一云服务与监控服务之间的长连接,以及与第二云服务之间的长连接相互独立,可以单独监控第二云服务的进程数量,避免与第二云服务和第一云服务之间的长连接发生数据传输冲突,当第二云服务的进程数量发生变化时,监控服务以长连接方式将服务变化消息推送给第一云服务,这样,第一云服务也可以及时感知到第二云服务的进程数量发生了变化,响应速度快。之后,可以在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接,也即是,当第一云服务与第二云服务之间当前使用的长连接失效时,才会针对该失效长连接重构有效长连接,同时并不处理正常使用的长连接,不会错误的中断用户正常使用的长连接,让用户感知不到第二云服务的进程数量发生的变化,给用户带来更好的使用体验。
通过上述图2A提供的实施例对本发明实施例提供的方法进行详细解释说明之后,接下来对本发明实施例提供的装置进行介绍。
图3A是本发明实施例提供的一种在云服务动态伸缩时管理云服务的装置结构示意图。该装置配置于第一云服务,参见图3A,该装置包括接收模块301、第一构建模块302。
接收模块301,用于在第一云服务调用第二云服务的过程中,通过其与监控服务之间的长连接接收服务变化消息。
其中,服务变化消息为监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的。
第一构建模块302,用于当接收到服务变化消息时,在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对失效长连接构建有效长连接。
可选地,参见图3B,第一构建模块302包括:
第一确定子模块3021,用于从第一云服务的连接池中确定处于活跃状态的连接对象,活跃状态的连接对象用于构建当前使用的长连接。
拦截子模块3022,用于当当前使用的长连接中存在失效长连接时,拦截该失效长连接。
可选地,参见图3C,该装置还包括:
第一确定模块303,用于从第一云服务的连接池中确定处于空闲状态的连接对象,空闲状态的连接对象用于与第二云服务之间构建长连接。
第二构建模块304,用于通过处于空闲状态的连接对象将当前未使用的长连接构建为有效长连接。
可选地,参见图3D,服务变化消息中携带伸缩指示信息,伸缩指示信息用于指示第二云服务的进程数量减少或增加;
该装置还包括:
第二确定模块305,用于从第一云服务的连接池中确定处于空闲状态的连接对象。
第一重构模块306,用于根据伸缩指示信息,通过空闲状态的连接对象在第一云服务和第二云服务之间重构当前未使用的长连接。
可选地,参见图3E,该第一重构模块306包括:
第一重构子模块3061,用于当伸缩指示信息指示第二云服务的进程数量增加时,重构当前未使用的长连接中的有效长连接和失效长连接。
第二重构子模块3062,用于当伸缩指示信息指示第二云服务的进程数量减少时,重构当前未使用的长连接中的失效长连接。
可选地,参见图3F,服务变化消息中还携带第二云服务的最新版本号;
该装置还包括:
调用模块307,用于从连接池中调用处于空闲状态的连接对象且将其设置为处于活跃状态的目标连接对象。
第二重构模块308,用于当目标连接对象的版本号与最新版本号不同时,重构目标连接对象与第二云服务之间的第一长连接。
第三重构模块309,用于在第一长连接重构成功时,重构第一云服务与目标连接对象之间的第二长连接。
本发明实施例在第一云服务调用第二云服务的过程中,第一云服务可以通过其与监控服务之间的长连接接收监控服务发送的服务变化消息,其中服务变化消息是监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的,也即是,第一云服务与监控服务之间的长连接,以及与第二云服务之间的长连接相互独立,可以单独监控第二云服务的进程数量,避免与第二云服务和第一云服务之间的长连接发生数据传输冲突,当第二云服务的进程数量发生变化时,监控服务以长连接方式将服务变化消息推送给第一云服务,这样,第一云服务也可以及时感知到第二云服务的进程数量发生了变化,响应速度快。之后,可以在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接,也即是,当第一云服务与第二云服务之间当前使用的长连接失效时,才会针对该失效长连接重构有效长连接,同时并不处理正常使用的长连接,不会错误的中断用户正常使用的长连接,让用户感知不到第二云服务的进程数量发生的变化,给用户带来更好的使用体验。
图4A是本发明实施例提供的一种在云服务动态伸缩时管理云服务的装置结构示意图。该装置配置于监控服务,参见图4A,该装置包括监控模块401、发送模块402。
监控模块401,用于在第一云服务调用第二云服务的过程中,对第二云服务的进程数量进行监控。
发送模块402,用于当确定第二云服务的进程数量发生变化时,通过监控服务与第一云服务之间建立的长连接向第一云服务发送服务变化消息。
其中,服务变化信息用于指示第一云服务在接收到服务变化消息时,在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对失效长连接构建有效长连接。
可选地,参见图4B,该装置还包括:
更新模块403,用于对第二云服务的版本号更新得到最新版本号,以及将最新版本号加入服务变化消息中。
可选地,参见图4C,该装置还包括:
接收模块404,用于接收由第一云服务发送的监控请求,监控请求中携带第二云服务的标识。
分配模块405,用于基于第二云服务的标识为第二云服务分配初始版本号。
本发明实施例在第一云服务调用第二云服务的过程中,第一云服务可以通过其与监控服务之间的长连接接收监控服务发送的服务变化消息,其中服务变化消息是监控服务监控到第二云服务的进程数量发生变化时向第一云服务发送的,也即是,第一云服务与监控服务之间的长连接,以及与第二云服务之间的长连接相互独立,可以单独监控第二云服务的进程数量,避免与第二云服务和第一云服务之间的长连接发生数据传输冲突,当第二云服务的进程数量发生变化时,监控服务以长连接方式将服务变化消息推送给第一云服务,这样,第一云服务也可以及时感知到第二云服务的进程数量发生了变化,响应速度快。之后,可以在第一云服务与第二云服务之间当前使用的长连接中筛选出失效长连接,并针对该失效长连接构建有效长连接,也即是,当第一云服务与第二云服务之间当前使用的长连接失效时,才会针对该失效长连接重构有效长连接,同时并不处理正常使用的长连接,不会错误的中断用户正常使用的长连接,让用户感知不到第二云服务的进程数量发生的变化,给用户带来更好的使用体验。
需要说明的是:上述实施例提供的在云服务动态伸缩时管理云服务的装置在管理云服务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的在云服务动态伸缩时管理云服务的装置与在云服务动态伸缩时管理云服务的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
也即是,该计算机可读存储介质中的指令由装置的处理器执行时,可以实现上述图1或图2A提供实施例的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种在云服务动态伸缩时管理云服务的方法,其特征在于,所述方法包括:
在第一云服务调用第二云服务的过程中,所述第一云服务通过其与监控服务之间的长连接接收服务变化消息;
其中,所述服务变化消息为所述监控服务监控到所述第二云服务的进程数量发生变化时向所述第一云服务发送的;
当接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接重新构建新的有效长连接。
2.如权利要求1所述的方法,其特征在于,所述从所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,包括:
从所述第一云服务的连接池中确定处于活跃状态的连接对象,所述活跃状态的连接对象用于构建所述当前使用的长连接;
当通过所述活跃状态的连接对象构建的长连接中存在所述失效长连接时,拦截所述失效长连接。
3.如权利要求1或2所述的方法,其特征在于,所述第一云服务通过其与监控服务之间建立的长连接接收服务变化消息之后,还包括:
从所述第一云服务的连接池中确定处于空闲状态的连接对象,所述空闲状态的连接对象用于其与所述第二云服务之间构建当前未使用的长连接;
通过所述处于空闲状态的连接对象将所述当前未使用的长连接构建为所述有效长连接。
4.如权利要求1或2所述的方法,其特征在于,所述服务变化消息中携带伸缩指示信息,所述伸缩指示信息用于指示所述第二云服务的进程数量减少或增加;
所述第一云服务通过其与监控服务之间建立的长连接接收服务变化消息之后,还包括:
从所述第一云服务的连接池中确定处于空闲状态的连接对象;
根据所述伸缩指示信息,通过所述处于空闲状态的连接对象在所述第一云服务和第二云服务之间重构当前未使用的长连接。
5.如权利要求4所述的方法,其特征在于,所述根据所述伸缩指示信息,通过所述空闲状态的连接对象在所述第一云服务和第二云服务之间重构当前未使用的长连接,包括:
当所述伸缩指示信息指示所述第二云服务的进程数量增加时,重构所述当前未使用的长连接中的有效长连接和失效长连接;
当所述伸缩指示信息指示所述第二云服务的进程数量减少时,重构所述当前未使用的长连接中的失效长连接。
6.如权利要求3所述的方法,其特征在于,所述服务变化消息中还携带所述第二云服务的最新版本号;
所述通过所述处于空闲状态的连接对象将所述当前未使用的长连接构建为所述有效长连接之后,还包括:
从所述连接池中调用所述处于空闲状态的连接对象且将其设置为处于活跃状态的目标连接对象;
当所述目标连接对象的版本号与所述最新版本号不同时,重构所述目标连接对象与所述第二云服务之间的第一长连接;
在所述第一长连接重构成功时,重构所述第一云服务与所述目标连接对象之间的第二长连接。
7.一种在云服务动态伸缩时管理云服务的方法,其特征在于,所述方法包括:
在第一云服务调用第二云服务的过程中,监控服务对所述第二云服务的进程数量进行监控;
当所述监控服务确定所述第二云服务的进程数量发生变化时,通过其与所述第一云服务之间建立的长连接向所述第一云服务发送服务变化消息;
其中,所述服务变化信息用于指示所述第一云服务在接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接重新构建新的有效长连接。
8.如权利要求7所述的方法,其特征在于,所述当所述监控服务确定所述第二云服务的进程数量发生变化之后,还包括:
所述监控服务对所述第二云服务的版本号更新得到最新版本号,以及将所述最新版本号加入所述服务变化消息中。
9.如权利要求7或8所述的方法,其特征在于,所述在第一云服务调用第二云服务之前,还包括:
所述监控服务接收由所述第一云服务发送的监控请求,所述监控请求中携带所述第二云服务的标识;
所述监控服务基于所述第二云服务的标识为所述第二云服务分配初始版本号。
10.一种在云服务动态伸缩时管理云服务的装置,配置于第一云服务,其特征在于,所述装置包括:
接收模块,用于在第一云服务调用第二云服务的过程中,通过所述第一云服务与监控服务之间的长连接接收服务变化消息;
其中,所述服务变化消息为所述监控服务监控到所述第二云服务的进程数量发生变化时向所述第一云服务发送的;
第一构建模块,用于当接收到所述服务变化消息时,在所述第一云服务与所述第二云服务之间当前使用的长连接中筛选出失效长连接,并针对所述失效长连接重新构建新的有效长连接。
CN201711124474.7A 2017-11-14 2017-11-14 一种在云服务动态伸缩时管理云服务的方法及装置 Active CN107819858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711124474.7A CN107819858B (zh) 2017-11-14 2017-11-14 一种在云服务动态伸缩时管理云服务的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711124474.7A CN107819858B (zh) 2017-11-14 2017-11-14 一种在云服务动态伸缩时管理云服务的方法及装置

Publications (2)

Publication Number Publication Date
CN107819858A CN107819858A (zh) 2018-03-20
CN107819858B true CN107819858B (zh) 2020-11-03

Family

ID=61609161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711124474.7A Active CN107819858B (zh) 2017-11-14 2017-11-14 一种在云服务动态伸缩时管理云服务的方法及装置

Country Status (1)

Country Link
CN (1) CN107819858B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113242149B (zh) * 2021-05-21 2024-02-02 中国农业银行股份有限公司 长连接配置方法、装置、设备、存储介质和程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799751A (zh) * 2009-12-02 2010-08-11 山东浪潮齐鲁软件产业股份有限公司 一种构建主机监控代理软件的方法
CN102137032A (zh) * 2011-03-24 2011-07-27 上海云高软件科技有限公司 一种云消息系统及云消息发送和接收方法
CN103283209A (zh) * 2011-04-18 2013-09-04 北京新媒传信科技有限公司 一种应用服务平台系统及其实现方法
CN104539689A (zh) * 2014-12-23 2015-04-22 西安电子科技大学 一种云平台下的资源监控方法
CN105677451A (zh) * 2014-11-18 2016-06-15 北京风行在线技术有限公司 一种用于多进程的负载均衡的方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788700B1 (en) * 2002-05-15 2010-08-31 Gerard A. Gagliano Enterprise security system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799751A (zh) * 2009-12-02 2010-08-11 山东浪潮齐鲁软件产业股份有限公司 一种构建主机监控代理软件的方法
CN102137032A (zh) * 2011-03-24 2011-07-27 上海云高软件科技有限公司 一种云消息系统及云消息发送和接收方法
CN103283209A (zh) * 2011-04-18 2013-09-04 北京新媒传信科技有限公司 一种应用服务平台系统及其实现方法
CN105677451A (zh) * 2014-11-18 2016-06-15 北京风行在线技术有限公司 一种用于多进程的负载均衡的方法和设备
CN104539689A (zh) * 2014-12-23 2015-04-22 西安电子科技大学 一种云平台下的资源监控方法

Also Published As

Publication number Publication date
CN107819858A (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
CN111615066B (zh) 一种基于广播的分布式微服务注册及调用方法
US10313452B2 (en) Migrating a chat message service provided by a chat server to a new chat server
CN103581276B (zh) 集群管理装置、系统、业务客户端及相应方法
CN109783564A (zh) 支持多节点的分布式缓存方法及设备
CN109788027A (zh) 数据同步方法、装置、服务器及计算机存储介质
CN113742135B (zh) 数据备份方法、装置及计算机可读存储介质
US20130139178A1 (en) Cluster management system and method
US20110113131A1 (en) Method of Load Balance Based on BS Architecture
CN114364031B (zh) 服务提供方法、装置及存储介质
CN113726546B (zh) 配置方法、装置、系统、计算设备及存储介质
CN107819858B (zh) 一种在云服务动态伸缩时管理云服务的方法及装置
US20090100441A1 (en) Resource assignment system with recovery notification
CN111917870A (zh) 请求处理方法、系统、装置、电子设备及存储介质
CN110674172A (zh) 数据查询方法及装置
KR101251630B1 (ko) 푸쉬 서비스 제공 시스템 및 방법
CN111382132A (zh) 医学影像数据云存储系统
CN111104376B (zh) 资源文件查询方法及装置
CN111083182B (zh) 分布式物联网设备管理方法及装置
CN112799849A (zh) 一种数据处理方法、装置、设备及存储介质
CN109510864B (zh) 一种缓存请求的转发方法、传输方法及相关装置
CN111385323B (zh) Ejb业务处理方法、装置、设备及介质
CN116347467B (zh) 5g网络中udr进行用户数据管理方法及系统
CN114553704B (zh) 一种支持多设备同时接入服务器实现扩缩容的方法及系统
CN113746574B (zh) 一种信息交互方法、系统及设备
CN114745281B (zh) 一种数据处理的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20180426

Address after: 266061 No. 399 Songling Road, Laoshan District, Qingdao, Shandong (A6 3rd floor)

Applicant after: Qingdao poly cloud Technology Co., Ltd.

Address before: 266061 Songling Road, Laoshan District, Qingdao, Shandong Province, No. 399

Applicant before: Poly Polytron Technologies Inc

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant